{"id":"8b42452c9f636b155c642e271724d2f3","_format":"hh-sol-build-info-1","solcVersion":"0.8.20","solcLongVersion":"0.8.20+commit.a1b79de6","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"../utils/introspection/ERC165Upgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n *     require(hasRole(MY_ROLE, msg.sender));\n *     ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {\n    struct RoleData {\n        mapping(address account => bool) hasRole;\n        bytes32 adminRole;\n    }\n\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n\n    /// @custom:storage-location erc7201:openzeppelin.storage.AccessControl\n    struct AccessControlStorage {\n        mapping(bytes32 role => RoleData) _roles;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControl\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;\n\n    function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {\n        assembly {\n            $.slot := AccessControlStorageLocation\n        }\n    }\n\n    /**\n     * @dev Modifier that checks that an account has a specific role. Reverts\n     * with an {AccessControlUnauthorizedAccount} error including the required role.\n     */\n    modifier onlyRole(bytes32 role) {\n        _checkRole(role);\n        _;\n    }\n\n    function __AccessControl_init() internal onlyInitializing {\n    }\n\n    function __AccessControl_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        return $._roles[role].hasRole[account];\n    }\n\n    /**\n     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n     * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n     */\n    function _checkRole(bytes32 role) internal view virtual {\n        _checkRole(role, _msgSender());\n    }\n\n    /**\n     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n     * is missing `role`.\n     */\n    function _checkRole(bytes32 role, address account) internal view virtual {\n        if (!hasRole(role, account)) {\n            revert AccessControlUnauthorizedAccount(account, role);\n        }\n    }\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        return $._roles[role].adminRole;\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n        _grantRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n        _revokeRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been revoked `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `callerConfirmation`.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n        if (callerConfirmation != _msgSender()) {\n            revert AccessControlBadConfirmation();\n        }\n\n        _revokeRole(role, callerConfirmation);\n    }\n\n    /**\n     * @dev Sets `adminRole` as ``role``'s admin role.\n     *\n     * Emits a {RoleAdminChanged} event.\n     */\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        bytes32 previousAdminRole = getRoleAdmin(role);\n        $._roles[role].adminRole = adminRole;\n        emit RoleAdminChanged(role, previousAdminRole, adminRole);\n    }\n\n    /**\n     * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        if (!hasRole(role, account)) {\n            $._roles[role].hasRole[account] = true;\n            emit RoleGranted(role, account, _msgSender());\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        if (hasRole(role, account)) {\n            $._roles[role].hasRole[account] = false;\n            emit RoleRevoked(role, account, _msgSender());\n            return true;\n        } else {\n            return false;\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n *     function initialize() initializer public {\n *         __ERC20_init(\"MyToken\", \"MTK\");\n *     }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n *     function initializeV2() reinitializer(2) public {\n *         __ERC20Permit_init(\"MyToken\");\n *     }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n *     _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n    /**\n     * @dev Storage of the initializable contract.\n     *\n     * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n     * when using with upgradeable contracts.\n     *\n     * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n     */\n    struct InitializableStorage {\n        /**\n         * @dev Indicates that the contract has been initialized.\n         */\n        uint64 _initialized;\n        /**\n         * @dev Indicates that the contract is in the process of being initialized.\n         */\n        bool _initializing;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n    /**\n     * @dev The contract is already initialized.\n     */\n    error InvalidInitialization();\n\n    /**\n     * @dev The contract is not initializing.\n     */\n    error NotInitializing();\n\n    /**\n     * @dev Triggered when the contract has been initialized or reinitialized.\n     */\n    event Initialized(uint64 version);\n\n    /**\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n     * `onlyInitializing` functions can be used to initialize parent contracts.\n     *\n     * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n     * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n     * production.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier initializer() {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        // Cache values to avoid duplicated sloads\n        bool isTopLevelCall = !$._initializing;\n        uint64 initialized = $._initialized;\n\n        // Allowed calls:\n        // - initialSetup: the contract is not in the initializing state and no previous version was\n        //                 initialized\n        // - construction: the contract is initialized at version 1 (no reininitialization) and the\n        //                 current contract is just being deployed\n        bool initialSetup = initialized == 0 && isTopLevelCall;\n        bool construction = initialized == 1 && address(this).code.length == 0;\n\n        if (!initialSetup && !construction) {\n            revert InvalidInitialization();\n        }\n        $._initialized = 1;\n        if (isTopLevelCall) {\n            $._initializing = true;\n        }\n        _;\n        if (isTopLevelCall) {\n            $._initializing = false;\n            emit Initialized(1);\n        }\n    }\n\n    /**\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n     * used to initialize parent contracts.\n     *\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n     * are added through upgrades and that require initialization.\n     *\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\n     *\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n     * a contract, executing them in the right order is up to the developer or operator.\n     *\n     * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier reinitializer(uint64 version) {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        if ($._initializing || $._initialized >= version) {\n            revert InvalidInitialization();\n        }\n        $._initialized = version;\n        $._initializing = true;\n        _;\n        $._initializing = false;\n        emit Initialized(version);\n    }\n\n    /**\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\n     */\n    modifier onlyInitializing() {\n        _checkInitializing();\n        _;\n    }\n\n    /**\n     * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n     */\n    function _checkInitializing() internal view virtual {\n        if (!_isInitializing()) {\n            revert NotInitializing();\n        }\n    }\n\n    /**\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n     * through proxies.\n     *\n     * Emits an {Initialized} event the first time it is successfully executed.\n     */\n    function _disableInitializers() internal virtual {\n        // solhint-disable-next-line var-name-mixedcase\n        InitializableStorage storage $ = _getInitializableStorage();\n\n        if ($._initializing) {\n            revert InvalidInitialization();\n        }\n        if ($._initialized != type(uint64).max) {\n            $._initialized = type(uint64).max;\n            emit Initialized(type(uint64).max);\n        }\n    }\n\n    /**\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\n     */\n    function _getInitializedVersion() internal view returns (uint64) {\n        return _getInitializableStorage()._initialized;\n    }\n\n    /**\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n     */\n    function _isInitializing() internal view returns (bool) {\n        return _getInitializableStorage()._initializing;\n    }\n\n    /**\n     * @dev Returns a pointer to the storage namespace.\n     */\n    // solhint-disable-next-line var-name-mixedcase\n    function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n        assembly {\n            $.slot := INITIALIZABLE_STORAGE\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n    /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n    address private immutable __self = address(this);\n\n    /**\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n     * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n     * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n     * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n     * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n     * during an upgrade.\n     */\n    string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n    /**\n     * @dev The call is from an unauthorized context.\n     */\n    error UUPSUnauthorizedCallContext();\n\n    /**\n     * @dev The storage `slot` is unsupported as a UUID.\n     */\n    error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n    /**\n     * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n     * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n     * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n     * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n     * fail.\n     */\n    modifier onlyProxy() {\n        _checkProxy();\n        _;\n    }\n\n    /**\n     * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n     * callable on the implementing contract but not through proxies.\n     */\n    modifier notDelegated() {\n        _checkNotDelegated();\n        _;\n    }\n\n    function __UUPSUpgradeable_init() internal onlyInitializing {\n    }\n\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n     * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n     */\n    function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n        return ERC1967Utils.IMPLEMENTATION_SLOT;\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n     * encoded in `data`.\n     *\n     * Calls {_authorizeUpgrade}.\n     *\n     * Emits an {Upgraded} event.\n     *\n     * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n     */\n    function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n        _authorizeUpgrade(newImplementation);\n        _upgradeToAndCallUUPS(newImplementation, data);\n    }\n\n    /**\n     * @dev Reverts if the execution is not performed via delegatecall or the execution\n     * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n     * See {_onlyProxy}.\n     */\n    function _checkProxy() internal view virtual {\n        if (\n            address(this) == __self || // Must be called through delegatecall\n            ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n        ) {\n            revert UUPSUnauthorizedCallContext();\n        }\n    }\n\n    /**\n     * @dev Reverts if the execution is performed via delegatecall.\n     * See {notDelegated}.\n     */\n    function _checkNotDelegated() internal view virtual {\n        if (address(this) != __self) {\n            // Must not be called through delegatecall\n            revert UUPSUnauthorizedCallContext();\n        }\n    }\n\n    /**\n     * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n     * {upgradeToAndCall}.\n     *\n     * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n     *\n     * ```solidity\n     * function _authorizeUpgrade(address) internal onlyOwner {}\n     * ```\n     */\n    function _authorizeUpgrade(address newImplementation) internal virtual;\n\n    /**\n     * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n     *\n     * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n     * is expected to be the implementation slot in ERC1967.\n     *\n     * Emits an {IERC1967-Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n        try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n            if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n                revert UUPSUnsupportedProxiableUUID(slot);\n            }\n            ERC1967Utils.upgradeToAndCall(newImplementation, data);\n        } catch {\n            // The implementation is not UUPS\n            revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n    function __Context_init() internal onlyInitializing {\n    }\n\n    function __Context_init_unchained() internal onlyInitializing {\n    }\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165 {\n    function __ERC165_init() internal onlyInitializing {\n    }\n\n    function __ERC165_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuardUpgradeable is Initializable {\n    // Booleans are more expensive than uint256 or any type that takes up a full\n    // word because each write operation emits an extra SLOAD to first read the\n    // slot's contents, replace the bits taken up by the boolean, and then write\n    // back. This is the compiler's defense against contract upgrades and\n    // pointer aliasing, and it cannot be disabled.\n\n    // The values being non-zero value makes deployment a bit more expensive,\n    // but in exchange the refund on every call to nonReentrant will be lower in\n    // amount. Since refunds are capped to a percentage of the total\n    // transaction's gas, it is best to keep them low in cases like this one, to\n    // increase the likelihood of the full refund coming into effect.\n    uint256 private constant NOT_ENTERED = 1;\n    uint256 private constant ENTERED = 2;\n\n    /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\n    struct ReentrancyGuardStorage {\n        uint256 _status;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ReentrancyGuard\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\n\n    function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\n        assembly {\n            $.slot := ReentrancyGuardStorageLocation\n        }\n    }\n\n    /**\n     * @dev Unauthorized reentrant call.\n     */\n    error ReentrancyGuardReentrantCall();\n\n    function __ReentrancyGuard_init() internal onlyInitializing {\n        __ReentrancyGuard_init_unchained();\n    }\n\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        $._status = NOT_ENTERED;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant`\n     * function is not supported. It is possible to prevent this from happening\n     * by making the `nonReentrant` function external, and making it call a\n     * `private` function that does the actual work.\n     */\n    modifier nonReentrant() {\n        _nonReentrantBefore();\n        _;\n        _nonReentrantAfter();\n    }\n\n    function _nonReentrantBefore() private {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\n        if ($._status == ENTERED) {\n            revert ReentrancyGuardReentrantCall();\n        }\n\n        // Any calls to nonReentrant after this point will fail\n        $._status = ENTERED;\n    }\n\n    function _nonReentrantAfter() private {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        $._status = NOT_ENTERED;\n    }\n\n    /**\n     * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n     * `nonReentrant` function in the call stack.\n     */\n    function _reentrancyGuardEntered() internal view returns (bool) {\n        ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n        return $._status == ENTERED;\n    }\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n    /**\n     * @dev The `account` is missing a role.\n     */\n    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n    /**\n     * @dev The caller of a function is not the expected one.\n     *\n     * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n     */\n    error AccessControlBadConfirmation();\n\n    /**\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n     *\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n     * {RoleAdminChanged} not being emitted signaling this.\n     */\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n    /**\n     * @dev Emitted when `account` is granted `role`.\n     *\n     * `sender` is the account that originated the contract call, an admin role\n     * bearer except when using {AccessControl-_setupRole}.\n     */\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Emitted when `account` is revoked `role`.\n     *\n     * `sender` is the account that originated the contract call:\n     *   - if using `revokeRole`, it is the admin role bearer\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\n     */\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) external view returns (bool);\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function grantRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function revokeRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `callerConfirmation`.\n     */\n    function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n"},"@openzeppelin/contracts/interfaces/IERC6372.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC6372.sol)\n\npragma solidity ^0.8.20;\n\ninterface IERC6372 {\n    /**\n     * @dev Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting).\n     */\n    function clock() external view returns (uint48);\n\n    /**\n     * @dev Description of the clock\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function CLOCK_MODE() external view returns (string memory);\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n    /**\n     * @dev Must return an address that can be used as a delegate call target.\n     *\n     * {UpgradeableBeacon} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n */\nlibrary ERC1967Utils {\n    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\n    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\n    /**\n     * @dev Emitted when the implementation is upgraded.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Emitted when the admin account has changed.\n     */\n    event AdminChanged(address previousAdmin, address newAdmin);\n\n    /**\n     * @dev Emitted when the beacon is changed.\n     */\n    event BeaconUpgraded(address indexed beacon);\n\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev The `implementation` of the proxy is invalid.\n     */\n    error ERC1967InvalidImplementation(address implementation);\n\n    /**\n     * @dev The `admin` of the proxy is invalid.\n     */\n    error ERC1967InvalidAdmin(address admin);\n\n    /**\n     * @dev The `beacon` of the proxy is invalid.\n     */\n    error ERC1967InvalidBeacon(address beacon);\n\n    /**\n     * @dev An upgrade function sees `msg.value > 0` that may be lost.\n     */\n    error ERC1967NonPayable();\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function getImplementation() internal view returns (address) {\n        return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        if (newImplementation.code.length == 0) {\n            revert ERC1967InvalidImplementation(newImplementation);\n        }\n        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n     * to avoid stuck value in the contract.\n     *\n     * Emits an {IERC1967-Upgraded} event.\n     */\n    function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n\n        if (data.length > 0) {\n            Address.functionDelegateCall(newImplementation, data);\n        } else {\n            _checkNonPayable();\n        }\n    }\n\n    /**\n     * @dev Storage slot with the admin of the contract.\n     * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n     */\n    function getAdmin() internal view returns (address) {\n        return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        if (newAdmin == address(0)) {\n            revert ERC1967InvalidAdmin(address(0));\n        }\n        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {IERC1967-AdminChanged} event.\n     */\n    function changeAdmin(address newAdmin) internal {\n        emit AdminChanged(getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n     */\n    // solhint-disable-next-line private-vars-leading-underscore\n    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function getBeacon() internal view returns (address) {\n        return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        if (newBeacon.code.length == 0) {\n            revert ERC1967InvalidBeacon(newBeacon);\n        }\n\n        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n        address beaconImplementation = IBeacon(newBeacon).implementation();\n        if (beaconImplementation.code.length == 0) {\n            revert ERC1967InvalidImplementation(beaconImplementation);\n        }\n    }\n\n    /**\n     * @dev Change the beacon and trigger a setup call if data is nonempty.\n     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n     * to avoid stuck value in the contract.\n     *\n     * Emits an {IERC1967-BeaconUpgraded} event.\n     *\n     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n     * efficiency.\n     */\n    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n        _setBeacon(newBeacon);\n        emit BeaconUpgraded(newBeacon);\n\n        if (data.length > 0) {\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n        } else {\n            _checkNonPayable();\n        }\n    }\n\n    /**\n     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n     * if an upgrade doesn't perform an initialization call.\n     */\n    function _checkNonPayable() private {\n        if (msg.value > 0) {\n            revert ERC1967NonPayable();\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Enumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n    /**\n     * @dev Returns the total amount of tokens stored by the contract.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n     */\n    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n    /**\n     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n     * Use along with {totalSupply} to enumerate all tokens.\n     */\n    function tokenByIndex(uint256 index) external view returns (uint256);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n    /**\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n     */\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n     */\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /**\n     * @dev Returns the number of tokens in ``owner``'s account.\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * @dev Returns the owner of the `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n     *   a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n     *   {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n     *   a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n     * The approval is cleared when the token is transferred.\n     *\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n     *\n     * Requirements:\n     *\n     * - The caller must own the token or be an approved operator.\n     * - `tokenId` must exist.\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the address zero.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * @dev Returns the account approved for `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n     *\n     * See {setApprovalForAll}\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev The ETH balance of the account is not enough to perform the operation.\n     */\n    error AddressInsufficientBalance(address account);\n\n    /**\n     * @dev There's no code at `target` (it is not a contract).\n     */\n    error AddressEmptyCode(address target);\n\n    /**\n     * @dev A call to an address target failed. The target may have reverted.\n     */\n    error FailedInnerCall();\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        if (address(this).balance < amount) {\n            revert AddressInsufficientBalance(address(this));\n        }\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        if (!success) {\n            revert FailedInnerCall();\n        }\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason or custom error, it is bubbled\n     * up by this function (like regular Solidity function calls). However, if\n     * the call reverted with no returned reason, this function reverts with a\n     * {FailedInnerCall} error.\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        if (address(this).balance < value) {\n            revert AddressInsufficientBalance(address(this));\n        }\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n     * unsuccessful call.\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata\n    ) internal view returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            // only check if target is a contract if the call was successful and the return data is empty\n            // otherwise we already know that it was a contract\n            if (returndata.length == 0 && target.code.length == 0) {\n                revert AddressEmptyCode(target);\n            }\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n     * revert reason or with a default {FailedInnerCall} error.\n     */\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n     */\n    function _revert(bytes memory returndata) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert FailedInnerCall();\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    /**\n     * @dev Muldiv operation overflow.\n     */\n    error MathOverflowedMulDiv();\n\n    enum Rounding {\n        Floor, // Toward negative infinity\n        Ceil, // Toward positive infinity\n        Trunc, // Toward zero\n        Expand // Away from zero\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            uint256 c = a + b;\n            if (c < a) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b > a) return (false, 0);\n            return (true, a - b);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n            // benefit is lost if 'b' is also tested.\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n            if (a == 0) return (true, 0);\n            uint256 c = a * b;\n            if (c / a != b) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a / b);\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a % b);\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a > b ? a : b;\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a < b ? a : b;\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds towards infinity instead\n     * of rounding towards zero.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        if (b == 0) {\n            // Guarantee the same behavior as in a regular Solidity division.\n            return a / b;\n        }\n\n        // (a + b - 1) / b can overflow on addition, so we distribute.\n        return a == 0 ? 0 : (a - 1) / b + 1;\n    }\n\n    /**\n     * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n     * denominator == 0.\n     * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n     * Uniswap Labs also under MIT license.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n        unchecked {\n            // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n            // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n            // variables such that product = prod1 * 2^256 + prod0.\n            uint256 prod0 = x * y; // Least significant 256 bits of the product\n            uint256 prod1; // Most significant 256 bits of the product\n            assembly {\n                let mm := mulmod(x, y, not(0))\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n            }\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (prod1 == 0) {\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n                // The surrounding unchecked block does not change this fact.\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n                return prod0 / denominator;\n            }\n\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\n            if (denominator <= prod1) {\n                revert MathOverflowedMulDiv();\n            }\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [prod1 prod0].\n            uint256 remainder;\n            assembly {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                prod1 := sub(prod1, gt(remainder, prod0))\n                prod0 := sub(prod0, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n            uint256 twos = denominator & (0 - denominator);\n            assembly {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [prod1 prod0] by twos.\n                prod0 := div(prod0, twos)\n\n                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from prod1 into prod0.\n            prod0 |= prod1 * twos;\n\n            // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n            // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv = 1 mod 2^4.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n            // works in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2^8\n            inverse *= 2 - denominator * inverse; // inverse mod 2^16\n            inverse *= 2 - denominator * inverse; // inverse mod 2^32\n            inverse *= 2 - denominator * inverse; // inverse mod 2^64\n            inverse *= 2 - denominator * inverse; // inverse mod 2^128\n            inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n            // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n            // is no longer required.\n            result = prod0 * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n        uint256 result = mulDiv(x, y, denominator);\n        if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {\n            result += 1;\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n     * towards zero.\n     *\n     * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n     */\n    function sqrt(uint256 a) internal pure returns (uint256) {\n        if (a == 0) {\n            return 0;\n        }\n\n        // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n        //\n        // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n        // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n        //\n        // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n        // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n        // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n        //\n        // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n        uint256 result = 1 << (log2(a) >> 1);\n\n        // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n        // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n        // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n        // into the expected uint128 result.\n        unchecked {\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            return min(result, a / result);\n        }\n    }\n\n    /**\n     * @notice Calculates sqrt(a), following the selected rounding direction.\n     */\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = sqrt(a);\n            return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >> 128 > 0) {\n                value >>= 128;\n                result += 128;\n            }\n            if (value >> 64 > 0) {\n                value >>= 64;\n                result += 64;\n            }\n            if (value >> 32 > 0) {\n                value >>= 32;\n                result += 32;\n            }\n            if (value >> 16 > 0) {\n                value >>= 16;\n                result += 16;\n            }\n            if (value >> 8 > 0) {\n                value >>= 8;\n                result += 8;\n            }\n            if (value >> 4 > 0) {\n                value >>= 4;\n                result += 4;\n            }\n            if (value >> 2 > 0) {\n                value >>= 2;\n                result += 2;\n            }\n            if (value >> 1 > 0) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log2(value);\n            return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >= 10 ** 64) {\n                value /= 10 ** 64;\n                result += 64;\n            }\n            if (value >= 10 ** 32) {\n                value /= 10 ** 32;\n                result += 32;\n            }\n            if (value >= 10 ** 16) {\n                value /= 10 ** 16;\n                result += 16;\n            }\n            if (value >= 10 ** 8) {\n                value /= 10 ** 8;\n                result += 8;\n            }\n            if (value >= 10 ** 4) {\n                value /= 10 ** 4;\n                result += 4;\n            }\n            if (value >= 10 ** 2) {\n                value /= 10 ** 2;\n                result += 2;\n            }\n            if (value >= 10 ** 1) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log10(value);\n            return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     *\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n     */\n    function log256(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >> 128 > 0) {\n                value >>= 128;\n                result += 16;\n            }\n            if (value >> 64 > 0) {\n                value >>= 64;\n                result += 8;\n            }\n            if (value >> 32 > 0) {\n                value >>= 32;\n                result += 4;\n            }\n            if (value >> 16 > 0) {\n                value >>= 16;\n                result += 2;\n            }\n            if (value >> 8 > 0) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log256(value);\n            return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);\n        }\n    }\n\n    /**\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n     */\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n        return uint8(rounding) % 2 == 1;\n    }\n}\n"},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n    /**\n     * @dev Value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n    /**\n     * @dev An int value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedIntToUint(int256 value);\n\n    /**\n     * @dev Value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n    /**\n     * @dev An uint value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedUintToInt(uint256 value);\n\n    /**\n     * @dev Returns the downcasted uint248 from uint256, reverting on\n     * overflow (when the input is greater than largest uint248).\n     *\n     * Counterpart to Solidity's `uint248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toUint248(uint256 value) internal pure returns (uint248) {\n        if (value > type(uint248).max) {\n            revert SafeCastOverflowedUintDowncast(248, value);\n        }\n        return uint248(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint240 from uint256, reverting on\n     * overflow (when the input is greater than largest uint240).\n     *\n     * Counterpart to Solidity's `uint240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toUint240(uint256 value) internal pure returns (uint240) {\n        if (value > type(uint240).max) {\n            revert SafeCastOverflowedUintDowncast(240, value);\n        }\n        return uint240(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint232 from uint256, reverting on\n     * overflow (when the input is greater than largest uint232).\n     *\n     * Counterpart to Solidity's `uint232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toUint232(uint256 value) internal pure returns (uint232) {\n        if (value > type(uint232).max) {\n            revert SafeCastOverflowedUintDowncast(232, value);\n        }\n        return uint232(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint224 from uint256, reverting on\n     * overflow (when the input is greater than largest uint224).\n     *\n     * Counterpart to Solidity's `uint224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toUint224(uint256 value) internal pure returns (uint224) {\n        if (value > type(uint224).max) {\n            revert SafeCastOverflowedUintDowncast(224, value);\n        }\n        return uint224(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint216 from uint256, reverting on\n     * overflow (when the input is greater than largest uint216).\n     *\n     * Counterpart to Solidity's `uint216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toUint216(uint256 value) internal pure returns (uint216) {\n        if (value > type(uint216).max) {\n            revert SafeCastOverflowedUintDowncast(216, value);\n        }\n        return uint216(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint208 from uint256, reverting on\n     * overflow (when the input is greater than largest uint208).\n     *\n     * Counterpart to Solidity's `uint208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toUint208(uint256 value) internal pure returns (uint208) {\n        if (value > type(uint208).max) {\n            revert SafeCastOverflowedUintDowncast(208, value);\n        }\n        return uint208(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint200 from uint256, reverting on\n     * overflow (when the input is greater than largest uint200).\n     *\n     * Counterpart to Solidity's `uint200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toUint200(uint256 value) internal pure returns (uint200) {\n        if (value > type(uint200).max) {\n            revert SafeCastOverflowedUintDowncast(200, value);\n        }\n        return uint200(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint192 from uint256, reverting on\n     * overflow (when the input is greater than largest uint192).\n     *\n     * Counterpart to Solidity's `uint192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toUint192(uint256 value) internal pure returns (uint192) {\n        if (value > type(uint192).max) {\n            revert SafeCastOverflowedUintDowncast(192, value);\n        }\n        return uint192(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint184 from uint256, reverting on\n     * overflow (when the input is greater than largest uint184).\n     *\n     * Counterpart to Solidity's `uint184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toUint184(uint256 value) internal pure returns (uint184) {\n        if (value > type(uint184).max) {\n            revert SafeCastOverflowedUintDowncast(184, value);\n        }\n        return uint184(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint176 from uint256, reverting on\n     * overflow (when the input is greater than largest uint176).\n     *\n     * Counterpart to Solidity's `uint176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toUint176(uint256 value) internal pure returns (uint176) {\n        if (value > type(uint176).max) {\n            revert SafeCastOverflowedUintDowncast(176, value);\n        }\n        return uint176(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint168 from uint256, reverting on\n     * overflow (when the input is greater than largest uint168).\n     *\n     * Counterpart to Solidity's `uint168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toUint168(uint256 value) internal pure returns (uint168) {\n        if (value > type(uint168).max) {\n            revert SafeCastOverflowedUintDowncast(168, value);\n        }\n        return uint168(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint160 from uint256, reverting on\n     * overflow (when the input is greater than largest uint160).\n     *\n     * Counterpart to Solidity's `uint160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toUint160(uint256 value) internal pure returns (uint160) {\n        if (value > type(uint160).max) {\n            revert SafeCastOverflowedUintDowncast(160, value);\n        }\n        return uint160(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint152 from uint256, reverting on\n     * overflow (when the input is greater than largest uint152).\n     *\n     * Counterpart to Solidity's `uint152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toUint152(uint256 value) internal pure returns (uint152) {\n        if (value > type(uint152).max) {\n            revert SafeCastOverflowedUintDowncast(152, value);\n        }\n        return uint152(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint144 from uint256, reverting on\n     * overflow (when the input is greater than largest uint144).\n     *\n     * Counterpart to Solidity's `uint144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toUint144(uint256 value) internal pure returns (uint144) {\n        if (value > type(uint144).max) {\n            revert SafeCastOverflowedUintDowncast(144, value);\n        }\n        return uint144(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint136 from uint256, reverting on\n     * overflow (when the input is greater than largest uint136).\n     *\n     * Counterpart to Solidity's `uint136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toUint136(uint256 value) internal pure returns (uint136) {\n        if (value > type(uint136).max) {\n            revert SafeCastOverflowedUintDowncast(136, value);\n        }\n        return uint136(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint128 from uint256, reverting on\n     * overflow (when the input is greater than largest uint128).\n     *\n     * Counterpart to Solidity's `uint128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toUint128(uint256 value) internal pure returns (uint128) {\n        if (value > type(uint128).max) {\n            revert SafeCastOverflowedUintDowncast(128, value);\n        }\n        return uint128(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint120 from uint256, reverting on\n     * overflow (when the input is greater than largest uint120).\n     *\n     * Counterpart to Solidity's `uint120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toUint120(uint256 value) internal pure returns (uint120) {\n        if (value > type(uint120).max) {\n            revert SafeCastOverflowedUintDowncast(120, value);\n        }\n        return uint120(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint112 from uint256, reverting on\n     * overflow (when the input is greater than largest uint112).\n     *\n     * Counterpart to Solidity's `uint112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toUint112(uint256 value) internal pure returns (uint112) {\n        if (value > type(uint112).max) {\n            revert SafeCastOverflowedUintDowncast(112, value);\n        }\n        return uint112(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint104 from uint256, reverting on\n     * overflow (when the input is greater than largest uint104).\n     *\n     * Counterpart to Solidity's `uint104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toUint104(uint256 value) internal pure returns (uint104) {\n        if (value > type(uint104).max) {\n            revert SafeCastOverflowedUintDowncast(104, value);\n        }\n        return uint104(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint96 from uint256, reverting on\n     * overflow (when the input is greater than largest uint96).\n     *\n     * Counterpart to Solidity's `uint96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toUint96(uint256 value) internal pure returns (uint96) {\n        if (value > type(uint96).max) {\n            revert SafeCastOverflowedUintDowncast(96, value);\n        }\n        return uint96(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint88 from uint256, reverting on\n     * overflow (when the input is greater than largest uint88).\n     *\n     * Counterpart to Solidity's `uint88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toUint88(uint256 value) internal pure returns (uint88) {\n        if (value > type(uint88).max) {\n            revert SafeCastOverflowedUintDowncast(88, value);\n        }\n        return uint88(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint80 from uint256, reverting on\n     * overflow (when the input is greater than largest uint80).\n     *\n     * Counterpart to Solidity's `uint80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toUint80(uint256 value) internal pure returns (uint80) {\n        if (value > type(uint80).max) {\n            revert SafeCastOverflowedUintDowncast(80, value);\n        }\n        return uint80(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint72 from uint256, reverting on\n     * overflow (when the input is greater than largest uint72).\n     *\n     * Counterpart to Solidity's `uint72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toUint72(uint256 value) internal pure returns (uint72) {\n        if (value > type(uint72).max) {\n            revert SafeCastOverflowedUintDowncast(72, value);\n        }\n        return uint72(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint64 from uint256, reverting on\n     * overflow (when the input is greater than largest uint64).\n     *\n     * Counterpart to Solidity's `uint64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toUint64(uint256 value) internal pure returns (uint64) {\n        if (value > type(uint64).max) {\n            revert SafeCastOverflowedUintDowncast(64, value);\n        }\n        return uint64(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint56 from uint256, reverting on\n     * overflow (when the input is greater than largest uint56).\n     *\n     * Counterpart to Solidity's `uint56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toUint56(uint256 value) internal pure returns (uint56) {\n        if (value > type(uint56).max) {\n            revert SafeCastOverflowedUintDowncast(56, value);\n        }\n        return uint56(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint48 from uint256, reverting on\n     * overflow (when the input is greater than largest uint48).\n     *\n     * Counterpart to Solidity's `uint48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toUint48(uint256 value) internal pure returns (uint48) {\n        if (value > type(uint48).max) {\n            revert SafeCastOverflowedUintDowncast(48, value);\n        }\n        return uint48(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint40 from uint256, reverting on\n     * overflow (when the input is greater than largest uint40).\n     *\n     * Counterpart to Solidity's `uint40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toUint40(uint256 value) internal pure returns (uint40) {\n        if (value > type(uint40).max) {\n            revert SafeCastOverflowedUintDowncast(40, value);\n        }\n        return uint40(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint32 from uint256, reverting on\n     * overflow (when the input is greater than largest uint32).\n     *\n     * Counterpart to Solidity's `uint32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toUint32(uint256 value) internal pure returns (uint32) {\n        if (value > type(uint32).max) {\n            revert SafeCastOverflowedUintDowncast(32, value);\n        }\n        return uint32(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint24 from uint256, reverting on\n     * overflow (when the input is greater than largest uint24).\n     *\n     * Counterpart to Solidity's `uint24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toUint24(uint256 value) internal pure returns (uint24) {\n        if (value > type(uint24).max) {\n            revert SafeCastOverflowedUintDowncast(24, value);\n        }\n        return uint24(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint16 from uint256, reverting on\n     * overflow (when the input is greater than largest uint16).\n     *\n     * Counterpart to Solidity's `uint16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toUint16(uint256 value) internal pure returns (uint16) {\n        if (value > type(uint16).max) {\n            revert SafeCastOverflowedUintDowncast(16, value);\n        }\n        return uint16(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint8 from uint256, reverting on\n     * overflow (when the input is greater than largest uint8).\n     *\n     * Counterpart to Solidity's `uint8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toUint8(uint256 value) internal pure returns (uint8) {\n        if (value > type(uint8).max) {\n            revert SafeCastOverflowedUintDowncast(8, value);\n        }\n        return uint8(value);\n    }\n\n    /**\n     * @dev Converts a signed int256 into an unsigned uint256.\n     *\n     * Requirements:\n     *\n     * - input must be greater than or equal to 0.\n     */\n    function toUint256(int256 value) internal pure returns (uint256) {\n        if (value < 0) {\n            revert SafeCastOverflowedIntToUint(value);\n        }\n        return uint256(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int248 from int256, reverting on\n     * overflow (when the input is less than smallest int248 or\n     * greater than largest int248).\n     *\n     * Counterpart to Solidity's `int248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\n        downcasted = int248(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(248, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int240 from int256, reverting on\n     * overflow (when the input is less than smallest int240 or\n     * greater than largest int240).\n     *\n     * Counterpart to Solidity's `int240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\n        downcasted = int240(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(240, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int232 from int256, reverting on\n     * overflow (when the input is less than smallest int232 or\n     * greater than largest int232).\n     *\n     * Counterpart to Solidity's `int232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\n        downcasted = int232(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(232, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int224 from int256, reverting on\n     * overflow (when the input is less than smallest int224 or\n     * greater than largest int224).\n     *\n     * Counterpart to Solidity's `int224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\n        downcasted = int224(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(224, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int216 from int256, reverting on\n     * overflow (when the input is less than smallest int216 or\n     * greater than largest int216).\n     *\n     * Counterpart to Solidity's `int216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\n        downcasted = int216(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(216, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int208 from int256, reverting on\n     * overflow (when the input is less than smallest int208 or\n     * greater than largest int208).\n     *\n     * Counterpart to Solidity's `int208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\n        downcasted = int208(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(208, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int200 from int256, reverting on\n     * overflow (when the input is less than smallest int200 or\n     * greater than largest int200).\n     *\n     * Counterpart to Solidity's `int200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\n        downcasted = int200(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(200, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int192 from int256, reverting on\n     * overflow (when the input is less than smallest int192 or\n     * greater than largest int192).\n     *\n     * Counterpart to Solidity's `int192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\n        downcasted = int192(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(192, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int184 from int256, reverting on\n     * overflow (when the input is less than smallest int184 or\n     * greater than largest int184).\n     *\n     * Counterpart to Solidity's `int184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\n        downcasted = int184(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(184, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int176 from int256, reverting on\n     * overflow (when the input is less than smallest int176 or\n     * greater than largest int176).\n     *\n     * Counterpart to Solidity's `int176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\n        downcasted = int176(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(176, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int168 from int256, reverting on\n     * overflow (when the input is less than smallest int168 or\n     * greater than largest int168).\n     *\n     * Counterpart to Solidity's `int168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\n        downcasted = int168(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(168, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int160 from int256, reverting on\n     * overflow (when the input is less than smallest int160 or\n     * greater than largest int160).\n     *\n     * Counterpart to Solidity's `int160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\n        downcasted = int160(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(160, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int152 from int256, reverting on\n     * overflow (when the input is less than smallest int152 or\n     * greater than largest int152).\n     *\n     * Counterpart to Solidity's `int152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\n        downcasted = int152(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(152, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int144 from int256, reverting on\n     * overflow (when the input is less than smallest int144 or\n     * greater than largest int144).\n     *\n     * Counterpart to Solidity's `int144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\n        downcasted = int144(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(144, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int136 from int256, reverting on\n     * overflow (when the input is less than smallest int136 or\n     * greater than largest int136).\n     *\n     * Counterpart to Solidity's `int136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\n        downcasted = int136(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(136, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int128 from int256, reverting on\n     * overflow (when the input is less than smallest int128 or\n     * greater than largest int128).\n     *\n     * Counterpart to Solidity's `int128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\n        downcasted = int128(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(128, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int120 from int256, reverting on\n     * overflow (when the input is less than smallest int120 or\n     * greater than largest int120).\n     *\n     * Counterpart to Solidity's `int120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\n        downcasted = int120(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(120, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int112 from int256, reverting on\n     * overflow (when the input is less than smallest int112 or\n     * greater than largest int112).\n     *\n     * Counterpart to Solidity's `int112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\n        downcasted = int112(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(112, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int104 from int256, reverting on\n     * overflow (when the input is less than smallest int104 or\n     * greater than largest int104).\n     *\n     * Counterpart to Solidity's `int104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\n        downcasted = int104(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(104, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int96 from int256, reverting on\n     * overflow (when the input is less than smallest int96 or\n     * greater than largest int96).\n     *\n     * Counterpart to Solidity's `int96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\n        downcasted = int96(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(96, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int88 from int256, reverting on\n     * overflow (when the input is less than smallest int88 or\n     * greater than largest int88).\n     *\n     * Counterpart to Solidity's `int88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\n        downcasted = int88(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(88, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int80 from int256, reverting on\n     * overflow (when the input is less than smallest int80 or\n     * greater than largest int80).\n     *\n     * Counterpart to Solidity's `int80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\n        downcasted = int80(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(80, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int72 from int256, reverting on\n     * overflow (when the input is less than smallest int72 or\n     * greater than largest int72).\n     *\n     * Counterpart to Solidity's `int72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\n        downcasted = int72(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(72, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int64 from int256, reverting on\n     * overflow (when the input is less than smallest int64 or\n     * greater than largest int64).\n     *\n     * Counterpart to Solidity's `int64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\n        downcasted = int64(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(64, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int56 from int256, reverting on\n     * overflow (when the input is less than smallest int56 or\n     * greater than largest int56).\n     *\n     * Counterpart to Solidity's `int56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\n        downcasted = int56(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(56, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int48 from int256, reverting on\n     * overflow (when the input is less than smallest int48 or\n     * greater than largest int48).\n     *\n     * Counterpart to Solidity's `int48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\n        downcasted = int48(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(48, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int40 from int256, reverting on\n     * overflow (when the input is less than smallest int40 or\n     * greater than largest int40).\n     *\n     * Counterpart to Solidity's `int40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\n        downcasted = int40(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(40, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int32 from int256, reverting on\n     * overflow (when the input is less than smallest int32 or\n     * greater than largest int32).\n     *\n     * Counterpart to Solidity's `int32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\n        downcasted = int32(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(32, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int24 from int256, reverting on\n     * overflow (when the input is less than smallest int24 or\n     * greater than largest int24).\n     *\n     * Counterpart to Solidity's `int24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\n        downcasted = int24(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(24, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int16 from int256, reverting on\n     * overflow (when the input is less than smallest int16 or\n     * greater than largest int16).\n     *\n     * Counterpart to Solidity's `int16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\n        downcasted = int16(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(16, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int8 from int256, reverting on\n     * overflow (when the input is less than smallest int8 or\n     * greater than largest int8).\n     *\n     * Counterpart to Solidity's `int8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\n        downcasted = int8(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(8, value);\n        }\n    }\n\n    /**\n     * @dev Converts an unsigned uint256 into a signed int256.\n     *\n     * Requirements:\n     *\n     * - input must be less than or equal to maxInt256.\n     */\n    function toInt256(uint256 value) internal pure returns (int256) {\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n        if (value > uint256(type(int256).max)) {\n            revert SafeCastOverflowedUintToInt(value);\n        }\n        return int256(value);\n    }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(newImplementation.code.length > 0);\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n */\nlibrary StorageSlot {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    struct StringSlot {\n        string value;\n    }\n\n    struct BytesSlot {\n        bytes value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n     */\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n     */\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/structs/Checkpoints.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/structs/Checkpoints.sol)\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"../math/Math.sol\";\n\n/**\n * @dev This library defines the `Trace*` struct, for checkpointing values as they change at different points in\n * time, and later looking up past values by block number. See {Votes} as an example.\n *\n * To create a history of checkpoints define a variable type `Checkpoints.Trace*` in your contract, and store a new\n * checkpoint for the current transaction block using the {push} function.\n */\nlibrary Checkpoints {\n    /**\n     * @dev A value was attempted to be inserted on a past checkpoint.\n     */\n    error CheckpointUnorderedInsertion();\n\n    struct Trace224 {\n        Checkpoint224[] _checkpoints;\n    }\n\n    struct Checkpoint224 {\n        uint32 _key;\n        uint224 _value;\n    }\n\n    /**\n     * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\n     *\n     * Returns previous value and new value.\n     *\n     * IMPORTANT: Never accept `key` as a user input, since an arbitrary `type(uint32).max` key set will disable the\n     * library.\n     */\n    function push(Trace224 storage self, uint32 key, uint224 value) internal returns (uint224, uint224) {\n        return _insert(self._checkpoints, key, value);\n    }\n\n    /**\n     * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if\n     * there is none.\n     */\n    function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\n        uint256 len = self._checkpoints.length;\n        uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\n        return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\n    }\n\n    /**\n     * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n     * if there is none.\n     */\n    function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\n        uint256 len = self._checkpoints.length;\n        uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n        return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n    }\n\n    /**\n     * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n     * if there is none.\n     *\n     * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high\n     * keys).\n     */\n    function upperLookupRecent(Trace224 storage self, uint32 key) internal view returns (uint224) {\n        uint256 len = self._checkpoints.length;\n\n        uint256 low = 0;\n        uint256 high = len;\n\n        if (len > 5) {\n            uint256 mid = len - Math.sqrt(len);\n            if (key < _unsafeAccess(self._checkpoints, mid)._key) {\n                high = mid;\n            } else {\n                low = mid + 1;\n            }\n        }\n\n        uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n        return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n    }\n\n    /**\n     * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n     */\n    function latest(Trace224 storage self) internal view returns (uint224) {\n        uint256 pos = self._checkpoints.length;\n        return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n    }\n\n    /**\n     * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n     * in the most recent checkpoint.\n     */\n    function latestCheckpoint(Trace224 storage self) internal view returns (bool exists, uint32 _key, uint224 _value) {\n        uint256 pos = self._checkpoints.length;\n        if (pos == 0) {\n            return (false, 0, 0);\n        } else {\n            Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n            return (true, ckpt._key, ckpt._value);\n        }\n    }\n\n    /**\n     * @dev Returns the number of checkpoint.\n     */\n    function length(Trace224 storage self) internal view returns (uint256) {\n        return self._checkpoints.length;\n    }\n\n    /**\n     * @dev Returns checkpoint at given position.\n     */\n    function at(Trace224 storage self, uint32 pos) internal view returns (Checkpoint224 memory) {\n        return self._checkpoints[pos];\n    }\n\n    /**\n     * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n     * or by updating the last one.\n     */\n    function _insert(Checkpoint224[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\n        uint256 pos = self.length;\n\n        if (pos > 0) {\n            // Copying to memory is important here.\n            Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\n\n            // Checkpoint keys must be non-decreasing.\n            if (last._key > key) {\n                revert CheckpointUnorderedInsertion();\n            }\n\n            // Update or push new checkpoint\n            if (last._key == key) {\n                _unsafeAccess(self, pos - 1)._value = value;\n            } else {\n                self.push(Checkpoint224({_key: key, _value: value}));\n            }\n            return (last._value, value);\n        } else {\n            self.push(Checkpoint224({_key: key, _value: value}));\n            return (0, value);\n        }\n    }\n\n    /**\n     * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high`\n     * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n     * `high`.\n     *\n     * WARNING: `high` should not be greater than the array's length.\n     */\n    function _upperBinaryLookup(\n        Checkpoint224[] storage self,\n        uint32 key,\n        uint256 low,\n        uint256 high\n    ) private view returns (uint256) {\n        while (low < high) {\n            uint256 mid = Math.average(low, high);\n            if (_unsafeAccess(self, mid)._key > key) {\n                high = mid;\n            } else {\n                low = mid + 1;\n            }\n        }\n        return high;\n    }\n\n    /**\n     * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or\n     * `high` if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and\n     * exclusive `high`.\n     *\n     * WARNING: `high` should not be greater than the array's length.\n     */\n    function _lowerBinaryLookup(\n        Checkpoint224[] storage self,\n        uint32 key,\n        uint256 low,\n        uint256 high\n    ) private view returns (uint256) {\n        while (low < high) {\n            uint256 mid = Math.average(low, high);\n            if (_unsafeAccess(self, mid)._key < key) {\n                low = mid + 1;\n            } else {\n                high = mid;\n            }\n        }\n        return high;\n    }\n\n    /**\n     * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n     */\n    function _unsafeAccess(\n        Checkpoint224[] storage self,\n        uint256 pos\n    ) private pure returns (Checkpoint224 storage result) {\n        assembly {\n            mstore(0, self.slot)\n            result.slot := add(keccak256(0, 0x20), pos)\n        }\n    }\n\n    struct Trace208 {\n        Checkpoint208[] _checkpoints;\n    }\n\n    struct Checkpoint208 {\n        uint48 _key;\n        uint208 _value;\n    }\n\n    /**\n     * @dev Pushes a (`key`, `value`) pair into a Trace208 so that it is stored as the checkpoint.\n     *\n     * Returns previous value and new value.\n     *\n     * IMPORTANT: Never accept `key` as a user input, since an arbitrary `type(uint48).max` key set will disable the\n     * library.\n     */\n    function push(Trace208 storage self, uint48 key, uint208 value) internal returns (uint208, uint208) {\n        return _insert(self._checkpoints, key, value);\n    }\n\n    /**\n     * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if\n     * there is none.\n     */\n    function lowerLookup(Trace208 storage self, uint48 key) internal view returns (uint208) {\n        uint256 len = self._checkpoints.length;\n        uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\n        return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\n    }\n\n    /**\n     * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n     * if there is none.\n     */\n    function upperLookup(Trace208 storage self, uint48 key) internal view returns (uint208) {\n        uint256 len = self._checkpoints.length;\n        uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n        return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n    }\n\n    /**\n     * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n     * if there is none.\n     *\n     * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high\n     * keys).\n     */\n    function upperLookupRecent(Trace208 storage self, uint48 key) internal view returns (uint208) {\n        uint256 len = self._checkpoints.length;\n\n        uint256 low = 0;\n        uint256 high = len;\n\n        if (len > 5) {\n            uint256 mid = len - Math.sqrt(len);\n            if (key < _unsafeAccess(self._checkpoints, mid)._key) {\n                high = mid;\n            } else {\n                low = mid + 1;\n            }\n        }\n\n        uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n        return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n    }\n\n    /**\n     * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n     */\n    function latest(Trace208 storage self) internal view returns (uint208) {\n        uint256 pos = self._checkpoints.length;\n        return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n    }\n\n    /**\n     * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n     * in the most recent checkpoint.\n     */\n    function latestCheckpoint(Trace208 storage self) internal view returns (bool exists, uint48 _key, uint208 _value) {\n        uint256 pos = self._checkpoints.length;\n        if (pos == 0) {\n            return (false, 0, 0);\n        } else {\n            Checkpoint208 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n            return (true, ckpt._key, ckpt._value);\n        }\n    }\n\n    /**\n     * @dev Returns the number of checkpoint.\n     */\n    function length(Trace208 storage self) internal view returns (uint256) {\n        return self._checkpoints.length;\n    }\n\n    /**\n     * @dev Returns checkpoint at given position.\n     */\n    function at(Trace208 storage self, uint32 pos) internal view returns (Checkpoint208 memory) {\n        return self._checkpoints[pos];\n    }\n\n    /**\n     * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n     * or by updating the last one.\n     */\n    function _insert(Checkpoint208[] storage self, uint48 key, uint208 value) private returns (uint208, uint208) {\n        uint256 pos = self.length;\n\n        if (pos > 0) {\n            // Copying to memory is important here.\n            Checkpoint208 memory last = _unsafeAccess(self, pos - 1);\n\n            // Checkpoint keys must be non-decreasing.\n            if (last._key > key) {\n                revert CheckpointUnorderedInsertion();\n            }\n\n            // Update or push new checkpoint\n            if (last._key == key) {\n                _unsafeAccess(self, pos - 1)._value = value;\n            } else {\n                self.push(Checkpoint208({_key: key, _value: value}));\n            }\n            return (last._value, value);\n        } else {\n            self.push(Checkpoint208({_key: key, _value: value}));\n            return (0, value);\n        }\n    }\n\n    /**\n     * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high`\n     * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n     * `high`.\n     *\n     * WARNING: `high` should not be greater than the array's length.\n     */\n    function _upperBinaryLookup(\n        Checkpoint208[] storage self,\n        uint48 key,\n        uint256 low,\n        uint256 high\n    ) private view returns (uint256) {\n        while (low < high) {\n            uint256 mid = Math.average(low, high);\n            if (_unsafeAccess(self, mid)._key > key) {\n                high = mid;\n            } else {\n                low = mid + 1;\n            }\n        }\n        return high;\n    }\n\n    /**\n     * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or\n     * `high` if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and\n     * exclusive `high`.\n     *\n     * WARNING: `high` should not be greater than the array's length.\n     */\n    function _lowerBinaryLookup(\n        Checkpoint208[] storage self,\n        uint48 key,\n        uint256 low,\n        uint256 high\n    ) private view returns (uint256) {\n        while (low < high) {\n            uint256 mid = Math.average(low, high);\n            if (_unsafeAccess(self, mid)._key < key) {\n                low = mid + 1;\n            } else {\n                high = mid;\n            }\n        }\n        return high;\n    }\n\n    /**\n     * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n     */\n    function _unsafeAccess(\n        Checkpoint208[] storage self,\n        uint256 pos\n    ) private pure returns (Checkpoint208 storage result) {\n        assembly {\n            mstore(0, self.slot)\n            result.slot := add(keccak256(0, 0x20), pos)\n        }\n    }\n\n    struct Trace160 {\n        Checkpoint160[] _checkpoints;\n    }\n\n    struct Checkpoint160 {\n        uint96 _key;\n        uint160 _value;\n    }\n\n    /**\n     * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\n     *\n     * Returns previous value and new value.\n     *\n     * IMPORTANT: Never accept `key` as a user input, since an arbitrary `type(uint96).max` key set will disable the\n     * library.\n     */\n    function push(Trace160 storage self, uint96 key, uint160 value) internal returns (uint160, uint160) {\n        return _insert(self._checkpoints, key, value);\n    }\n\n    /**\n     * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if\n     * there is none.\n     */\n    function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\n        uint256 len = self._checkpoints.length;\n        uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\n        return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\n    }\n\n    /**\n     * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n     * if there is none.\n     */\n    function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\n        uint256 len = self._checkpoints.length;\n        uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n        return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n    }\n\n    /**\n     * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n     * if there is none.\n     *\n     * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high\n     * keys).\n     */\n    function upperLookupRecent(Trace160 storage self, uint96 key) internal view returns (uint160) {\n        uint256 len = self._checkpoints.length;\n\n        uint256 low = 0;\n        uint256 high = len;\n\n        if (len > 5) {\n            uint256 mid = len - Math.sqrt(len);\n            if (key < _unsafeAccess(self._checkpoints, mid)._key) {\n                high = mid;\n            } else {\n                low = mid + 1;\n            }\n        }\n\n        uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n        return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n    }\n\n    /**\n     * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n     */\n    function latest(Trace160 storage self) internal view returns (uint160) {\n        uint256 pos = self._checkpoints.length;\n        return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n    }\n\n    /**\n     * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n     * in the most recent checkpoint.\n     */\n    function latestCheckpoint(Trace160 storage self) internal view returns (bool exists, uint96 _key, uint160 _value) {\n        uint256 pos = self._checkpoints.length;\n        if (pos == 0) {\n            return (false, 0, 0);\n        } else {\n            Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n            return (true, ckpt._key, ckpt._value);\n        }\n    }\n\n    /**\n     * @dev Returns the number of checkpoint.\n     */\n    function length(Trace160 storage self) internal view returns (uint256) {\n        return self._checkpoints.length;\n    }\n\n    /**\n     * @dev Returns checkpoint at given position.\n     */\n    function at(Trace160 storage self, uint32 pos) internal view returns (Checkpoint160 memory) {\n        return self._checkpoints[pos];\n    }\n\n    /**\n     * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n     * or by updating the last one.\n     */\n    function _insert(Checkpoint160[] storage self, uint96 key, uint160 value) private returns (uint160, uint160) {\n        uint256 pos = self.length;\n\n        if (pos > 0) {\n            // Copying to memory is important here.\n            Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\n\n            // Checkpoint keys must be non-decreasing.\n            if (last._key > key) {\n                revert CheckpointUnorderedInsertion();\n            }\n\n            // Update or push new checkpoint\n            if (last._key == key) {\n                _unsafeAccess(self, pos - 1)._value = value;\n            } else {\n                self.push(Checkpoint160({_key: key, _value: value}));\n            }\n            return (last._value, value);\n        } else {\n            self.push(Checkpoint160({_key: key, _value: value}));\n            return (0, value);\n        }\n    }\n\n    /**\n     * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high`\n     * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n     * `high`.\n     *\n     * WARNING: `high` should not be greater than the array's length.\n     */\n    function _upperBinaryLookup(\n        Checkpoint160[] storage self,\n        uint96 key,\n        uint256 low,\n        uint256 high\n    ) private view returns (uint256) {\n        while (low < high) {\n            uint256 mid = Math.average(low, high);\n            if (_unsafeAccess(self, mid)._key > key) {\n                high = mid;\n            } else {\n                low = mid + 1;\n            }\n        }\n        return high;\n    }\n\n    /**\n     * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or\n     * `high` if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and\n     * exclusive `high`.\n     *\n     * WARNING: `high` should not be greater than the array's length.\n     */\n    function _lowerBinaryLookup(\n        Checkpoint160[] storage self,\n        uint96 key,\n        uint256 low,\n        uint256 high\n    ) private view returns (uint256) {\n        while (low < high) {\n            uint256 mid = Math.average(low, high);\n            if (_unsafeAccess(self, mid)._key < key) {\n                low = mid + 1;\n            } else {\n                high = mid;\n            }\n        }\n        return high;\n    }\n\n    /**\n     * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n     */\n    function _unsafeAccess(\n        Checkpoint160[] storage self,\n        uint256 pos\n    ) private pure returns (Checkpoint160 storage result) {\n        assembly {\n            mstore(0, self.slot)\n            result.slot := add(keccak256(0, 0x20), pos)\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/structs/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/structs/EnumerableSet.sol)\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```solidity\n * contract Example {\n *     // Add the library methods\n *     using EnumerableSet for EnumerableSet.AddressSet;\n *\n *     // Declare a set state variable\n *     EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n * unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n * array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Set type with\n    // bytes32 values.\n    // The Set implementation uses private functions, and user-facing\n    // implementations (such as AddressSet) are just wrappers around the\n    // underlying Set.\n    // This means that we can only create new EnumerableSets for types that fit\n    // in bytes32.\n\n    struct Set {\n        // Storage of set values\n        bytes32[] _values;\n        // Position is the index of the value in the `values` array plus 1.\n        // Position 0 is used to mean a value is not in the set.\n        mapping(bytes32 value => uint256) _positions;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function _add(Set storage set, bytes32 value) private returns (bool) {\n        if (!_contains(set, value)) {\n            set._values.push(value);\n            // The value is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            set._positions[value] = set._values.length;\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\n        // We cache the value's position to prevent multiple reads from the same storage slot\n        uint256 position = set._positions[value];\n\n        if (position != 0) {\n            // Equivalent to contains(set, value)\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 valueIndex = position - 1;\n            uint256 lastIndex = set._values.length - 1;\n\n            if (valueIndex != lastIndex) {\n                bytes32 lastValue = set._values[lastIndex];\n\n                // Move the lastValue to the index where the value to delete is\n                set._values[valueIndex] = lastValue;\n                // Update the tracked position of the lastValue (that was just moved)\n                set._positions[lastValue] = position;\n            }\n\n            // Delete the slot where the moved value was stored\n            set._values.pop();\n\n            // Delete the tracked position for the deleted slot\n            delete set._positions[value];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\n        return set._positions[value] != 0;\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function _length(Set storage set) private view returns (uint256) {\n        return set._values.length;\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function _at(Set storage set, uint256 index) private view returns (bytes32) {\n        return set._values[index];\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function _values(Set storage set) private view returns (bytes32[] memory) {\n        return set._values;\n    }\n\n    // Bytes32Set\n\n    struct Bytes32Set {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _add(set._inner, value);\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _remove(set._inner, value);\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n        return _contains(set._inner, value);\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(Bytes32Set storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n        return _at(set._inner, index);\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n        bytes32[] memory store = _values(set._inner);\n        bytes32[] memory result;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := store\n        }\n\n        return result;\n    }\n\n    // AddressSet\n\n    struct AddressSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(AddressSet storage set, address value) internal returns (bool) {\n        return _add(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(AddressSet storage set, address value) internal returns (bool) {\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(AddressSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function at(AddressSet storage set, uint256 index) internal view returns (address) {\n        return address(uint160(uint256(_at(set._inner, index))));\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(AddressSet storage set) internal view returns (address[] memory) {\n        bytes32[] memory store = _values(set._inner);\n        address[] memory result;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := store\n        }\n\n        return result;\n    }\n\n    // UintSet\n\n    struct UintSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\n        return _add(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\n        return _remove(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(UintSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n        return uint256(_at(set._inner, index));\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(UintSet storage set) internal view returns (uint256[] memory) {\n        bytes32[] memory store = _values(set._inner);\n        uint256[] memory result;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := store\n        }\n\n        return result;\n    }\n}\n"},"contracts/B3TRChallenges.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nimport { AccessControlUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\";\nimport { ReentrancyGuardUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\nimport { UUPSUpgradeable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport { IChallenges } from \"./interfaces/IChallenges.sol\";\nimport { IB3TR } from \"./interfaces/IB3TR.sol\";\nimport { IVeBetterPassport } from \"./interfaces/IVeBetterPassport.sol\";\nimport { IXAllocationVotingGovernor } from \"./interfaces/IXAllocationVotingGovernor.sol\";\nimport { IX2EarnApps } from \"./interfaces/IX2EarnApps.sol\";\nimport { ChallengeCoreLogic } from \"./challenges/libraries/ChallengeCoreLogic.sol\";\nimport { ChallengeSettlementLogic } from \"./challenges/libraries/ChallengeSettlementLogic.sol\";\nimport { ChallengeStorageTypes } from \"./challenges/libraries/ChallengeStorageTypes.sol\";\nimport { ChallengeTypes } from \"./challenges/libraries/ChallengeTypes.sol\";\n\n/// @title B3TRChallenges\n/// @notice Upgradeable entrypoint for creating, joining, settling, and administering B3TR challenges.\n/// @dev This contract owns storage, roles, and external access control while delegating challenge lifecycle and\n/// settlement logic to dedicated libraries. NatSpec for the external API is inherited from `IChallenges`.\ncontract B3TRChallenges is IChallenges, AccessControlUpgradeable, ReentrancyGuardUpgradeable, UUPSUpgradeable {\n  bytes32 public constant UPGRADER_ROLE = keccak256(\"UPGRADER_ROLE\");\n  bytes32 public constant CONTRACTS_ADDRESS_MANAGER_ROLE = keccak256(\"CONTRACTS_ADDRESS_MANAGER_ROLE\");\n  bytes32 public constant SETTINGS_MANAGER_ROLE = keccak256(\"SETTINGS_MANAGER_ROLE\");\n\n  /// @custom:oz-upgrades-unsafe-allow constructor\n  constructor() {\n    _disableInitializers();\n  }\n\n  /// @inheritdoc IChallenges\n  function initialize(\n    ChallengeTypes.InitializationData calldata data,\n    ChallengeTypes.InitializationRoleData calldata roles\n  ) external initializer {\n    if (\n      roles.admin == address(0) ||\n      roles.upgrader == address(0) ||\n      roles.contractsAddressManager == address(0) ||\n      roles.settingsManager == address(0) ||\n      data.b3trAddress == address(0) ||\n      data.veBetterPassportAddress == address(0) ||\n      data.xAllocationVotingAddress == address(0) ||\n      data.x2EarnAppsAddress == address(0)\n    ) {\n      revert ZeroAddress();\n    }\n    if (\n      data.maxChallengeDuration == 0 ||\n      data.maxSelectedApps == 0 ||\n      data.maxParticipants == 0 ||\n      data.minBetAmount == 0\n    ) revert InvalidAmount();\n\n    __AccessControl_init();\n    __ReentrancyGuard_init();\n    __UUPSUpgradeable_init();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    $.maxChallengeDuration = data.maxChallengeDuration;\n    $.maxSelectedApps = data.maxSelectedApps;\n    $.maxParticipants = data.maxParticipants;\n    _setMinBetAmount(data.minBetAmount);\n\n    // Emit updates so event-driven indexers can capture initial settings without extra contract calls.\n    emit MaxChallengeDurationUpdated(0, data.maxChallengeDuration);\n    emit MaxSelectedAppsUpdated(0, data.maxSelectedApps);\n    emit MaxParticipantsUpdated(0, data.maxParticipants);\n\n    _initializeAddresses(\n      data.b3trAddress,\n      data.veBetterPassportAddress,\n      data.xAllocationVotingAddress,\n      data.x2EarnAppsAddress\n    );\n    _initializeRoles(roles.admin, roles.upgrader, roles.contractsAddressManager, roles.settingsManager);\n  }\n\n  modifier onlyRoleOrAdmin(bytes32 role) {\n    if (!hasRole(role, msg.sender) && !hasRole(DEFAULT_ADMIN_ROLE, msg.sender)) {\n      revert ChallengesUnauthorizedUser(msg.sender);\n    }\n    _;\n  }\n\n  function _authorizeUpgrade(address) internal override onlyRole(UPGRADER_ROLE) {}\n\n  /// @inheritdoc IChallenges\n  function version() external pure returns (string memory) {\n    return \"2\";\n  }\n\n  /// @inheritdoc IChallenges\n  function challengeCount() external view returns (uint256) {\n    return ChallengeStorageTypes.getChallengesStorage().challengeCount;\n  }\n\n  /// @inheritdoc IChallenges\n  function maxChallengeDuration() external view returns (uint256) {\n    return ChallengeStorageTypes.getChallengesStorage().maxChallengeDuration;\n  }\n\n  /// @inheritdoc IChallenges\n  function maxSelectedApps() external view returns (uint256) {\n    return ChallengeStorageTypes.getChallengesStorage().maxSelectedApps;\n  }\n\n  /// @inheritdoc IChallenges\n  function maxParticipants() external view returns (uint256) {\n    return ChallengeStorageTypes.getChallengesStorage().maxParticipants;\n  }\n\n  /// @inheritdoc IChallenges\n  function minBetAmount() external view returns (uint256) {\n    return ChallengeStorageTypes.getChallengesStorage().minBetAmount;\n  }\n\n  /// @inheritdoc IChallenges\n  function getChallenge(uint256 challengeId) external view returns (ChallengeTypes.ChallengeView memory) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    _ensureChallengeExists(challengeId, $.challengeCount);\n\n    ChallengeTypes.Challenge storage challenge = $.challenges[challengeId];\n    uint256 duration = challenge.endRound - challenge.startRound + 1;\n\n    return ChallengeTypes.ChallengeView({\n      challengeId: challengeId,\n      kind: challenge.kind,\n      visibility: challenge.visibility,\n      challengeType: challenge.challengeType,\n      status: ChallengeTypes.ChallengeStatus(ChallengeCoreLogic.getComputedStatus(challengeId)),\n      settlementMode: challenge.settlementMode,\n      creator: challenge.creator,\n      stakeAmount: challenge.stakeAmount,\n      startRound: challenge.startRound,\n      endRound: challenge.endRound,\n      duration: duration,\n      threshold: challenge.threshold,\n      numWinners: challenge.numWinners,\n      winnersClaimed: challenge.winners.length,\n      prizePerWinner: challenge.prizePerWinner,\n      allApps: challenge.allApps,\n      totalPrize: challenge.totalPrize,\n      participantCount: challenge.participants.length,\n      invitedCount: challenge.invited.length,\n      declinedCount: challenge.declined.length,\n      selectedAppsCount: challenge.appIds.length,\n      winnersCount: challenge.winners.length,\n      bestScore: challenge.bestScore,\n      bestCount: challenge.bestCount,\n      payoutsClaimed: challenge.payoutsClaimed,\n      title: challenge.title,\n      description: challenge.description,\n      imageURI: challenge.imageURI,\n      metadataURI: challenge.metadataURI\n    });\n  }\n\n  /// @inheritdoc IChallenges\n  function getChallengeStatus(uint256 challengeId) external view returns (ChallengeTypes.ChallengeStatus) {\n    return ChallengeTypes.ChallengeStatus(ChallengeCoreLogic.getComputedStatus(challengeId));\n  }\n\n  /// @inheritdoc IChallenges\n  function getChallengeParticipants(uint256 challengeId) external view returns (address[] memory) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    _ensureChallengeExists(challengeId, $.challengeCount);\n    return $.challenges[challengeId].participants;\n  }\n\n  /// @inheritdoc IChallenges\n  function getChallengeInvited(uint256 challengeId) external view returns (address[] memory) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    _ensureChallengeExists(challengeId, $.challengeCount);\n    return $.challenges[challengeId].invited;\n  }\n\n  /// @inheritdoc IChallenges\n  function getChallengeDeclined(uint256 challengeId) external view returns (address[] memory) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    _ensureChallengeExists(challengeId, $.challengeCount);\n    return $.challenges[challengeId].declined;\n  }\n\n  /// @inheritdoc IChallenges\n  function getChallengeSelectedApps(uint256 challengeId) external view returns (bytes32[] memory) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    _ensureChallengeExists(challengeId, $.challengeCount);\n    return $.challenges[challengeId].appIds;\n  }\n\n  /// @inheritdoc IChallenges\n  function getChallengeWinners(uint256 challengeId) external view returns (address[] memory) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    _ensureChallengeExists(challengeId, $.challengeCount);\n    return $.challenges[challengeId].winners;\n  }\n\n  /// @inheritdoc IChallenges\n  function getParticipantStatus(\n    uint256 challengeId,\n    address account\n  ) external view returns (ChallengeTypes.ParticipantStatus) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    _ensureChallengeExists(challengeId, $.challengeCount);\n    return $.participantStatus[challengeId][account];\n  }\n\n  /// @inheritdoc IChallenges\n  function isInvitationEligible(uint256 challengeId, address account) external view returns (bool) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    _ensureChallengeExists(challengeId, $.challengeCount);\n    return $.invitationEligible[challengeId][account];\n  }\n\n  /// @inheritdoc IChallenges\n  function isSplitWinWinner(uint256 challengeId, address account) external view returns (bool) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    _ensureChallengeExists(challengeId, $.challengeCount);\n    return $.isSplitWinWinner[challengeId][account];\n  }\n\n  /// @inheritdoc IChallenges\n  function getParticipantActions(uint256 challengeId, address participant) external view returns (uint256) {\n    return ChallengeSettlementLogic.getParticipantActions(challengeId, participant);\n  }\n\n  /// @inheritdoc IChallenges\n  function createChallenge(ChallengeTypes.CreateChallengeParams calldata params) external nonReentrant returns (uint256) {\n    return ChallengeCoreLogic.createChallenge(params);\n  }\n\n  /// @inheritdoc IChallenges\n  function addInvites(uint256 challengeId, address[] calldata invitees) external nonReentrant {\n    ChallengeCoreLogic.addInvites(challengeId, invitees);\n  }\n\n  /// @inheritdoc IChallenges\n  function joinChallenge(uint256 challengeId) external nonReentrant {\n    ChallengeCoreLogic.joinChallenge(challengeId);\n  }\n\n  /// @inheritdoc IChallenges\n  function leaveChallenge(uint256 challengeId) external nonReentrant {\n    ChallengeCoreLogic.leaveChallenge(challengeId);\n  }\n\n  /// @inheritdoc IChallenges\n  function declineChallenge(uint256 challengeId) external nonReentrant {\n    ChallengeCoreLogic.declineChallenge(challengeId);\n  }\n\n  /// @inheritdoc IChallenges\n  function cancelChallenge(uint256 challengeId) external nonReentrant {\n    ChallengeCoreLogic.cancelChallenge(challengeId);\n  }\n\n  /// @inheritdoc IChallenges\n  function syncChallenge(uint256 challengeId) external nonReentrant returns (ChallengeTypes.ChallengeStatus) {\n    return ChallengeTypes.ChallengeStatus(ChallengeCoreLogic.syncChallenge(challengeId));\n  }\n\n  /// @inheritdoc IChallenges\n  function completeChallenge(uint256 challengeId) external nonReentrant {\n    ChallengeSettlementLogic.completeChallenge(challengeId);\n  }\n\n  /// @inheritdoc IChallenges\n  function claimChallengePayout(uint256 challengeId) external nonReentrant returns (uint256) {\n    return ChallengeSettlementLogic.claimChallengePayout(challengeId);\n  }\n\n  /// @inheritdoc IChallenges\n  function claimSplitWinPrize(uint256 challengeId) external nonReentrant returns (uint256) {\n    return ChallengeSettlementLogic.claimSplitWinPrize(challengeId);\n  }\n\n  /// @inheritdoc IChallenges\n  function claimCreatorSplitWinRefund(uint256 challengeId) external nonReentrant returns (uint256) {\n    return ChallengeSettlementLogic.claimCreatorSplitWinRefund(challengeId);\n  }\n\n  /// @inheritdoc IChallenges\n  function claimChallengeRefund(uint256 challengeId) external nonReentrant returns (uint256) {\n    return ChallengeSettlementLogic.claimChallengeRefund(challengeId);\n  }\n\n  /// @inheritdoc IChallenges\n  function withdraw(address to, uint256 amount) external nonReentrant onlyRoleOrAdmin(DEFAULT_ADMIN_ROLE) {\n    if (to == address(0)) revert ZeroAddress();\n    if (amount == 0) revert InvalidAmount();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    uint256 available = $.b3tr.balanceOf(address(this));\n    if (amount > available) revert InsufficientWithdrawableFunds(available, amount);\n\n    if (!$.b3tr.transfer(to, amount)) revert TransferFailed();\n\n    emit AdminWithdrawal(msg.sender, to, amount);\n  }\n\n  /// @inheritdoc IChallenges\n  function setB3TRAddress(address newAddress) external nonReentrant onlyRoleOrAdmin(CONTRACTS_ADDRESS_MANAGER_ROLE) {\n    _setB3TRAddress(newAddress);\n  }\n\n  /// @inheritdoc IChallenges\n  function setVeBetterPassportAddress(address newAddress) external nonReentrant onlyRoleOrAdmin(CONTRACTS_ADDRESS_MANAGER_ROLE) {\n    _setVeBetterPassportAddress(newAddress);\n  }\n\n  /// @inheritdoc IChallenges\n  function setXAllocationVotingAddress(address newAddress) external nonReentrant onlyRoleOrAdmin(CONTRACTS_ADDRESS_MANAGER_ROLE) {\n    _setXAllocationVotingAddress(newAddress);\n  }\n\n  /// @inheritdoc IChallenges\n  function setX2EarnAppsAddress(address newAddress) external nonReentrant onlyRoleOrAdmin(CONTRACTS_ADDRESS_MANAGER_ROLE) {\n    _setX2EarnAppsAddress(newAddress);\n  }\n\n  /// @inheritdoc IChallenges\n  function setMaxChallengeDuration(uint256 newValue) external nonReentrant onlyRoleOrAdmin(SETTINGS_MANAGER_ROLE) {\n    if (newValue == 0) revert InvalidAmount();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    uint256 oldValue = $.maxChallengeDuration;\n    $.maxChallengeDuration = newValue;\n\n    emit MaxChallengeDurationUpdated(oldValue, newValue);\n  }\n\n  /// @inheritdoc IChallenges\n  function setMaxSelectedApps(uint256 newValue) external nonReentrant onlyRoleOrAdmin(SETTINGS_MANAGER_ROLE) {\n    if (newValue == 0) revert InvalidAmount();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    uint256 oldValue = $.maxSelectedApps;\n    $.maxSelectedApps = newValue;\n\n    emit MaxSelectedAppsUpdated(oldValue, newValue);\n  }\n\n  /// @inheritdoc IChallenges\n  function setMaxParticipants(uint256 newValue) external nonReentrant onlyRoleOrAdmin(SETTINGS_MANAGER_ROLE) {\n    if (newValue == 0) revert InvalidAmount();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    uint256 oldValue = $.maxParticipants;\n    $.maxParticipants = newValue;\n\n    emit MaxParticipantsUpdated(oldValue, newValue);\n  }\n\n  /// @inheritdoc IChallenges\n  function setMinBetAmount(uint256 newValue) external nonReentrant onlyRoleOrAdmin(SETTINGS_MANAGER_ROLE) {\n    _setMinBetAmount(newValue);\n  }\n\n  function _setB3TRAddress(address newAddress) private {\n    if (newAddress == address(0)) revert ZeroAddress();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    address oldAddress = address($.b3tr);\n    $.b3tr = IB3TR(newAddress);\n\n    emit B3TRAddressUpdated(oldAddress, newAddress);\n  }\n\n  function _setVeBetterPassportAddress(address newAddress) private {\n    if (newAddress == address(0)) revert ZeroAddress();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    address oldAddress = address($.veBetterPassport);\n    $.veBetterPassport = IVeBetterPassport(newAddress);\n\n    emit VeBetterPassportAddressUpdated(oldAddress, newAddress);\n  }\n\n  function _setXAllocationVotingAddress(address newAddress) private {\n    if (newAddress == address(0)) revert ZeroAddress();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    address oldAddress = address($.xAllocationVoting);\n    $.xAllocationVoting = IXAllocationVotingGovernor(newAddress);\n\n    emit XAllocationVotingAddressUpdated(oldAddress, newAddress);\n  }\n\n  function _setX2EarnAppsAddress(address newAddress) private {\n    if (newAddress == address(0)) revert ZeroAddress();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    address oldAddress = address($.x2EarnApps);\n    $.x2EarnApps = IX2EarnApps(newAddress);\n\n    emit X2EarnAppsAddressUpdated(oldAddress, newAddress);\n  }\n\n  function _setMinBetAmount(uint256 newValue) private {\n    if (newValue == 0) revert InvalidAmount();\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    uint256 oldValue = $.minBetAmount;\n    $.minBetAmount = newValue;\n\n    emit MinBetAmountUpdated(oldValue, newValue);\n  }\n\n  function _initializeAddresses(\n    address b3trAddress,\n    address veBetterPassportAddress,\n    address xAllocationVotingAddress,\n    address x2EarnAppsAddress\n  ) private {\n    _setB3TRAddress(b3trAddress);\n    _setVeBetterPassportAddress(veBetterPassportAddress);\n    _setXAllocationVotingAddress(xAllocationVotingAddress);\n    _setX2EarnAppsAddress(x2EarnAppsAddress);\n  }\n\n  function _initializeRoles(\n    address admin,\n    address upgrader,\n    address contractsAddressManager,\n    address settingsManager\n  ) private {\n    _grantRole(DEFAULT_ADMIN_ROLE, admin);\n    _grantRole(UPGRADER_ROLE, upgrader);\n    _grantRole(CONTRACTS_ADDRESS_MANAGER_ROLE, contractsAddressManager);\n    _grantRole(SETTINGS_MANAGER_ROLE, settingsManager);\n  }\n\n  function _ensureChallengeExists(uint256 challengeId, uint256 challengeCount_) private pure {\n    if (challengeId == 0 || challengeId > challengeCount_) revert ChallengeDoesNotExist(challengeId);\n  }\n}\n"},"contracts/challenges/libraries/ChallengeCoreLogic.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nimport { IChallenges } from \"../../interfaces/IChallenges.sol\";\nimport { ChallengeStorageTypes } from \"./ChallengeStorageTypes.sol\";\nimport { ChallengeTypes } from \"./ChallengeTypes.sol\";\n\n/// @title ChallengeCoreLogic Library\n/// @notice Handles challenge creation, invitations, participation, and lazy status transitions.\n/// @dev Participant, invite, and decline arrays are paired with index-plus-one mappings so membership updates stay\n/// O(1) via swap-and-pop removals.\nlibrary ChallengeCoreLogic {\n  uint256 private constant TITLE_MAX_BYTES = 120;\n  uint256 private constant DESCRIPTION_MAX_BYTES = 500;\n  uint256 private constant IMAGE_URI_MAX_BYTES = 512;\n  uint256 private constant METADATA_URI_MAX_BYTES = 512;\n  uint256 private constant MIN_PRIZE_PER_WINNER = 1 ether;\n  uint256 private constant MAX_THRESHOLD = 1_000_000;\n\n  /// @notice Emitted when a challenge is created and initially funded.\n  /// @dev Split Win-specific configuration (numWinners, prizePerWinner) is emitted right after via\n  /// `SplitWinConfigured` to keep this event signature within Solidity stack limits.\n  event ChallengeCreated(\n    uint256 indexed challengeId,\n    address indexed creator,\n    uint256 indexed endRound,\n    ChallengeTypes.ChallengeKind kind,\n    ChallengeTypes.ChallengeVisibility visibility,\n    ChallengeTypes.ChallengeType challengeType,\n    uint256 stakeAmount,\n    uint256 startRound,\n    uint256 threshold,\n    bool allApps,\n    bytes32[] selectedApps,\n    string title,\n    string description,\n    string imageURI,\n    string metadataURI\n  );\n\n  /// @notice Emitted immediately after `ChallengeCreated` for Split Win challenges only.\n  event SplitWinConfigured(uint256 indexed challengeId, uint256 numWinners, uint256 prizePerWinner);\n\n  /// @notice Emitted when a new invitee is added to a challenge.\n  event ChallengeInviteAdded(uint256 indexed challengeId, address indexed invitee);\n\n  /// @notice Emitted when a participant joins a challenge.\n  event ChallengeJoined(uint256 indexed challengeId, address indexed participant);\n\n  /// @notice Emitted when a participant leaves a challenge before it starts.\n  event ChallengeLeft(uint256 indexed challengeId, address indexed participant);\n\n  /// @notice Emitted when an invitee declines a challenge.\n  event ChallengeDeclined(uint256 indexed challengeId, address indexed participant);\n\n  /// @notice Emitted when a pending challenge is cancelled by its creator.\n  event ChallengeCancelled(uint256 indexed challengeId);\n\n  /// @notice Emitted when a pending challenge becomes active.\n  event ChallengeActivated(uint256 indexed challengeId);\n\n  /// @notice Emitted when a pending challenge becomes invalid at start time.\n  event ChallengeInvalidated(uint256 indexed challengeId);\n\n  /// @notice Creates a new challenge and escrows the initial funds.\n  /// @dev An empty app list means actions from all apps are counted.\n  /// @param params Challenge creation payload.\n  /// @return challengeId Newly created challenge identifier.\n  function createChallenge(ChallengeTypes.CreateChallengeParams memory params) external returns (uint256 challengeId) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    uint256 currentRound = _currentRound($);\n\n    if (params.stakeAmount == 0) revert IChallenges.InvalidAmount();\n    if (params.stakeAmount < $.minBetAmount) {\n      revert IChallenges.BetAmountBelowMinimum(params.stakeAmount, $.minBetAmount);\n    }\n\n    // A zero start round means \"start next round\", so callers do not need to prefetch the current round.\n    uint256 startRound = params.startRound == 0 ? currentRound + 1 : params.startRound;\n    if (startRound <= currentRound) revert IChallenges.InvalidStartRound(startRound, currentRound);\n    if (params.endRound < startRound) revert IChallenges.InvalidEndRound(startRound, params.endRound);\n\n    uint256 duration = params.endRound - startRound + 1;\n    if (duration > $.maxChallengeDuration) {\n      revert IChallenges.MaxChallengeDurationExceeded(duration, $.maxChallengeDuration);\n    }\n\n    // An empty app selection means the challenge aggregates actions across every app.\n    bool allApps = params.appIds.length == 0;\n    if (!allApps) {\n      if (params.appIds.length > $.maxSelectedApps) {\n        revert IChallenges.MaxSelectedAppsExceeded(params.appIds.length, $.maxSelectedApps);\n      }\n      _validateApps(params.appIds);\n    }\n\n    _validateTypeConfiguration(params);\n    _validateMetadataLengths(params);\n\n    challengeId = ++$.challengeCount;\n    ChallengeTypes.Challenge storage challenge = $.challenges[challengeId];\n\n    challenge.kind = params.kind;\n    challenge.visibility = params.visibility;\n    challenge.challengeType = params.challengeType;\n    challenge.status = ChallengeTypes.ChallengeStatus.Pending;\n    challenge.settlementMode = ChallengeTypes.SettlementMode.None;\n    challenge.creator = msg.sender;\n    challenge.stakeAmount = params.stakeAmount;\n    challenge.startRound = startRound;\n    challenge.endRound = params.endRound;\n    challenge.threshold = params.threshold;\n    challenge.numWinners = params.numWinners;\n    challenge.allApps = allApps;\n    challenge.totalPrize = params.stakeAmount;\n    challenge.title = params.title;\n    challenge.description = params.description;\n    challenge.imageURI = params.imageURI;\n    challenge.metadataURI = params.metadataURI;\n\n    // For Split Win the per-winner prize is locked at creation: any integer division remainder\n    // becomes part of the creator post-endRound refund instead of being paid to a winner.\n    if (params.challengeType == ChallengeTypes.ChallengeType.SplitWin) {\n      challenge.prizePerWinner = params.stakeAmount / params.numWinners;\n    }\n\n    for (uint256 i; i < params.appIds.length; i++) {\n      challenge.appIds.push(params.appIds[i]);\n    }\n\n    if (!$.b3tr.transferFrom(msg.sender, address(this), params.stakeAmount)) revert IChallenges.TransferFailed();\n\n    // In stake challenges the creator escrows the first stake and counts as the first participant.\n    // The creator effectively joins the quest, so they must satisfy the same passport check applied in joinChallenge.\n    if (params.kind == ChallengeTypes.ChallengeKind.Stake) {\n      _requirePerson($, msg.sender);\n      _addParticipant(challengeId, msg.sender);\n    }\n\n    _emitChallengeCreated(challengeId, challenge);\n\n    for (uint256 i; i < params.invitees.length; i++) {\n      _addInvite(challengeId, params.invitees[i]);\n    }\n  }\n\n  /// @notice Adds invitees to a pending challenge.\n  /// @param challengeId Challenge identifier.\n  /// @param invitees Accounts to invite.\n  function addInvites(uint256 challengeId, address[] memory invitees) external {\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    _ensurePendingChallenge(challengeId, challenge);\n\n    if (msg.sender != challenge.creator) revert IChallenges.ChallengesUnauthorizedUser(msg.sender);\n\n    for (uint256 i; i < invitees.length; i++) {\n      _addInvite(challengeId, invitees[i]);\n    }\n  }\n\n  /// @notice Joins a pending challenge.\n  /// @param challengeId Challenge identifier.\n  function joinChallenge(uint256 challengeId) external {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    _ensurePendingChallenge(challengeId, challenge);\n\n    if (msg.sender == challenge.creator) revert IChallenges.CreatorCannotJoin(challengeId);\n\n    if (challenge.visibility == ChallengeTypes.ChallengeVisibility.Private && !$.invitationEligible[challengeId][msg.sender]) {\n      revert IChallenges.NotInvited(challengeId, msg.sender);\n    }\n\n    if ($.participantStatus[challengeId][msg.sender] == ChallengeTypes.ParticipantStatus.Joined) {\n      revert IChallenges.AlreadyParticipating(challengeId, msg.sender);\n    }\n\n    // Block sybils and blacklisted accounts from earning quest rewards. Refund paths intentionally remain open.\n    _requirePerson($, msg.sender);\n\n    // Split Win has no participant cap by design — the cap only applies to Max Actions challenges.\n    if (\n      challenge.challengeType == ChallengeTypes.ChallengeType.MaxActions &&\n      challenge.participants.length >= $.maxParticipants\n    ) {\n      revert IChallenges.MaxParticipantsExceeded(challenge.participants.length + 1, $.maxParticipants);\n    }\n\n    if (challenge.kind == ChallengeTypes.ChallengeKind.Stake) {\n      challenge.totalPrize += challenge.stakeAmount;\n      if (!$.b3tr.transferFrom(msg.sender, address(this), challenge.stakeAmount)) revert IChallenges.TransferFailed();\n    }\n\n    _removeFromInvitedIfPresent(challengeId, msg.sender);\n    _removeFromDeclinedIfPresent(challengeId, msg.sender);\n    _addParticipant(challengeId, msg.sender);\n\n    emit ChallengeJoined(challengeId, msg.sender);\n  }\n\n  /// @notice Leaves a pending challenge before the challenge starts.\n  /// @param challengeId Challenge identifier.\n  function leaveChallenge(uint256 challengeId) external {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    _ensurePendingChallenge(challengeId, challenge);\n\n    if (msg.sender == challenge.creator) revert IChallenges.CreatorCannotLeave(challengeId);\n    if ($.participantStatus[challengeId][msg.sender] != ChallengeTypes.ParticipantStatus.Joined) {\n      revert IChallenges.NotParticipating(challengeId, msg.sender);\n    }\n\n    _removeParticipant(challengeId, msg.sender);\n\n    if (challenge.kind == ChallengeTypes.ChallengeKind.Stake) {\n      challenge.totalPrize -= challenge.stakeAmount;\n      if (!$.b3tr.transfer(msg.sender, challenge.stakeAmount)) revert IChallenges.TransferFailed();\n    }\n\n    if ($.invitationEligible[challengeId][msg.sender]) {\n      _addInvited(challengeId, msg.sender);\n    } else {\n      $.participantStatus[challengeId][msg.sender] = ChallengeTypes.ParticipantStatus.None;\n    }\n\n    emit ChallengeLeft(challengeId, msg.sender);\n  }\n\n  /// @notice Declines a pending challenge invitation.\n  /// @param challengeId Challenge identifier.\n  function declineChallenge(uint256 challengeId) external {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    _ensurePendingChallenge(challengeId, challenge);\n\n    if (msg.sender == challenge.creator) revert IChallenges.ChallengesUnauthorizedUser(msg.sender);\n    if (!$.invitationEligible[challengeId][msg.sender]) revert IChallenges.NotInvited(challengeId, msg.sender);\n\n    if ($.participantStatus[challengeId][msg.sender] == ChallengeTypes.ParticipantStatus.Joined) {\n      _removeParticipant(challengeId, msg.sender);\n\n      if (challenge.kind == ChallengeTypes.ChallengeKind.Stake) {\n        challenge.totalPrize -= challenge.stakeAmount;\n        if (!$.b3tr.transfer(msg.sender, challenge.stakeAmount)) revert IChallenges.TransferFailed();\n      }\n    }\n\n    _removeFromInvitedIfPresent(challengeId, msg.sender);\n    _removeFromDeclinedIfPresent(challengeId, msg.sender);\n    _addDeclined(challengeId, msg.sender);\n\n    emit ChallengeDeclined(challengeId, msg.sender);\n  }\n\n  /// @notice Cancels a pending challenge.\n  /// @param challengeId Challenge identifier.\n  function cancelChallenge(uint256 challengeId) external {\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    _ensurePendingChallenge(challengeId, challenge);\n\n    if (msg.sender != challenge.creator) revert IChallenges.ChallengesUnauthorizedUser(msg.sender);\n\n    challenge.status = ChallengeTypes.ChallengeStatus.Cancelled;\n\n    emit ChallengeCancelled(challengeId);\n  }\n\n  /// @notice Syncs a pending challenge with the current round and participant state.\n  /// @param challengeId Challenge identifier.\n  /// @return Current persisted status after syncing.\n  function syncChallenge(uint256 challengeId) external returns (uint8) {\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    if (challenge.status != ChallengeTypes.ChallengeStatus.Pending) {\n      return uint8(challenge.status);\n    }\n\n    // Pending challenges are resolved lazily once someone interacts after the start round is reached.\n    ChallengeTypes.ChallengeStatus computed = ChallengeTypes.ChallengeStatus(getComputedStatus(challengeId));\n    if (computed == ChallengeTypes.ChallengeStatus.Pending) {\n      return uint8(computed);\n    }\n\n    challenge.status = computed;\n\n    if (computed == ChallengeTypes.ChallengeStatus.Active) {\n      emit ChallengeActivated(challengeId);\n    } else {\n      emit ChallengeInvalidated(challengeId);\n    }\n\n    return uint8(computed);\n  }\n\n  /// @notice Computes the latest status for a challenge without mutating storage.\n  /// @param challengeId Challenge identifier.\n  /// @return Computed challenge status encoded as `uint8`.\n  function getComputedStatus(uint256 challengeId) public view returns (uint8) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    if (challenge.status != ChallengeTypes.ChallengeStatus.Pending) {\n      return uint8(challenge.status);\n    }\n\n    if (_currentRound($) < challenge.startRound) {\n      return uint8(ChallengeTypes.ChallengeStatus.Pending);\n    }\n\n    return uint8(_isChallengeValid(challenge) ? ChallengeTypes.ChallengeStatus.Active : ChallengeTypes.ChallengeStatus.Invalid);\n  }\n\n  /// @dev Enforces the allowed (kind, visibility, challengeType) matrix and per-type field constraints.\n  /// Allowed combinations:\n  /// - Stake + Private + MaxActions (no threshold, no numWinners)\n  /// - Sponsored + Public + SplitWin (0 < threshold <= MAX_THRESHOLD, numWinners > 0, stakeAmount >= numWinners * 1 ether)\n  /// - Sponsored + Private + MaxActions (no threshold, no numWinners)\n  /// - Sponsored + Private + SplitWin (0 < threshold <= MAX_THRESHOLD, numWinners > 0, stakeAmount >= numWinners * 1 ether)\n  function _validateTypeConfiguration(ChallengeTypes.CreateChallengeParams memory params) private pure {\n    if (params.kind == ChallengeTypes.ChallengeKind.Stake) {\n      // Bet challenges are always private Max Actions: no public Bet, no Split Win Bet.\n      if (\n        params.visibility != ChallengeTypes.ChallengeVisibility.Private ||\n        params.challengeType != ChallengeTypes.ChallengeType.MaxActions\n      ) {\n        revert IChallenges.InvalidChallengeTypeForCombo();\n      }\n    } else {\n      // Sponsored Public is reserved for Split Win; Sponsored Private may pick either type.\n      if (\n        params.visibility == ChallengeTypes.ChallengeVisibility.Public &&\n        params.challengeType != ChallengeTypes.ChallengeType.SplitWin\n      ) {\n        revert IChallenges.InvalidChallengeTypeForCombo();\n      }\n    }\n\n    if (params.challengeType == ChallengeTypes.ChallengeType.MaxActions) {\n      if (params.threshold != 0 || params.numWinners != 0) revert IChallenges.InvalidTypeConfiguration();\n      return;\n    }\n\n    // Split Win configuration validation.\n    if (params.threshold == 0 || params.numWinners == 0) revert IChallenges.InvalidTypeConfiguration();\n    if (params.threshold > MAX_THRESHOLD) {\n      revert IChallenges.ThresholdTooHigh(params.threshold, MAX_THRESHOLD);\n    }\n\n    uint256 minStake = params.numWinners * MIN_PRIZE_PER_WINNER;\n    if (params.stakeAmount < minStake) {\n      revert IChallenges.InsufficientPrizePerWinner(params.stakeAmount, params.numWinners, MIN_PRIZE_PER_WINNER);\n    }\n  }\n\n  function _validateMetadataLengths(ChallengeTypes.CreateChallengeParams memory params) private pure {\n    uint256 titleLength = bytes(params.title).length;\n    if (titleLength > TITLE_MAX_BYTES) revert IChallenges.TitleTooLong(titleLength, TITLE_MAX_BYTES);\n\n    uint256 descriptionLength = bytes(params.description).length;\n    if (descriptionLength > DESCRIPTION_MAX_BYTES) {\n      revert IChallenges.DescriptionTooLong(descriptionLength, DESCRIPTION_MAX_BYTES);\n    }\n\n    uint256 imageURILength = bytes(params.imageURI).length;\n    if (imageURILength > IMAGE_URI_MAX_BYTES) {\n      revert IChallenges.ImageURITooLong(imageURILength, IMAGE_URI_MAX_BYTES);\n    }\n\n    uint256 metadataURILength = bytes(params.metadataURI).length;\n    if (metadataURILength > METADATA_URI_MAX_BYTES) {\n      revert IChallenges.MetadataURITooLong(metadataURILength, METADATA_URI_MAX_BYTES);\n    }\n  }\n\n  function _validateApps(bytes32[] memory appIds) private view {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n\n    for (uint256 i; i < appIds.length; i++) {\n      if (!$.x2EarnApps.appExists(appIds[i])) revert IChallenges.ChallengeUnknownApp(appIds[i]);\n\n      for (uint256 j; j < i; j++) {\n        if (appIds[j] == appIds[i]) revert IChallenges.DuplicateApp(appIds[i]);\n      }\n    }\n  }\n\n  function _ensurePendingChallenge(uint256 challengeId, ChallengeTypes.Challenge storage challenge) private view {\n    if (challenge.status != ChallengeTypes.ChallengeStatus.Pending) {\n      revert IChallenges.ChallengeNotPending(challengeId);\n    }\n\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    if (_currentRound($) >= challenge.startRound) {\n      revert IChallenges.ChallengeNotPending(challengeId);\n    }\n  }\n\n  function _emitChallengeCreated(uint256 challengeId, ChallengeTypes.Challenge storage challenge) private {\n    emit ChallengeCreated(\n      challengeId,\n      challenge.creator,\n      challenge.endRound,\n      challenge.kind,\n      challenge.visibility,\n      challenge.challengeType,\n      challenge.stakeAmount,\n      challenge.startRound,\n      challenge.threshold,\n      challenge.allApps,\n      challenge.appIds,\n      challenge.title,\n      challenge.description,\n      challenge.imageURI,\n      challenge.metadataURI\n    );\n\n    if (challenge.challengeType == ChallengeTypes.ChallengeType.SplitWin) {\n      emit SplitWinConfigured(challengeId, challenge.numWinners, challenge.prizePerWinner);\n    }\n  }\n\n  function _addInvite(uint256 challengeId, address invitee) private {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n\n    if (invitee == address(0)) revert IChallenges.ZeroAddress();\n\n    ChallengeTypes.Challenge storage challenge = $.challenges[challengeId];\n    if (invitee == challenge.creator) {\n      return;\n    }\n\n    if ($.participantStatus[challengeId][invitee] == ChallengeTypes.ParticipantStatus.Joined) {\n      return;\n    }\n\n    if ($.participantStatus[challengeId][invitee] == ChallengeTypes.ParticipantStatus.Invited) {\n      revert IChallenges.AlreadyInvited(challengeId, invitee);\n    }\n\n    if (!$.invitationEligible[challengeId][invitee]) {\n      $.invitationEligible[challengeId][invitee] = true;\n    }\n\n    _removeFromDeclinedIfPresent(challengeId, invitee);\n    _addInvited(challengeId, invitee);\n    emit ChallengeInviteAdded(challengeId, invitee);\n  }\n\n  function _addParticipant(uint256 challengeId, address participant) private {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = $.challenges[challengeId];\n\n    if ($.participantIndexPlusOne[challengeId][participant] != 0) {\n      revert IChallenges.AlreadyParticipating(challengeId, participant);\n    }\n\n    challenge.participants.push(participant);\n    $.participantIndexPlusOne[challengeId][participant] = challenge.participants.length;\n    $.participantStatus[challengeId][participant] = ChallengeTypes.ParticipantStatus.Joined;\n  }\n\n  function _removeParticipant(uint256 challengeId, address participant) private {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = $.challenges[challengeId];\n    uint256 indexPlusOne = $.participantIndexPlusOne[challengeId][participant];\n\n    if (indexPlusOne == 0) revert IChallenges.NotParticipating(challengeId, participant);\n\n    uint256 index = indexPlusOne - 1;\n    uint256 lastIndex = challenge.participants.length - 1;\n\n    // Swap-and-pop keeps participant removals O(1) while preserving the index mapping for the swapped account.\n    if (index != lastIndex) {\n      address swapped = challenge.participants[lastIndex];\n      challenge.participants[index] = swapped;\n      $.participantIndexPlusOne[challengeId][swapped] = index + 1;\n    }\n\n    challenge.participants.pop();\n    delete $.participantIndexPlusOne[challengeId][participant];\n  }\n\n  function _addInvited(uint256 challengeId, address invitee) private {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = $.challenges[challengeId];\n\n    if ($.invitedIndexPlusOne[challengeId][invitee] != 0) {\n      $.participantStatus[challengeId][invitee] = ChallengeTypes.ParticipantStatus.Invited;\n      return;\n    }\n\n    challenge.invited.push(invitee);\n    $.invitedIndexPlusOne[challengeId][invitee] = challenge.invited.length;\n    $.participantStatus[challengeId][invitee] = ChallengeTypes.ParticipantStatus.Invited;\n  }\n\n  function _addDeclined(uint256 challengeId, address invitee) private {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = $.challenges[challengeId];\n\n    if ($.declinedIndexPlusOne[challengeId][invitee] != 0) {\n      $.participantStatus[challengeId][invitee] = ChallengeTypes.ParticipantStatus.Declined;\n      return;\n    }\n\n    challenge.declined.push(invitee);\n    $.declinedIndexPlusOne[challengeId][invitee] = challenge.declined.length;\n    $.participantStatus[challengeId][invitee] = ChallengeTypes.ParticipantStatus.Declined;\n  }\n\n  function _removeFromInvitedIfPresent(uint256 challengeId, address invitee) private {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = $.challenges[challengeId];\n    uint256 indexPlusOne = $.invitedIndexPlusOne[challengeId][invitee];\n\n    if (indexPlusOne == 0) {\n      return;\n    }\n\n    uint256 index = indexPlusOne - 1;\n    uint256 lastIndex = challenge.invited.length - 1;\n\n    if (index != lastIndex) {\n      address swapped = challenge.invited[lastIndex];\n      challenge.invited[index] = swapped;\n      $.invitedIndexPlusOne[challengeId][swapped] = index + 1;\n    }\n\n    challenge.invited.pop();\n    delete $.invitedIndexPlusOne[challengeId][invitee];\n  }\n\n  function _removeFromDeclinedIfPresent(uint256 challengeId, address invitee) private {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = $.challenges[challengeId];\n    uint256 indexPlusOne = $.declinedIndexPlusOne[challengeId][invitee];\n\n    if (indexPlusOne == 0) {\n      return;\n    }\n\n    uint256 index = indexPlusOne - 1;\n    uint256 lastIndex = challenge.declined.length - 1;\n\n    if (index != lastIndex) {\n      address swapped = challenge.declined[lastIndex];\n      challenge.declined[index] = swapped;\n      $.declinedIndexPlusOne[challengeId][swapped] = index + 1;\n    }\n\n    challenge.declined.pop();\n    delete $.declinedIndexPlusOne[challengeId][invitee];\n  }\n\n  /// @dev Reverts with `NotVerifiedPerson` if `account` does not pass VeBetterPassport's `isPerson` check.\n  /// Used to gate participation actions (joining or auto-joining via stake challenge creation).\n  function _requirePerson(ChallengeStorageTypes.ChallengesStorage storage $, address account) private view {\n    (bool isPerson, string memory reason) = $.veBetterPassport.isPerson(account);\n    if (!isPerson) revert IChallenges.NotVerifiedPerson(account, reason);\n  }\n\n  function _isChallengeValid(ChallengeTypes.Challenge storage challenge) private view returns (bool) {\n    // Sponsored challenges are funded by the creator, while stake challenges need at least two stakers to compete.\n    uint256 minimumParticipants = challenge.kind == ChallengeTypes.ChallengeKind.Stake ? 2 : 1;\n    return challenge.participants.length >= minimumParticipants;\n  }\n\n  function _currentRound(ChallengeStorageTypes.ChallengesStorage storage $) private view returns (uint256) {\n    return $.xAllocationVoting.currentRoundId();\n  }\n\n  function _getChallenge(uint256 challengeId) private view returns (ChallengeTypes.Challenge storage challenge) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n\n    if (challengeId == 0 || challengeId > $.challengeCount) revert IChallenges.ChallengeDoesNotExist(challengeId);\n\n    challenge = $.challenges[challengeId];\n  }\n}\n"},"contracts/challenges/libraries/ChallengeSettlementLogic.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nimport { IChallenges } from \"../../interfaces/IChallenges.sol\";\nimport { ChallengeCoreLogic } from \"./ChallengeCoreLogic.sol\";\nimport { ChallengeStorageTypes } from \"./ChallengeStorageTypes.sol\";\nimport { ChallengeTypes } from \"./ChallengeTypes.sol\";\n\n/// @title ChallengeSettlementLogic Library\n/// @notice Handles challenge completion (Max Actions), Split Win first-to-claim, refunds, and action aggregation.\n/// @dev Two distinct settlement paths:\n/// - Max Actions: requires explicit `completeChallenge` after `endRound`, top scorers split the pool.\n/// - Split Win: no completion step. Joined participants race to `claimSplitWinPrize` while the challenge is active;\n///   the first `numWinners` to reach `threshold` actions claim a fixed `prizePerWinner`. After `endRound` the creator\n///   can reclaim any unclaimed slots via `claimCreatorSplitWinRefund`.\nlibrary ChallengeSettlementLogic {\n  /// @notice Emitted when a challenge transitions to Completed status.\n  /// @dev For Split Win the `bestScore` and `bestCount` fields are 0 and `settlementMode` is `SplitWinCompleted`.\n  event ChallengeCompleted(\n    uint256 indexed challengeId,\n    ChallengeTypes.SettlementMode settlementMode,\n    uint256 bestScore,\n    uint256 bestCount\n  );\n\n  /// @notice Emitted when an account claims a payout from a completed Max Actions challenge.\n  event ChallengePayoutClaimed(uint256 indexed challengeId, address indexed account, uint256 amount);\n\n  /// @notice Emitted when an account claims a refund from a cancelled or invalid challenge.\n  event ChallengeRefundClaimed(uint256 indexed challengeId, address indexed account, uint256 amount);\n\n  /// @notice Emitted when a participant claims a Split Win slot.\n  event SplitWinPrizeClaimed(\n    uint256 indexed challengeId,\n    address indexed winner,\n    uint256 prize,\n    uint256 actions,\n    uint256 winnersClaimed\n  );\n\n  /// @notice Emitted when the creator reclaims unclaimed Split Win slots after the end round.\n  event SplitWinCreatorRefunded(uint256 indexed challengeId, address indexed creator, uint256 amount);\n\n  /// @notice Completes a Max Actions challenge after its end round and computes the settlement mode.\n  /// @param challengeId Challenge identifier.\n  function completeChallenge(uint256 challengeId) public {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    // Split Win challenges are first-to-claim and never complete via this path.\n    if (challenge.challengeType == ChallengeTypes.ChallengeType.SplitWin) {\n      revert IChallenges.SplitWinCannotComplete(challengeId);\n    }\n\n    uint256 currentRound = $.xAllocationVoting.currentRoundId();\n    if (currentRound <= challenge.endRound) {\n      revert IChallenges.ChallengeNotEnded(challengeId, challenge.endRound, currentRound);\n    }\n\n    // Re-sync pending challenges so invalid or cancelled states cannot bypass settlement checks.\n    ChallengeTypes.ChallengeStatus status = ChallengeTypes.ChallengeStatus(ChallengeCoreLogic.syncChallenge(challengeId));\n    if (status == ChallengeTypes.ChallengeStatus.Invalid || status == ChallengeTypes.ChallengeStatus.Cancelled) {\n      revert IChallenges.ChallengeInvalidStatus(challengeId, status);\n    }\n    if (status == ChallengeTypes.ChallengeStatus.Completed) {\n      revert IChallenges.ChallengeAlreadyCompleted(challengeId);\n    }\n\n    // Pass 1: compute bestScore/bestCount over person-participants only. Sybils/blacklisted accounts are\n    // skipped so their actions never set the bar. Cache per-participant results so the second pass does\n    // not re-run the (potentially expensive) action sum.\n    uint256 participantsLen = challenge.participants.length;\n    uint256[] memory cachedActions = new uint256[](participantsLen);\n    bool[] memory isPersonCache = new bool[](participantsLen);\n    for (uint256 i; i < participantsLen; i++) {\n      address participant = challenge.participants[i];\n      (bool isPerson, ) = $.veBetterPassport.isPerson(participant);\n      if (!isPerson) continue;\n      isPersonCache[i] = true;\n      uint256 actions = _getParticipantActions(challenge, participant);\n      cachedActions[i] = actions;\n      _updateBestScore(challenge, actions);\n    }\n\n    // Pass 2: snapshot the eligible-winner set AND the count used as the payout divisor. Both are frozen\n    // at completion so neither the membership nor the share size can drift after the fact. Without the\n    // explicit `eligibleWinnerCount`, `_payoutRecipientCount` would have to fall back to `bestCount` —\n    // safe today only because the two are derived from the same filter, but a fragile coupling that\n    // historically stranded a per-winner share when a live personhood re-check blocked a counted winner.\n    if (challenge.bestCount > 0) {\n      uint256 bestScore = challenge.bestScore;\n      uint256 eligibleCount;\n      for (uint256 i; i < participantsLen; i++) {\n        if (isPersonCache[i] && cachedActions[i] == bestScore) {\n          $.isEligibleWinner[challengeId][challenge.participants[i]] = true;\n          eligibleCount++;\n        }\n      }\n      $.eligibleWinnerCount[challengeId] = eligibleCount;\n    }\n\n    challenge.settlementMode = challenge.bestCount == 0\n      ? ChallengeTypes.SettlementMode.CreatorRefund\n      : ChallengeTypes.SettlementMode.TopWinners;\n    challenge.status = ChallengeTypes.ChallengeStatus.Completed;\n\n    emit ChallengeCompleted(challengeId, challenge.settlementMode, challenge.bestScore, challenge.bestCount);\n  }\n\n  /// @notice Claims the caller's payout from a completed Max Actions challenge.\n  /// @param challengeId Challenge identifier.\n  /// @return amount Amount transferred to the caller.\n  function claimChallengePayout(uint256 challengeId) public returns (uint256 amount) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    // Split Win uses its own claim path.\n    if (challenge.challengeType == ChallengeTypes.ChallengeType.SplitWin) {\n      revert IChallenges.ChallengeInvalidStatus(challengeId, challenge.status);\n    }\n\n    if (challenge.status == ChallengeTypes.ChallengeStatus.Pending) {\n      ChallengeCoreLogic.syncChallenge(challengeId);\n    }\n\n    if (challenge.status != ChallengeTypes.ChallengeStatus.Completed) {\n      revert IChallenges.ChallengeInvalidStatus(challengeId, challenge.status);\n    }\n\n    if ($.hasClaimed[challengeId][msg.sender]) revert IChallenges.AlreadyClaimed(challengeId, msg.sender);\n\n    // The TopWinners branch reads `isEligibleWinner`, a snapshot frozen at completeChallenge time.\n    // It already encodes the personhood filter — no additional live `isPerson` check is needed (and adding\n    // one would re-open the bug where a snapshot-excluded account could later regain personhood and steal a\n    // slot that `bestCount` never accounted for).\n    if (!_isEligibleForPayout(challengeId, challenge, msg.sender)) {\n      revert IChallenges.NothingToClaim(challengeId, msg.sender);\n    }\n\n    uint256 recipientCount = _payoutRecipientCount(challengeId, challenge);\n    amount = _payoutAmount(challenge.totalPrize, recipientCount, challenge.payoutsClaimed);\n\n    $.hasClaimed[challengeId][msg.sender] = true;\n    challenge.payoutsClaimed++;\n\n    if (!$.b3tr.transfer(msg.sender, amount)) revert IChallenges.TransferFailed();\n\n    emit ChallengePayoutClaimed(challengeId, msg.sender, amount);\n  }\n\n  /// @notice Claims a Split Win slot during the active window.\n  /// @dev Reads passport actions live across `[startRound, min(currentRound, endRound)]`. First `numWinners` callers\n  /// to meet the threshold get one fixed `prizePerWinner` payout each. Once all slots are filled the challenge flips\n  /// to Completed.\n  /// @param challengeId Challenge identifier.\n  /// @return amount Amount transferred to the caller.\n  function claimSplitWinPrize(uint256 challengeId) public returns (uint256 amount) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    if (challenge.challengeType != ChallengeTypes.ChallengeType.SplitWin) {\n      revert IChallenges.NotASplitWinChallenge(challengeId);\n    }\n\n    if (challenge.status == ChallengeTypes.ChallengeStatus.Pending) {\n      ChallengeCoreLogic.syncChallenge(challengeId);\n    }\n\n    if (challenge.status != ChallengeTypes.ChallengeStatus.Active) {\n      revert IChallenges.ChallengeInvalidStatus(challengeId, challenge.status);\n    }\n\n    uint256 currentRound = $.xAllocationVoting.currentRoundId();\n    if (currentRound < challenge.startRound) {\n      revert IChallenges.ChallengeInvalidStatus(challengeId, challenge.status);\n    }\n    if (currentRound > challenge.endRound) {\n      revert IChallenges.ChallengeEnded(challengeId, challenge.endRound, currentRound);\n    }\n\n    if ($.participantStatus[challengeId][msg.sender] != ChallengeTypes.ParticipantStatus.Joined) {\n      revert IChallenges.NotParticipating(challengeId, msg.sender);\n    }\n\n    if ($.isSplitWinWinner[challengeId][msg.sender]) revert IChallenges.AlreadyClaimed(challengeId, msg.sender);\n\n    if (challenge.winners.length >= challenge.numWinners) {\n      revert IChallenges.SplitWinSlotsExhausted(challengeId);\n    }\n\n    // Block sybils/blacklisted accounts from grabbing Split Win slots.\n    _requirePerson($, msg.sender);\n\n    uint256 actions = _getParticipantActionsUpTo(challenge, msg.sender, currentRound);\n    if (actions < challenge.threshold) {\n      revert IChallenges.NotEligibleForSplitWin(challengeId, msg.sender, actions, challenge.threshold);\n    }\n\n    amount = challenge.prizePerWinner;\n    challenge.winners.push(msg.sender);\n    $.isSplitWinWinner[challengeId][msg.sender] = true;\n\n    if (!$.b3tr.transfer(msg.sender, amount)) revert IChallenges.TransferFailed();\n\n    emit SplitWinPrizeClaimed(challengeId, msg.sender, amount, actions, challenge.winners.length);\n\n    // Auto-complete once every slot is taken so downstream consumers see a terminal state.\n    if (challenge.winners.length == challenge.numWinners) {\n      challenge.status = ChallengeTypes.ChallengeStatus.Completed;\n      challenge.settlementMode = ChallengeTypes.SettlementMode.SplitWinCompleted;\n      emit ChallengeCompleted(challengeId, challenge.settlementMode, 0, 0);\n    }\n  }\n\n  /// @notice Reclaims unclaimed Split Win slots after the end round.\n  /// @dev Only the creator can call. Pays `(numWinners - winnersClaimed) * prizePerWinner` plus any integer-division\n  /// remainder retained at creation. Sets status to Completed if not already.\n  /// @param challengeId Challenge identifier.\n  /// @return amount Amount transferred to the creator.\n  function claimCreatorSplitWinRefund(uint256 challengeId) public returns (uint256 amount) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    if (challenge.challengeType != ChallengeTypes.ChallengeType.SplitWin) {\n      revert IChallenges.NotASplitWinChallenge(challengeId);\n    }\n    if (msg.sender != challenge.creator) revert IChallenges.ChallengesUnauthorizedUser(msg.sender);\n\n    if (challenge.status == ChallengeTypes.ChallengeStatus.Pending) {\n      ChallengeCoreLogic.syncChallenge(challengeId);\n    }\n\n    if (\n      challenge.status != ChallengeTypes.ChallengeStatus.Active &&\n      challenge.status != ChallengeTypes.ChallengeStatus.Completed\n    ) {\n      revert IChallenges.ChallengeInvalidStatus(challengeId, challenge.status);\n    }\n\n    uint256 currentRound = $.xAllocationVoting.currentRoundId();\n    if (currentRound <= challenge.endRound) {\n      revert IChallenges.ChallengeNotEnded(challengeId, challenge.endRound, currentRound);\n    }\n\n    if ($.hasRefunded[challengeId][msg.sender]) revert IChallenges.AlreadyRefunded(challengeId, msg.sender);\n\n    // Total = unclaimed slots + integer-division remainder retained at creation.\n    uint256 unclaimedSlots = challenge.numWinners - challenge.winners.length;\n    if (unclaimedSlots == 0) revert IChallenges.NothingToRefund(challengeId, msg.sender);\n\n    uint256 paidOut = challenge.prizePerWinner * challenge.winners.length;\n    amount = challenge.totalPrize - paidOut;\n\n    $.hasRefunded[challengeId][msg.sender] = true;\n\n    if (challenge.status == ChallengeTypes.ChallengeStatus.Active) {\n      challenge.status = ChallengeTypes.ChallengeStatus.Completed;\n      challenge.settlementMode = ChallengeTypes.SettlementMode.SplitWinCompleted;\n      emit ChallengeCompleted(challengeId, challenge.settlementMode, 0, 0);\n    }\n\n    if (!$.b3tr.transfer(msg.sender, amount)) revert IChallenges.TransferFailed();\n\n    emit SplitWinCreatorRefunded(challengeId, msg.sender, amount);\n  }\n\n  /// @notice Claims the caller's refund from a cancelled or invalid challenge.\n  /// @param challengeId Challenge identifier.\n  /// @return amount Amount transferred to the caller.\n  function claimChallengeRefund(uint256 challengeId) public returns (uint256 amount) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n\n    if (challenge.status == ChallengeTypes.ChallengeStatus.Pending) {\n      ChallengeCoreLogic.syncChallenge(challengeId);\n    }\n\n    if (challenge.status != ChallengeTypes.ChallengeStatus.Cancelled && challenge.status != ChallengeTypes.ChallengeStatus.Invalid) {\n      revert IChallenges.ChallengeInvalidStatus(challengeId, challenge.status);\n    }\n\n    if ($.hasRefunded[challengeId][msg.sender]) revert IChallenges.AlreadyRefunded(challengeId, msg.sender);\n\n    amount = _refundAmount(challengeId, challenge, msg.sender);\n    if (amount == 0) revert IChallenges.NothingToRefund(challengeId, msg.sender);\n\n    $.hasRefunded[challengeId][msg.sender] = true;\n\n    if (!$.b3tr.transfer(msg.sender, amount)) revert IChallenges.TransferFailed();\n\n    emit ChallengeRefundClaimed(challengeId, msg.sender, amount);\n  }\n\n  /// @notice Returns the actions counted for a participant within the challenge scope.\n  /// @param challengeId Challenge identifier.\n  /// @param participant Participant address.\n  /// @return Number of counted actions.\n  function getParticipantActions(uint256 challengeId, address participant) public view returns (uint256) {\n    ChallengeTypes.Challenge storage challenge = _getChallenge(challengeId);\n    return _getParticipantActions(challenge, participant);\n  }\n\n  /// @dev Reverts with `NotVerifiedPerson` if `account` does not pass VeBetterPassport's `isPerson` check.\n  /// Used to gate quest-reward claims (Max Actions top-winner payout and Split Win slot claim).\n  function _requirePerson(ChallengeStorageTypes.ChallengesStorage storage $, address account) private view {\n    (bool isPerson, string memory reason) = $.veBetterPassport.isPerson(account);\n    if (!isPerson) revert IChallenges.NotVerifiedPerson(account, reason);\n  }\n\n  function _updateBestScore(ChallengeTypes.Challenge storage challenge, uint256 actions) private {\n    if (challenge.bestCount == 0 || actions > challenge.bestScore) {\n      challenge.bestScore = actions;\n      challenge.bestCount = 1;\n      return;\n    }\n\n    if (actions == challenge.bestScore) {\n      challenge.bestCount++;\n    }\n  }\n\n  function _isEligibleForPayout(\n    uint256 challengeId,\n    ChallengeTypes.Challenge storage challenge,\n    address account\n  ) private view returns (bool) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n\n    if (challenge.settlementMode == ChallengeTypes.SettlementMode.CreatorRefund) {\n      return account == challenge.creator;\n    }\n\n    // Read the snapshot taken at completeChallenge time. The actions == bestScore comparison and the\n    // personhood filter were both applied then; re-evaluating either one live would let the claimable\n    // set drift away from `bestCount` (see `completeChallenge` for the rationale).\n    return $.isEligibleWinner[challengeId][account];\n  }\n\n  function _refundAmount(\n    uint256 challengeId,\n    ChallengeTypes.Challenge storage challenge,\n    address account\n  ) private view returns (uint256) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n\n    if (challenge.kind == ChallengeTypes.ChallengeKind.Stake) {\n      return $.participantStatus[challengeId][account] == ChallengeTypes.ParticipantStatus.Joined ? challenge.stakeAmount : 0;\n    }\n\n    return account == challenge.creator ? challenge.totalPrize : 0;\n  }\n\n  function _payoutRecipientCount(\n    uint256 challengeId,\n    ChallengeTypes.Challenge storage challenge\n  ) private view returns (uint256) {\n    if (challenge.settlementMode == ChallengeTypes.SettlementMode.CreatorRefund) {\n      return 1;\n    }\n    // Bind the divisor to the snapshot: anything else (including `bestCount`) re-opens the door to\n    // diverging from the claimable membership and stranding a per-winner share in the contract.\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    return $.eligibleWinnerCount[challengeId];\n  }\n\n  function _payoutAmount(\n    uint256 totalPrize,\n    uint256 recipientCount,\n    uint256 payoutsClaimed\n  ) private pure returns (uint256) {\n    uint256 baseShare = totalPrize / recipientCount;\n\n    // Leave any division remainder to the last claimant so the full prize is eventually distributed without dust.\n    if (payoutsClaimed + 1 == recipientCount) {\n      return totalPrize - (baseShare * (recipientCount - 1));\n    }\n\n    return baseShare;\n  }\n\n  function _getParticipantActions(\n    ChallengeTypes.Challenge storage challenge,\n    address participant\n  ) private view returns (uint256 totalActions) {\n    return _getParticipantActionsUpTo(challenge, participant, challenge.endRound);\n  }\n\n  /// @dev Sums passport actions for `participant` over `[startRound, min(upToRound, endRound)]`.\n  /// `upToRound` lets Split Win read live progress mid-challenge while keeping completed/Max Actions reads on the\n  /// full window.\n  function _getParticipantActionsUpTo(\n    ChallengeTypes.Challenge storage challenge,\n    address participant,\n    uint256 upToRound\n  ) private view returns (uint256 totalActions) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n    uint256 lastRound = upToRound > challenge.endRound ? challenge.endRound : upToRound;\n\n    if (lastRound < challenge.startRound) return 0;\n\n    if (challenge.allApps) {\n      for (uint256 round = challenge.startRound; round <= lastRound; round++) {\n        totalActions += $.veBetterPassport.userRoundActionCount(participant, round);\n      }\n      return totalActions;\n    }\n\n    for (uint256 round = challenge.startRound; round <= lastRound; round++) {\n      for (uint256 i; i < challenge.appIds.length; i++) {\n        totalActions += $.veBetterPassport.userRoundActionCountApp(participant, round, challenge.appIds[i]);\n      }\n    }\n  }\n\n  function _getChallenge(uint256 challengeId) private view returns (ChallengeTypes.Challenge storage challenge) {\n    ChallengeStorageTypes.ChallengesStorage storage $ = ChallengeStorageTypes.getChallengesStorage();\n\n    if (challengeId == 0 || challengeId > $.challengeCount) revert IChallenges.ChallengeDoesNotExist(challengeId);\n\n    challenge = $.challenges[challengeId];\n  }\n}\n"},"contracts/challenges/libraries/ChallengeStorageTypes.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nimport { IB3TR } from \"../../interfaces/IB3TR.sol\";\nimport { IVeBetterPassport } from \"../../interfaces/IVeBetterPassport.sol\";\nimport { IXAllocationVotingGovernor } from \"../../interfaces/IXAllocationVotingGovernor.sol\";\nimport { IX2EarnApps } from \"../../interfaces/IX2EarnApps.sol\";\nimport { ChallengeTypes } from \"./ChallengeTypes.sol\";\n\nlibrary ChallengeStorageTypes {\n  /// @custom:storage-location erc7201:b3tr.storage.Challenges\n  struct ChallengesStorage {\n    IB3TR b3tr;\n    IVeBetterPassport veBetterPassport;\n    IXAllocationVotingGovernor xAllocationVoting;\n    IX2EarnApps x2EarnApps;\n    uint256 maxChallengeDuration;\n    uint256 maxSelectedApps;\n    uint256 challengeCount;\n    uint256 maxParticipants;\n    mapping(uint256 challengeId => ChallengeTypes.Challenge challenge) challenges;\n    mapping(uint256 challengeId => mapping(address account => ChallengeTypes.ParticipantStatus status)) participantStatus;\n    mapping(uint256 challengeId => mapping(address account => bool eligible)) invitationEligible;\n    mapping(uint256 challengeId => mapping(address account => uint256 indexPlusOne)) participantIndexPlusOne;\n    mapping(uint256 challengeId => mapping(address account => uint256 indexPlusOne)) invitedIndexPlusOne;\n    mapping(uint256 challengeId => mapping(address account => uint256 indexPlusOne)) declinedIndexPlusOne;\n    mapping(uint256 challengeId => mapping(address account => bool claimed)) hasClaimed;\n    mapping(uint256 challengeId => mapping(address account => bool refunded)) hasRefunded;\n    uint256 minBetAmount;\n    mapping(uint256 challengeId => mapping(address account => bool isWinner)) isSplitWinWinner;\n    // Snapshot of MaxActions winners chosen at `completeChallenge` time: person AND actions == bestScore.\n    // Frozen at completion so the claimable set size always equals `eligibleWinnerCount`, even if a\n    // participant's personhood verdict changes afterwards (otherwise a non-person at completion who later\n    // becomes a person could claim a slot that `recipientCount` never accounted for, draining the pot).\n    // MUST stay at the end of the struct — appended in V2.\n    mapping(uint256 challengeId => mapping(address account => bool eligible)) isEligibleWinner;\n    // Companion counter for `isEligibleWinner`. Used by `_payoutRecipientCount` so the payout divisor is\n    // bound to the actual claimable set — not to `bestCount`, which is a tally of the top-scoring person\n    // participants and stays useful for indexers/events but is no longer the source of truth for payouts.\n    // MUST stay at the end of the struct — appended in V2.\n    mapping(uint256 challengeId => uint256 count) eligibleWinnerCount;\n  }\n\n  // keccak256(abi.encode(uint256(keccak256(\"b3tr.storage.Challenges\")) - 1)) & ~bytes32(uint256(0xff))\n  bytes32 private constant ChallengesStorageLocation =\n    0x4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d100;\n\n  function getChallengesStorage() internal pure returns (ChallengesStorage storage $) {\n    assembly {\n      $.slot := ChallengesStorageLocation\n    }\n  }\n}\n"},"contracts/challenges/libraries/ChallengeTypes.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nlibrary ChallengeTypes {\n  enum ChallengeKind {\n    Stake,\n    Sponsored\n  }\n\n  enum ChallengeVisibility {\n    Public,\n    Private\n  }\n\n  /// @notice Discriminates the two challenge mechanics.\n  /// - `MaxActions`: capped participant pool, top scorer wins after completion.\n  /// - `SplitWin`: uncapped participants, sponsored only, first-to-claim wins one of `numWinners` slots.\n  enum ChallengeType {\n    MaxActions,\n    SplitWin\n  }\n\n  enum ChallengeStatus {\n    Pending,\n    Active,\n    Completed,\n    Cancelled,\n    Invalid\n  }\n\n  enum SettlementMode {\n    None,\n    TopWinners,\n    CreatorRefund,\n    SplitWinCompleted\n  }\n\n  enum ParticipantStatus {\n    None,\n    Invited,\n    Declined,\n    Joined\n  }\n\n  struct CreateChallengeParams {\n    ChallengeKind kind;\n    ChallengeVisibility visibility;\n    ChallengeType challengeType;\n    uint256 stakeAmount;\n    uint256 startRound;\n    uint256 endRound;\n    uint256 threshold;\n    uint256 numWinners;\n    bytes32[] appIds;\n    address[] invitees;\n    string title;\n    string description;\n    string imageURI;\n    string metadataURI;\n  }\n\n  struct InitializationData {\n    address b3trAddress;\n    address veBetterPassportAddress;\n    address xAllocationVotingAddress;\n    address x2EarnAppsAddress;\n    uint256 maxChallengeDuration;\n    uint256 maxSelectedApps;\n    uint256 maxParticipants;\n    uint256 minBetAmount;\n  }\n\n  struct InitializationRoleData {\n    address admin;\n    address upgrader;\n    address contractsAddressManager;\n    address settingsManager;\n  }\n\n  struct Challenge {\n    // Slot 0: 5 enum (5B) + bool (1B) + address (20B) = 26/32B packed\n    ChallengeKind kind;\n    ChallengeVisibility visibility;\n    ChallengeType challengeType;\n    ChallengeStatus status;\n    SettlementMode settlementMode;\n    bool allApps;\n    address creator;\n    uint256 stakeAmount;\n    uint256 startRound;\n    uint256 endRound;\n    uint256 threshold;\n    uint256 numWinners;\n    uint256 prizePerWinner;\n    uint256 totalPrize;\n    uint256 bestScore;\n    uint256 bestCount;\n    uint256 payoutsClaimed;\n    address[] participants;\n    address[] invited;\n    address[] declined;\n    address[] winners;\n    bytes32[] appIds;\n    string title;\n    string description;\n    string imageURI;\n    string metadataURI;\n  }\n\n  struct ChallengeView {\n    uint256 challengeId;\n    ChallengeKind kind;\n    ChallengeVisibility visibility;\n    ChallengeType challengeType;\n    ChallengeStatus status;\n    SettlementMode settlementMode;\n    address creator;\n    uint256 stakeAmount;\n    uint256 startRound;\n    uint256 endRound;\n    uint256 duration;\n    uint256 threshold;\n    uint256 numWinners;\n    uint256 winnersClaimed;\n    uint256 prizePerWinner;\n    bool allApps;\n    uint256 totalPrize;\n    uint256 participantCount;\n    uint256 invitedCount;\n    uint256 declinedCount;\n    uint256 selectedAppsCount;\n    uint256 winnersCount;\n    uint256 bestScore;\n    uint256 bestCount;\n    uint256 payoutsClaimed;\n    string title;\n    string description;\n    string imageURI;\n    string metadataURI;\n  }\n}\n"},"contracts/interfaces/IB3TR.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.20;\n\ninterface IB3TR {\n  error AccessControlBadConfirmation();\n\n  error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n  error ERC20ExceededCap(uint256 increasedSupply, uint256 cap);\n\n  error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n  error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n  error ERC20InvalidApprover(address approver);\n\n  error ERC20InvalidCap(uint256 cap);\n\n  error ERC20InvalidReceiver(address receiver);\n\n  error ERC20InvalidSender(address sender);\n\n  error ERC20InvalidSpender(address spender);\n\n  error EnforcedPause();\n\n  error ExpectedPause();\n\n  event Approval(address indexed owner, address indexed spender, uint256 value);\n\n  event Paused(address account);\n\n  event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n  event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n  event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n  event Transfer(address indexed from, address indexed to, uint256 value);\n\n  event Unpaused(address account);\n\n  function DEFAULT_ADMIN_ROLE() external view returns (bytes32);\n\n  function MINTER_ROLE() external view returns (bytes32);\n\n  function allowance(address owner, address spender) external view returns (uint256);\n\n  function approve(address spender, uint256 value) external returns (bool);\n\n  function balanceOf(address account) external view returns (uint256);\n\n  function cap() external view returns (uint256);\n\n  function decimals() external view returns (uint8);\n\n  function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n  function grantRole(bytes32 role, address account) external;\n\n  function hasRole(bytes32 role, address account) external view returns (bool);\n\n  function mint(address to, uint256 amount) external;\n\n  function name() external view returns (string memory);\n\n  function pause() external;\n\n  function paused() external view returns (bool);\n\n  function renounceRole(bytes32 role, address callerConfirmation) external;\n\n  function revokeRole(bytes32 role, address account) external;\n\n  function supportsInterface(bytes4 interfaceId) external view returns (bool);\n\n  function symbol() external view returns (string memory);\n\n  function tokenDetails() external view returns (string memory, string memory, uint8, uint256, uint256);\n\n  function totalSupply() external view returns (uint256);\n\n  function transfer(address to, uint256 value) external returns (bool);\n\n  function transferFrom(address from, address to, uint256 value) external returns (bool);\n\n  function unpause() external;\n}\n"},"contracts/interfaces/IChallenges.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nimport { ChallengeTypes } from \"../challenges/libraries/ChallengeTypes.sol\";\n\n/// @title B3TRChallenges Interface\n/// @notice External interface for creating, joining, settling, and administering B3TR challenges.\n/// @dev Lifecycle and settlement events emitted from the challenge libraries are declared here as well so the main\n/// contract ABI remains complete for docs, tests, and indexers.\ninterface IChallenges {\n  // ---------- Errors ---------- //\n  error ZeroAddress();\n  error InvalidAmount();\n  error BetAmountBelowMinimum(uint256 provided, uint256 minimum);\n  error InvalidStartRound(uint256 startRound, uint256 currentRound);\n  error InvalidEndRound(uint256 startRound, uint256 endRound);\n  error InvalidChallengeTypeForCombo();\n  error InvalidTypeConfiguration();\n  error InsufficientPrizePerWinner(uint256 stakeAmount, uint256 numWinners, uint256 minPrizePerWinner);\n  error ThresholdTooHigh(uint256 provided, uint256 maximum);\n  error TitleTooLong(uint256 provided, uint256 maximum);\n  error DescriptionTooLong(uint256 provided, uint256 maximum);\n  error ImageURITooLong(uint256 provided, uint256 maximum);\n  error MetadataURITooLong(uint256 provided, uint256 maximum);\n  error MaxChallengeDurationExceeded(uint256 provided, uint256 maximum);\n  error MaxSelectedAppsExceeded(uint256 provided, uint256 maximum);\n  error MaxParticipantsExceeded(uint256 provided, uint256 maximum);\n  error ChallengeDoesNotExist(uint256 challengeId);\n  error ChallengeUnknownApp(bytes32 appId);\n  error DuplicateApp(bytes32 appId);\n  error ChallengeNotPending(uint256 challengeId);\n  error ChallengeNotEnded(uint256 challengeId, uint256 endRound, uint256 currentRound);\n  error ChallengeEnded(uint256 challengeId, uint256 endRound, uint256 currentRound);\n  error ChallengeAlreadyCompleted(uint256 challengeId);\n  error ChallengeInvalidStatus(uint256 challengeId, ChallengeTypes.ChallengeStatus status);\n  error CreatorCannotJoin(uint256 challengeId);\n  error CreatorCannotLeave(uint256 challengeId);\n  error AlreadyParticipating(uint256 challengeId, address participant);\n  error NotParticipating(uint256 challengeId, address participant);\n  error NotInvited(uint256 challengeId, address participant);\n  error NothingToClaim(uint256 challengeId, address account);\n  error NothingToRefund(uint256 challengeId, address account);\n  error AlreadyClaimed(uint256 challengeId, address account);\n  error AlreadyRefunded(uint256 challengeId, address account);\n  error AlreadyInvited(uint256 challengeId, address invitee);\n  error TransferFailed();\n  error InsufficientWithdrawableFunds(uint256 available, uint256 requested);\n  error ChallengesUnauthorizedUser(address user);\n  error SplitWinCannotComplete(uint256 challengeId);\n  error SplitWinSlotsExhausted(uint256 challengeId);\n  error NotEligibleForSplitWin(uint256 challengeId, address account, uint256 actions, uint256 threshold);\n  error NotASplitWinChallenge(uint256 challengeId);\n  /// @notice Thrown when an account fails the VeBetterPassport personhood check on a participation or claim path.\n  /// @param account Address that failed the personhood check.\n  /// @param reason Reason returned by VeBetterPassport (e.g. \"User is blacklisted\").\n  error NotVerifiedPerson(address account, string reason);\n\n  // ---------- Events ---------- //\n\n  /// @notice Emitted when the B3TR token address used by challenges is updated.\n  /// @param oldAddress Previous B3TR token address.\n  /// @param newAddress New B3TR token address.\n  event B3TRAddressUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /// @notice Emitted when the VeBetterPassport address used for action accounting is updated.\n  /// @param oldAddress Previous VeBetterPassport address.\n  /// @param newAddress New VeBetterPassport address.\n  event VeBetterPassportAddressUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /// @notice Emitted when the XAllocationVoting governor address is updated.\n  /// @param oldAddress Previous XAllocationVoting governor address.\n  /// @param newAddress New XAllocationVoting governor address.\n  event XAllocationVotingAddressUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /// @notice Emitted when the X2EarnApps registry address is updated.\n  /// @param oldAddress Previous X2EarnApps registry address.\n  /// @param newAddress New X2EarnApps registry address.\n  event X2EarnAppsAddressUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /// @notice Emitted when the maximum challenge duration is updated.\n  /// @param oldValue Previous maximum duration, in rounds.\n  /// @param newValue New maximum duration, in rounds.\n  event MaxChallengeDurationUpdated(uint256 oldValue, uint256 newValue);\n\n  /// @notice Emitted when the maximum number of explicit apps per challenge is updated.\n  /// @param oldValue Previous maximum app count.\n  /// @param newValue New maximum app count.\n  event MaxSelectedAppsUpdated(uint256 oldValue, uint256 newValue);\n\n  /// @notice Emitted when the maximum number of participants per Max Actions challenge is updated.\n  /// @param oldValue Previous maximum participant count.\n  /// @param newValue New maximum participant count.\n  event MaxParticipantsUpdated(uint256 oldValue, uint256 newValue);\n\n  /// @notice Emitted when the minimum stake or sponsored prize amount is updated.\n  /// @param oldValue Previous minimum B3TR amount.\n  /// @param newValue New minimum B3TR amount.\n  event MinBetAmountUpdated(uint256 oldValue, uint256 newValue);\n\n  /// @notice Emitted when an admin withdraws B3TR from the contract.\n  /// @param admin Address that performed the withdrawal.\n  /// @param recipient Address that received the withdrawn tokens.\n  /// @param amount Amount withdrawn.\n  event AdminWithdrawal(address indexed admin, address indexed recipient, uint256 amount);\n\n  /// @notice Emitted when a challenge is created and funded.\n  /// @dev Split Win-specific configuration (numWinners, prizePerWinner) is emitted right after via\n  /// `SplitWinConfigured` to keep this event signature within Solidity stack limits.\n  /// @param challengeId Newly created challenge identifier.\n  /// @param creator Address that created the challenge.\n  /// @param endRound Last round whose actions count toward the challenge.\n  /// @param kind Challenge funding model.\n  /// @param visibility Challenge participation mode.\n  /// @param challengeType Challenge mechanic (Max Actions or Split Win).\n  /// @param stakeAmount Amount locked at creation and required from each joining participant in stake challenges.\n  /// @param startRound First round whose actions count toward the challenge.\n  /// @param threshold Minimum action threshold required to claim a Split Win slot (0 for Max Actions).\n  /// @param allApps True when actions from all apps count, false when only `selectedApps` count.\n  /// @param selectedApps Explicit app allowlist when `allApps` is false.\n  /// @param title Human-readable challenge title.\n  /// @param description Human-readable challenge description.\n  /// @param imageURI Optional image URI.\n  /// @param metadataURI Optional metadata URI.\n  event ChallengeCreated(\n    uint256 indexed challengeId,\n    address indexed creator,\n    uint256 indexed endRound,\n    ChallengeTypes.ChallengeKind kind,\n    ChallengeTypes.ChallengeVisibility visibility,\n    ChallengeTypes.ChallengeType challengeType,\n    uint256 stakeAmount,\n    uint256 startRound,\n    uint256 threshold,\n    bool allApps,\n    bytes32[] selectedApps,\n    string title,\n    string description,\n    string imageURI,\n    string metadataURI\n  );\n\n  /// @notice Emitted immediately after `ChallengeCreated` for Split Win challenges only.\n  /// @param challengeId Newly created challenge identifier.\n  /// @param numWinners Number of Split Win slots (creator-defined).\n  /// @param prizePerWinner Locked-at-creation per-slot prize (`stakeAmount / numWinners`).\n  event SplitWinConfigured(uint256 indexed challengeId, uint256 numWinners, uint256 prizePerWinner);\n\n  /// @notice Emitted when an invitee is added to a challenge.\n  /// @param challengeId Challenge identifier.\n  /// @param invitee Address that was invited.\n  event ChallengeInviteAdded(uint256 indexed challengeId, address indexed invitee);\n\n  /// @notice Emitted when a participant joins a challenge.\n  /// @param challengeId Challenge identifier.\n  /// @param participant Address that joined.\n  event ChallengeJoined(uint256 indexed challengeId, address indexed participant);\n\n  /// @notice Emitted when a participant leaves a challenge before it starts.\n  /// @param challengeId Challenge identifier.\n  /// @param participant Address that left.\n  event ChallengeLeft(uint256 indexed challengeId, address indexed participant);\n\n  /// @notice Emitted when an invitee declines a challenge.\n  /// @param challengeId Challenge identifier.\n  /// @param participant Address that declined.\n  event ChallengeDeclined(uint256 indexed challengeId, address indexed participant);\n\n  /// @notice Emitted when the creator cancels a pending challenge.\n  /// @param challengeId Challenge identifier.\n  event ChallengeCancelled(uint256 indexed challengeId);\n\n  /// @notice Emitted when a pending challenge becomes active.\n  /// @param challengeId Challenge identifier.\n  event ChallengeActivated(uint256 indexed challengeId);\n\n  /// @notice Emitted when a pending challenge becomes invalid at start time.\n  /// @param challengeId Challenge identifier.\n  event ChallengeInvalidated(uint256 indexed challengeId);\n\n  /// @notice Emitted when a challenge transitions to Completed status.\n  /// @dev For Split Win the `bestScore` and `bestCount` fields are 0 and `settlementMode` is `SplitWinCompleted`.\n  /// @param challengeId Challenge identifier.\n  /// @param settlementMode Settlement mode selected for payout or refund.\n  /// @param bestScore Highest participant action score recorded (Max Actions only).\n  /// @param bestCount Number of participants tied for `bestScore` (Max Actions only).\n  event ChallengeCompleted(\n    uint256 indexed challengeId,\n    ChallengeTypes.SettlementMode settlementMode,\n    uint256 bestScore,\n    uint256 bestCount\n  );\n\n  /// @notice Emitted when a payout is claimed from a completed Max Actions challenge.\n  /// @param challengeId Challenge identifier.\n  /// @param account Recipient of the payout.\n  /// @param amount Amount transferred.\n  event ChallengePayoutClaimed(uint256 indexed challengeId, address indexed account, uint256 amount);\n\n  /// @notice Emitted when a refund is claimed from a cancelled or invalid challenge.\n  /// @param challengeId Challenge identifier.\n  /// @param account Recipient of the refund.\n  /// @param amount Amount transferred.\n  event ChallengeRefundClaimed(uint256 indexed challengeId, address indexed account, uint256 amount);\n\n  /// @notice Emitted when a participant claims a Split Win slot.\n  /// @param challengeId Challenge identifier.\n  /// @param winner Address that secured the slot.\n  /// @param prize Locked per-winner prize transferred.\n  /// @param actions Action count recorded at claim time.\n  /// @param winnersClaimed Cumulative number of slots claimed including this one.\n  event SplitWinPrizeClaimed(\n    uint256 indexed challengeId,\n    address indexed winner,\n    uint256 prize,\n    uint256 actions,\n    uint256 winnersClaimed\n  );\n\n  /// @notice Emitted when the creator reclaims unclaimed Split Win slots after the end round.\n  /// @param challengeId Challenge identifier.\n  /// @param creator Challenge creator.\n  /// @param amount Amount transferred (unclaimed slots * prizePerWinner + integer-division remainder).\n  event SplitWinCreatorRefunded(uint256 indexed challengeId, address indexed creator, uint256 amount);\n\n  // ---------- Functions ---------- //\n\n  /// @notice Initializes the challenge contract.\n  /// @param data Initial contract addresses and challenge limits.\n  /// @param roles Role assignments for the proxy instance.\n  function initialize(\n    ChallengeTypes.InitializationData calldata data,\n    ChallengeTypes.InitializationRoleData calldata roles\n  ) external;\n\n  /// @notice Returns the current implementation version.\n  /// @return Current implementation version string.\n  function version() external pure returns (string memory);\n\n  /// @notice Returns the total number of created challenges.\n  /// @return Number of created challenges.\n  function challengeCount() external view returns (uint256);\n\n  /// @notice Returns the maximum duration allowed for a challenge.\n  /// @return Maximum challenge duration, in rounds.\n  function maxChallengeDuration() external view returns (uint256);\n\n  /// @notice Returns the maximum number of explicit apps allowed in a challenge.\n  /// @return Maximum selected app count.\n  function maxSelectedApps() external view returns (uint256);\n\n  /// @notice Returns the maximum number of participants allowed in a Max Actions challenge.\n  /// @return Maximum participant count.\n  function maxParticipants() external view returns (uint256);\n\n  /// @notice Returns the minimum B3TR amount allowed for challenge funding.\n  /// @return Minimum stake or sponsored prize amount.\n  function minBetAmount() external view returns (uint256);\n\n  /// @notice Returns a full challenge view with derived counters and status.\n  /// @param challengeId Challenge identifier.\n  /// @return Challenge data plus derived lifecycle and participation fields.\n  function getChallenge(uint256 challengeId) external view returns (ChallengeTypes.ChallengeView memory);\n\n  /// @notice Returns the current challenge status.\n  /// @param challengeId Challenge identifier.\n  /// @return Current status for the challenge.\n  function getChallengeStatus(uint256 challengeId) external view returns (ChallengeTypes.ChallengeStatus);\n\n  /// @notice Returns the current participants of a challenge.\n  /// @param challengeId Challenge identifier.\n  /// @return Participant addresses.\n  function getChallengeParticipants(uint256 challengeId) external view returns (address[] memory);\n\n  /// @notice Returns the accounts currently marked as invited for a challenge.\n  /// @param challengeId Challenge identifier.\n  /// @return Invited addresses.\n  function getChallengeInvited(uint256 challengeId) external view returns (address[] memory);\n\n  /// @notice Returns the accounts that declined a challenge invitation.\n  /// @param challengeId Challenge identifier.\n  /// @return Declined addresses.\n  function getChallengeDeclined(uint256 challengeId) external view returns (address[] memory);\n\n  /// @notice Returns the explicit app allowlist for a challenge.\n  /// @param challengeId Challenge identifier.\n  /// @return Explicit app ids used by the challenge.\n  function getChallengeSelectedApps(uint256 challengeId) external view returns (bytes32[] memory);\n\n  /// @notice Returns the ordered list of Split Win winners (claim order).\n  /// @param challengeId Challenge identifier.\n  /// @return Winner addresses in claim order; empty for Max Actions challenges.\n  function getChallengeWinners(uint256 challengeId) external view returns (address[] memory);\n\n  /// @notice Returns the current participant status for an account.\n  /// @param challengeId Challenge identifier.\n  /// @param account Account to query.\n  /// @return Participant status for the account.\n  function getParticipantStatus(\n    uint256 challengeId,\n    address account\n  ) external view returns (ChallengeTypes.ParticipantStatus);\n\n  /// @notice Returns whether an account is eligible to join or be re-invited to a challenge.\n  /// @param challengeId Challenge identifier.\n  /// @param account Account to query.\n  /// @return True if the account is marked as invitation-eligible.\n  function isInvitationEligible(uint256 challengeId, address account) external view returns (bool);\n\n  /// @notice Returns whether an account has already claimed a Split Win slot.\n  /// @param challengeId Challenge identifier.\n  /// @param account Account to query.\n  /// @return True if the account is in the winners list.\n  function isSplitWinWinner(uint256 challengeId, address account) external view returns (bool);\n\n  /// @notice Returns the total counted actions for a participant across the challenge scope.\n  /// @param challengeId Challenge identifier.\n  /// @param participant Participant address to query.\n  /// @return Total counted actions.\n  function getParticipantActions(uint256 challengeId, address participant) external view returns (uint256);\n\n  /// @notice Creates and funds a new challenge.\n  /// @dev If `params.startRound` is zero, the next round is used.\n  /// @param params Challenge creation payload.\n  /// @return Newly created challenge identifier.\n  function createChallenge(ChallengeTypes.CreateChallengeParams calldata params) external returns (uint256);\n\n  /// @notice Adds new invitees to a pending challenge.\n  /// @param challengeId Challenge identifier.\n  /// @param invitees Accounts to invite.\n  function addInvites(uint256 challengeId, address[] calldata invitees) external;\n\n  /// @notice Joins a pending challenge.\n  /// @param challengeId Challenge identifier.\n  function joinChallenge(uint256 challengeId) external;\n\n  /// @notice Leaves a pending challenge before it starts.\n  /// @param challengeId Challenge identifier.\n  function leaveChallenge(uint256 challengeId) external;\n\n  /// @notice Declines a challenge invitation.\n  /// @param challengeId Challenge identifier.\n  function declineChallenge(uint256 challengeId) external;\n\n  /// @notice Cancels a pending challenge.\n  /// @param challengeId Challenge identifier.\n  function cancelChallenge(uint256 challengeId) external;\n\n  /// @notice Resolves the latest status for a pending challenge.\n  /// @param challengeId Challenge identifier.\n  /// @return Status after syncing.\n  function syncChallenge(uint256 challengeId) external returns (ChallengeTypes.ChallengeStatus);\n\n  /// @notice Completes a Max Actions challenge after its end round has passed.\n  /// @param challengeId Challenge identifier.\n  function completeChallenge(uint256 challengeId) external;\n\n  /// @notice Claims the caller's payout from a completed Max Actions challenge.\n  /// @param challengeId Challenge identifier.\n  /// @return Amount transferred to the caller.\n  function claimChallengePayout(uint256 challengeId) external returns (uint256);\n\n  /// @notice Claims a Split Win slot during the active window.\n  /// @param challengeId Challenge identifier.\n  /// @return Amount transferred to the caller.\n  function claimSplitWinPrize(uint256 challengeId) external returns (uint256);\n\n  /// @notice Reclaims unclaimed Split Win slots after the end round (creator only).\n  /// @param challengeId Challenge identifier.\n  /// @return Amount transferred to the creator.\n  function claimCreatorSplitWinRefund(uint256 challengeId) external returns (uint256);\n\n  /// @notice Claims the caller's refund from a cancelled or invalid challenge.\n  /// @param challengeId Challenge identifier.\n  /// @return Amount transferred to the caller.\n  function claimChallengeRefund(uint256 challengeId) external returns (uint256);\n\n  /// @notice Withdraws B3TR from the contract.\n  /// @dev Emergency admin function that can drain any B3TR currently held by the contract.\n  /// @param to Recipient of the withdrawn B3TR.\n  /// @param amount Amount of B3TR to withdraw.\n  function withdraw(address to, uint256 amount) external;\n\n  /// @notice Updates the B3TR token address.\n  /// @param newAddress New B3TR token address.\n  function setB3TRAddress(address newAddress) external;\n\n  /// @notice Updates the VeBetterPassport address.\n  /// @param newAddress New VeBetterPassport address.\n  function setVeBetterPassportAddress(address newAddress) external;\n\n  /// @notice Updates the XAllocationVoting governor address.\n  /// @param newAddress New XAllocationVoting governor address.\n  function setXAllocationVotingAddress(address newAddress) external;\n\n  /// @notice Updates the X2EarnApps registry address.\n  /// @param newAddress New X2EarnApps registry address.\n  function setX2EarnAppsAddress(address newAddress) external;\n\n  /// @notice Updates the maximum duration allowed for new challenges.\n  /// @param newValue New maximum duration, in rounds.\n  function setMaxChallengeDuration(uint256 newValue) external;\n\n  /// @notice Updates the maximum number of explicit apps allowed for new challenges.\n  /// @param newValue New maximum selected app count.\n  function setMaxSelectedApps(uint256 newValue) external;\n\n  /// @notice Updates the maximum number of participants allowed for new Max Actions challenges.\n  /// @param newValue New maximum participant count.\n  function setMaxParticipants(uint256 newValue) external;\n\n  /// @notice Updates the minimum B3TR amount allowed for challenge funding.\n  /// @param newValue New minimum B3TR amount.\n  function setMinBetAmount(uint256 newValue) external;\n}\n"},"contracts/interfaces/IGalaxyMember.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.20;\n\nimport \"@openzeppelin/contracts/utils/structs/Checkpoints.sol\";\n\n/**\n * @title IGalaxyMember\n * @notice Interface for the GalaxyMember contract which handles NFT membership and governance functionality\n * @dev Implements ERC721 with additional features for level upgrades, node attachments, and governance participation\n */\ninterface IGalaxyMember {\n  // Custom errors\n  error AccessControlBadConfirmation();\n  error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n  error AddressEmptyCode(address target);\n  error ERC1967InvalidImplementation(address implementation);\n  error ERC1967NonPayable();\n  error ERC5805FutureLookup(uint256 timepoint, uint48 clock);\n  error ERC6372InconsistentClock();\n  error ERC721EnumerableForbiddenBatchMint();\n  error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n  error ERC721InsufficientApproval(address operator, uint256 tokenId);\n  error ERC721InvalidApprover(address approver);\n  error ERC721InvalidOperator(address operator);\n  error ERC721InvalidOwner(address owner);\n  error ERC721InvalidReceiver(address receiver);\n  error ERC721InvalidSender(address sender);\n  error ERC721NonexistentToken(uint256 tokenId);\n  error ERC721OutOfBoundsIndex(address owner, uint256 index);\n  error EnforcedPause();\n  error ExpectedPause();\n  error FailedInnerCall();\n  error InvalidInitialization();\n  error NotInitializing();\n  error ReentrancyGuardReentrantCall();\n  error UUPSUnauthorizedCallContext();\n  error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n  // Events\n  event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n  event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n  event B3TRtoUpgradeToLevelUpdated(uint256[] b3trToUpgradeToLevel);\n  event B3trGovernorAddressUpdated(address indexed newAddress, address indexed oldAddress);\n  event BaseURIUpdated(string indexed newBaseURI, string indexed oldBaseURI);\n  event Initialized(uint64 version);\n  event MaxLevelUpdated(uint256 oldLevel, uint256 newLevel);\n  event Paused(address account);\n  event PublicMintingPaused(bool isPaused);\n  event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n  event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n  event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n  event Selected(address indexed owner, uint256 tokenId);\n  event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n  event Unpaused(address account);\n  event Upgraded(address indexed implementation);\n  event Upgraded(uint256 indexed tokenId, uint256 oldLevel, uint256 newLevel);\n  event XAllocationsGovernorAddressUpdated(address indexed newAddress, address indexed oldAddress);\n  event NodeDetached(uint256 indexed nodeTokenId, uint256 indexed tokenId);\n  event NodeAttached(uint256 indexed nodeTokenId, uint256 indexed tokenId);\n  event LevelWhenAttached(uint256 indexed tokenId, uint256 indexed nodeTokenId, uint256 level);\n  event LevelWhenDetached(uint256 indexed tokenId, uint256 indexed nodeTokenId, uint256 level);\n  event StargateNFTAddressUpdated(address indexed newAddress, address indexed oldAddress);\n\n  /// @notice Returns the role identifier for contracts address manager\n  function CONTRACTS_ADDRESS_MANAGER_ROLE() external view returns (bytes32);\n\n  /// @notice Returns the role identifier for default admin\n  function DEFAULT_ADMIN_ROLE() external view returns (bytes32);\n\n  /// @notice Returns the maximum level achievable for a token\n  function MAX_LEVEL() external view returns (uint256);\n\n  /// @notice Returns the role identifier for minter\n  function MINTER_ROLE() external view returns (bytes32);\n\n  /// @notice Returns the role identifier for nodes manager\n  function NODES_MANAGER_ROLE() external view returns (bytes32);\n\n  /// @notice Returns the role identifier for pauser\n  function PAUSER_ROLE() external view returns (bytes32);\n\n  /// @notice Returns the role identifier for upgrader\n  function UPGRADER_ROLE() external view returns (bytes32);\n\n  /// @notice Returns the interface version string\n  function UPGRADE_INTERFACE_VERSION() external view returns (string memory);\n\n  /// @notice Approves an address to transfer a specific token\n  /// @param to Address to be approved\n  /// @param tokenId ID of the token to be approved\n  function approve(address to, uint256 tokenId) external;\n\n  /// @notice Attaches a node to a token\n  /// @param nodeTokenId ID of the node to attach\n  /// @param tokenId ID of the token to attach to\n  function attachNode(uint256 nodeTokenId, uint256 tokenId) external;\n\n  /// @notice Returns the B3TR token contract address\n  function b3tr() external view returns (address);\n\n  /// @notice Returns the B3TR governor contract address\n  function b3trGovernor() external view returns (address);\n\n  /// @notice Returns the number of tokens owned by an address\n  /// @param owner Address to query\n  /// @return Number of tokens owned\n  function balanceOf(address owner) external view returns (uint256);\n\n  /// @notice Returns the base URI for token metadata\n  function baseURI() external view returns (string memory);\n\n  /// @notice Burns a specific token\n  /// @param tokenId ID of the token to burn\n  function burn(uint256 tokenId) external;\n\n  /// @notice Detaches a node from a token\n  /// @param nodeTokenId ID of the node to detach\n  /// @param tokenId ID of the token to detach from\n  function detachNode(uint256 nodeTokenId, uint256 tokenId) external;\n\n  /// @notice Allows eligible addresses to mint a token for free\n  function freeMint() external;\n\n  /// @notice Returns the approved address for a token\n  /// @param tokenId ID of the token to query\n  /// @return Address approved for the token\n  function getApproved(uint256 tokenId) external view returns (address);\n\n  /// @notice Returns the amount of B3TR donated for a token\n  /// @param tokenId ID of the token to query\n  /// @return Amount of B3TR donated\n  function getB3TRdonated(uint256 tokenId) external view returns (uint256);\n\n  /// @notice Returns the amount of B3TR needed to upgrade a token\n  /// @param tokenId ID of the token to query\n  /// @return Amount of B3TR needed\n  function getB3TRtoUpgrade(uint256 tokenId) external view returns (uint256);\n\n  /// @notice Returns the amount of B3TR needed to upgrade to a specific level\n  /// @param level Target level\n  /// @return Amount of B3TR needed\n  function getB3TRtoUpgradeToLevel(uint256 level) external view returns (uint256);\n\n  /// @notice Returns the token ID attached to a node\n  /// @param nodeId ID of the node to query\n  /// @return Token ID attached to the node\n  function getIdAttachedToNode(uint256 nodeId) external view returns (uint256);\n\n  /// @notice Calculates the level after attaching a node\n  /// @param tokenId ID of the token\n  /// @param nodeTokenId ID of the node to attach\n  /// @return New level after attachment\n  function getLevelAfterAttachingNode(uint256 tokenId, uint256 nodeTokenId) external view returns (uint256);\n\n  /// @notice Calculates the level after detaching a node\n  /// @param tokenId ID of the token\n  /// @return New level after detachment\n  function getLevelAfterDetachingNode(uint256 tokenId) external view returns (uint256);\n\n  /// @notice Returns the node ID attached to a token\n  /// @param tokenId ID of the token to query\n  /// @return ID of the attached node\n  function getNodeIdAttached(uint256 tokenId) external view returns (uint256);\n\n  /// @notice Returns the level of a node\n  /// @param nodeId ID of the node to query\n  /// @return Level of the node\n  function getNodeLevelOf(uint256 nodeId) external view returns (uint8);\n\n  /// @notice Returns the free level granted by a node level\n  /// @param nodeLevel Level of the node\n  /// @return Free level granted\n  function getNodeToFreeLevel(uint8 nodeLevel) external view returns (uint256);\n\n  /// @notice Returns the admin role for a given role\n  /// @param role Role to query\n  /// @return Admin role\n  function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n  /// @notice Returns the selected token ID for an owner\n  /// @param owner Address to query\n  /// @return Selected token ID\n  function getSelectedTokenId(address owner) external view returns (uint256);\n\n  /// @notice Returns the selected token ID for an owner in a specific block number\n  /// @param owner Address to query\n  /// @param blockNumber Block number to query\n  /// @return Selected token ID\n  function getSelectedTokenIdAtBlock(address owner, uint48 blockNumber) external view returns (uint256);\n\n  /// @notice Grants a role to an account\n  /// @param role Role to grant\n  /// @param account Account to receive the role\n  function grantRole(bytes32 role, address account) external;\n\n  /// @notice Checks if an account has a role\n  /// @param role Role to check\n  /// @param account Account to check\n  /// @return True if account has the role\n  function hasRole(bytes32 role, address account) external view returns (bool);\n\n  /// @notice Initializes the contract V2\n  /// @param _vechainNodes Address of the VeChain nodes contract\n  /// @param _nodesAdmin Address of the nodes admin\n  /// @param _nodeFreeLevels Array of free levels for nodes\n  function initializeV2(address _vechainNodes, address _nodesAdmin, uint256[] memory _nodeFreeLevels) external;\n\n  /// @notice Checks if an operator is approved for all tokens of an owner\n  /// @param owner Owner address\n  /// @param operator Operator address\n  /// @return True if operator is approved for all\n  function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n  /// @notice Returns the level of a token\n  /// @param tokenId ID of the token to query\n  /// @return Level of the token\n  function levelOf(uint256 tokenId) external view returns (uint256);\n\n  /// @notice Returns the name of the token collection\n  function name() external view returns (string memory);\n\n  /// @notice Returns the owner of a token\n  /// @param tokenId ID of the token to query\n  /// @return Address of the owner\n  function ownerOf(uint256 tokenId) external view returns (address);\n\n  /// @notice Checks if a user has participated in governance\n  /// @param user Address to check\n  /// @return True if user has participated\n  function participatedInGovernance(address user) external view returns (bool);\n\n  /// @notice Pauses all token transfers\n  function pause() external;\n\n  /// @notice Returns the paused status of the contract\n  /// @return True if contract is paused\n  function paused() external view returns (bool);\n\n  /// @notice Returns the storage slot for the implementation\n  function proxiableUUID() external view returns (bytes32);\n\n  /// @notice Allows an account to renounce a role\n  /// @param role Role to renounce\n  /// @param callerConfirmation Address of the caller for confirmation\n  function renounceRole(bytes32 role, address callerConfirmation) external;\n\n  /// @notice Revokes a role from an account\n  /// @param role Role to revoke\n  /// @param account Account to revoke from\n  function revokeRole(bytes32 role, address account) external;\n\n  /// @notice Safely transfers a token\n  /// @param from Current owner\n  /// @param to New owner\n  /// @param tokenId ID of the token to transfer\n  function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n  /// @notice Safely transfers a token with additional data\n  /// @param from Current owner\n  /// @param to New owner\n  /// @param tokenId ID of the token to transfer\n  /// @param data Additional data\n  function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) external;\n\n  /// @notice Selects a token for an owner\n  /// @param tokenID ID of the token to select\n  function select(uint256 tokenID) external;\n\n  /// @notice Sets approval for all tokens\n  /// @param operator Address to approve\n  /// @param approved Approval status\n  function setApprovalForAll(address operator, bool approved) external;\n\n  /// @notice Sets the B3TR amounts needed for level upgrades\n  /// @param b3trToUpgradeToLevel Array of B3TR amounts\n  function setB3TRtoUpgradeToLevel(uint256[] memory b3trToUpgradeToLevel) external;\n\n  /// @notice Sets the B3TR governor address\n  /// @param _b3trGovernor New governor address\n  function setB3trGovernorAddress(address _b3trGovernor) external;\n\n  /// @notice Sets the base URI for token metadata\n  /// @param baseTokenURI New base URI\n  function setBaseURI(string memory baseTokenURI) external;\n\n  /// @notice Sets the public minting pause status\n  /// @param isPaused New pause status\n  function setIsPublicMintingPaused(bool isPaused) external;\n\n  /// @notice Sets the maximum level\n  /// @param level New maximum level\n  function setMaxLevel(uint256 level) external;\n\n  /// @notice Sets the free upgrade level for a node level\n  /// @param nodeLevel Level of the node\n  /// @param level Free upgrade level\n  function setNodeToFreeUpgradeLevel(uint8 nodeLevel, uint256 level) external;\n\n  /// @notice Sets the X-Allocations governor address\n  /// @param _xAllocationsGovernor New governor address\n  function setXAllocationsGovernorAddress(address _xAllocationsGovernor) external;\n\n  /// @notice Sets the StargateNFT contract address\n  /// @param _stargateNFT New StargateNFT contract address\n  function setStargateNFTAddress(address _stargateNFT) external;\n\n  /// @notice Checks if the contract supports an interface\n  /// @param interfaceId Interface identifier\n  /// @return True if interface is supported\n  function supportsInterface(bytes4 interfaceId) external view returns (bool);\n\n  /// @notice Returns the symbol of the token collection\n  function symbol() external view returns (string memory);\n\n  /// @notice Returns a token by its index\n  /// @param index Index of the token\n  /// @return Token ID at the index\n  function tokenByIndex(uint256 index) external view returns (uint256);\n\n  /// @notice Returns a token owned by an address by index\n  /// @param owner Owner address\n  /// @param index Index of the token\n  /// @return Token ID at the index\n  function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n  /// @notice Returns the URI for a token's metadata\n  /// @param tokenId ID of the token\n  /// @return Metadata URI\n  function tokenURI(uint256 tokenId) external view returns (string memory);\n\n  /// @notice Returns the total supply of tokens\n  /// @return Total number of tokens\n  function totalSupply() external view returns (uint256);\n\n  /// @notice Transfers a token\n  /// @param from Current owner\n  /// @param to New owner\n  /// @param tokenId ID of the token to transfer\n  function transferFrom(address from, address to, uint256 tokenId) external;\n\n  /// @notice Returns the treasury address\n  function treasury() external view returns (address);\n\n  /// @notice Unpauses all token transfers\n  function unpause() external;\n\n  /// @notice Upgrades a token's level\n  /// @param tokenId ID of the token to upgrade\n  function upgrade(uint256 tokenId) external;\n\n  /// @notice Upgrades the contract implementation\n  /// @param newImplementation Address of the new implementation\n  /// @param data Additional data for the upgrade\n  function upgradeToAndCall(address newImplementation, bytes memory data) external payable;\n\n  /// @notice Returns the contract version\n  /// @return Version string\n  function version() external pure returns (string memory);\n\n  /// @notice Returns the X-Allocations governor address\n  function xAllocationsGovernor() external view returns (address);\n\n  /// @notice Returns the StargateNFT contract address\n  function stargateNFT() external view returns (address);\n}\n"},"contracts/interfaces/IVeBetterPassport.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nimport { PassportTypes } from \"../ve-better-passport/libraries/PassportTypes.sol\";\nimport { IX2EarnApps } from \"./IX2EarnApps.sol\";\nimport { IXAllocationVotingGovernor } from \"./IXAllocationVotingGovernor.sol\";\n\ninterface IVeBetterPassport {\n  // ---------- Events ---------- //\n\n  /// @notice Emitted when a specific check is toggled.\n  /// @param checkName The name of the check being toggled.\n  /// @param enabled True if the check is enabled, false if disabled.\n  event CheckToggled(string indexed checkName, bool enabled);\n\n  /// @notice Emitted when the minimum galaxy member level is set.\n  /// @param minimumGalaxyMemberLevel The new minimum galaxy member level.\n  event MinimumGalaxyMemberLevelSet(uint256 minimumGalaxyMemberLevel);\n\n  /// @notice Emitted when a user delegates personhood to another user.\n  event LinkCreated(address indexed entity, address indexed passport);\n\n  /// @notice Emitted when a user revokes the delegation of personhood to another user.\n  event LinkRemoved(address indexed entity, address indexed passport);\n\n  /// @notice Emitted when a user delegates personhood to another user pending acceptance.\n  event LinkPending(address indexed entity, address indexed passport);\n\n  /// @notice Emitted when a user registers an action\n  /// @param user - the user that registered the action\n  /// @param passport - the passport address of the user\n  /// @param appId - the app id of the action\n  /// @param round - the round of the action\n  /// @param actionScore - the score of the action\n  event RegisteredAction(\n    address indexed user,\n    address passport,\n    bytes32 indexed appId,\n    uint256 indexed round,\n    uint256 actionScore\n  );\n\n  /// @notice Emitted when a user is signaled.\n  /// @param user  The address of the user that was signaled.\n  /// @param signaler  The address of the user that signaled the user.\n  /// @param app  The app that the user was signaled for.\n  /// @param reason  The reason for signaling the user.\n  event UserSignaled(address indexed user, address indexed signaler, bytes32 indexed app, string reason);\n\n  /// @notice Emited when an address is associated with an app.\n  /// @param signaler  The address of the signaler.\n  /// @param app  The app that the signaler was associated with.\n  event SignalerAssignedToApp(address indexed signaler, bytes32 indexed app);\n\n  /// @notice Emitted when an address is removed from an app.\n  /// @param signaler  The address of the signaler.\n  /// @param app  The app that the signaler was removed from.\n  event SignalerRemovedFromApp(address indexed signaler, bytes32 indexed app);\n\n  /// @notice Emitted when a user's signals are reset.\n  /// @param user  The address of the user that had their signals reset.\n  /// @param reason  The reason for resetting the signals.\n  event UserSignalsReset(address indexed user, string reason);\n\n  /// @notice Emitted when a user is whitelisted\n  /// @param user - the user that is whitelisted\n  /// @param whitelistedBy - the user that whitelisted the user\n  event UserWhitelisted(address indexed user, address indexed whitelistedBy);\n\n  /// @notice Emitted when a user is removed from the whitelist\n  /// @param user - the user that is removed from the whitelist\n  /// @param removedBy - the user that removed the user from the whitelist\n  event RemovedUserFromWhitelist(address indexed user, address indexed passport, address indexed removedBy);\n\n  /// @notice Emitted when a user is blacklisted\n  /// @param user - the user that is blacklisted\n  /// @param blacklistedBy - the user that blacklisted the user\n  event UserBlacklisted(address indexed user, address indexed blacklistedBy);\n\n  /// @notice Emitted when a user is removed from the blacklist\n  /// @param user - the user that is removed from the blacklist\n  /// @param removedBy - the user that removed the user from the blacklist\n  event RemovedUserFromBlacklist(address indexed user, address indexed removedBy);\n\n  /// @notice Emitted when a user's signals are reset for an app.\n  /// @param user  The address of the user that had their signals reset.\n  /// @param app  The app that the user had their signals reset for.\n  /// @param reason - The reason for resetting the signals.\n  event UserSignalsResetForApp(address indexed user, bytes32 indexed app, string reason);\n\n  /// @notice Emitted when a user delegates passport to another user.\n  event DelegationCreated(address indexed delegator, address indexed delegatee);\n\n  /// @notice Emitted when a user delegates passport to another user pending acceptance.\n  event DelegationPending(address indexed delegator, address indexed delegatee);\n\n  /// @notice Emitted when a user revokes the delegation of passport to another user.\n  event DelegationRevoked(address indexed delegator, address indexed delegatee);\n\n  /// @notice Emitted when an an entity is linked to a passport\n  error AlreadyLinked(address entity);\n\n  // ---------- Errors ---------- //\n  /// @notice Emitted when a user does not have permission to delegate personhood.\n  error UnauthorizedUser(address user);\n\n  /// @notice Emitted when a user tries to delegate personhood to a user that has already been delegated to.\n  error AlreadyDelegated(address entity);\n\n  /// @notice Emitted when a user tries to delegate personhood to themselves.\n  error CannotLinkToSelf(address user);\n\n  /// @notice Emitted when a user tries to delegate personhood to more than one user.\n  error OnlyOneLinkAllowed();\n\n  /// @notice Emitted when a user tries to call a function that they are not authorized to call.\n  error VeBetterPassportUnauthorizedUser(address user);\n\n  /// @notice Emitted when a user does not have permission to delegate passport.\n  error PassportDelegationUnauthorizedUser(address user);\n\n  /// @notice Emitted when a user tries to delegate passport to themselves.\n  error CannotDelegateToSelf(address user);\n\n  /// @notice Emitted when a user tries to revoke a delegation that does not exist.\n  error NotDelegated(address user);\n\n  /// @notice Emitted when a user tries to delegate passport to more than one user.\n  error OnlyOneUserAllowed();\n\n  /// @notice Emiited when a user tries to delegate a passport to another passport or entity.\n  error PassportDelegationFromEntity();\n\n  /// @notice Emitted when a user tries to delegate a passport to another entity.\n  error PassportDelegationToEntity();\n\n  /// @notice Emitted when a user tries to sign a message with an expired signature\n  error SignatureExpired();\n\n  /// @notice Emitted when a user tries to sign a message with an invalid signature\n  error InvalidSignature();\n\n  ///  @notice Thrown when a user tries to link a entity to a passport that has reached the maximum number of entities.\n  error MaxEntitiesPerPassportReached();\n\n  /// @notice Thrown when a user tries to link a entity to a passport that is already linked to another entity.\n  error NotLinked(address user);\n\n  /// @notice Thrown when a user tries to link a entity to a passport that is already delegated.\n  error DelegatedEntity(address entity);\n\n  // ---------- Functions ---------- //\n  /// @notice Initializes the contract with the required data and roles\n  /// @param data The initialization data for the contract\n  /// @param roles The roles data for initialization\n  function initialize(\n    PassportTypes.InitializationData calldata data,\n    PassportTypes.InitializationRoleData calldata roles\n  ) external;\n\n  /// @notice Checks if a user is a person based on the participation score and other criteria\n  /// @param user The address of the user to check\n  /// @return person True if the user is a valid person\n  /// @return reason Reason why the user is not a person\n  function isPerson(address user) external view returns (bool person, string memory reason);\n\n  /// @notice Checks if a user is a person\n  /// @dev Checks if a wallet is a person or not at a specific timepoint based on the participation score, blacklisting, and GM holdings\n  /// @param user - the user address\n  /// @param timepoint - the timepoint to query\n  /// @return person - true if the user is a person\n  /// @return reason - the reason why the user is not a person\n  function isPersonAtTimepoint(\n    address user,\n    uint48 timepoint\n  ) external view returns (bool person, string memory reason);\n\n  /// @notice Checks if a user is whitelisted\n  /// @param _user The user to check\n  /// @return True if the user is whitelisted\n  function isWhitelisted(address _user) external view returns (bool);\n\n  /// @notice Checks if a user is blacklisted\n  /// @param _user The user to check\n  /// @return True if the user is blacklisted\n  function isBlacklisted(address _user) external view returns (bool);\n\n  /// @notice Toggles the specified check\n  function toggleCheck(PassportTypes.CheckType check) external;\n\n  /// @notice Returns the passport address for a entity\n  /// @param entity The entity's address\n  /// @return The address of the passport\n  function getPassportForEntity(address entity) external view returns (address);\n\n  /// @notice Returns the pending links for a user (both incoming and outgoing)\n  /// @param user The address of the user\n  /// @return incoming The addresss of users that want to link to the user.\n  /// @return outgoing The address that the user wants to link to.\n  function getPendingLinkings(address user) external view returns (address[] memory incoming, address outgoing);\n\n  /// @notice Returns the passport address for a entity at a specific timepoint\n  /// @param entity The entity's address\n  /// @param timepoint The timepoint to query\n  function getPassportForEntityAtTimepoint(address entity, uint256 timepoint) external view returns (address);\n\n  /// @notice Returns the entity address for a passport\n  /// @param passport The passport's address\n  /// @return The address of the entity\n  function getEntitiesLinkedToPassport(address passport) external view returns (address[] memory);\n\n  /// @notice Returns if a user is a entity\n  /// @param user The user address\n  function isEntity(address user) external view returns (bool);\n\n  /// @notice Returns if a user is a entity at a specific timepoint\n  /// @param user The user address\n  /// @param timepoint The timepoint to query\n  function isEntityInTimepoint(address user, uint256 timepoint) external view returns (bool);\n\n  /// @notice Returns if a user is a passport\n  /// @param user The user address\n  function isPassport(address user) external view returns (bool);\n\n  /// @notice Returns if a user is a passport at a specific timepoint\n  /// @param user The user address\n  /// @param timepoint The timepoint to query\n  function isPassportInTimepoint(address user, uint256 timepoint) external view returns (bool);\n\n  /// @notice Gets the cumulative score of a user based on exponential decay for a number of last rounds\n  /// @param user The user address\n  /// @param lastRound The round to consider as a starting point for the cumulative score\n  /// @return The cumulative score of the user\n  function getCumulativeScoreWithDecay(address user, uint256 lastRound) external view returns (uint256);\n\n  /// @notice Gets the round score of a user\n  /// @param user The user address\n  /// @param round The round to check\n  /// @return The round score of the user\n  function userRoundScore(address user, uint256 round) external view returns (uint256);\n\n  /// @notice Gets the total score of a user\n  /// @param user The user address\n  /// @return The total score of the user\n  function userTotalScore(address user) external view returns (uint256);\n\n  /// @notice Gets the number of actions distributed by an app in a round\n  /// @param appId The app ID\n  /// @param round The round to check\n  /// @return The number of actions\n  function appRoundActionCount(bytes32 appId, uint256 round) external view returns (uint256);\n\n  /// @notice Gets the number of distinct apps a user has interacted with in a round\n  /// @param user The user address\n  /// @param round The round to check\n  /// @return The number of distinct apps\n  function userRoundAppCount(address user, uint256 round) external view returns (uint256);\n\n  /// @notice Gets how many actions a user registered in a specific round\n  /// @param user The user address\n  /// @param round The round to check\n  /// @return The number of registered actions for that user and round\n  function userRoundActionCount(address user, uint256 round) external view returns (uint256);\n\n  /// @notice Gets the score of a user for an app in a specific round\n  /// @param user The user address\n  /// @param round The round to check\n  /// @param appId The app ID\n  /// @return The score of the user for the app in the round\n  function userRoundScoreApp(address user, uint256 round, bytes32 appId) external view returns (uint256);\n\n  /// @notice Gets how many actions a user registered for an app in a specific round\n  /// @param user The user address\n  /// @param round The round to check\n  /// @param appId The app ID\n  /// @return The number of registered actions for that user, app, and round\n  function userRoundActionCountApp(address user, uint256 round, bytes32 appId) external view returns (uint256);\n\n  /// @notice Gets the total score of a user for an app\n  /// @param user The user address\n  /// @param appId The app ID\n  /// @return The total score of the user for the app\n  function userAppTotalScore(address user, bytes32 appId) external view returns (uint256);\n\n  /// @notice Checks if a user has ever interacted with a specific app\n  function userUniqueAppInteraction(address user, bytes32 appId) external view returns (bool);\n\n  /// @notice Gets the list of apps a user has interacted with\n  function userInteractedApps(address user) external view returns (bytes32[] memory);\n\n  /// @notice Gets the threshold score for a user to be considered a person\n  /// @return The threshold participation score\n  function thresholdPoPScore() external view returns (uint256);\n\n  /// @notice Gets the threshold score for a user to be considered a person at a specific timepoint\n  function thresholdPoPScoreAtTimepoint(uint48 timepoint) external view returns (uint256);\n\n  /// @notice Gets the number of rounds to be considered for the cumulative score\n  /// @return The number of rounds\n  function roundsForCumulativeScore() external view returns (uint256);\n\n  /// @notice Gets the security multiplier for an app security\n  /// @param security The app security level (LOW, MEDIUM, HIGH)\n  /// @return The security multiplier for the app\n  function securityMultiplier(PassportTypes.APP_SECURITY security) external view returns (uint256);\n\n  /// @notice Gets the security level of an app\n  /// @param appId The app ID\n  /// @return The security level of the app\n  function appSecurity(bytes32 appId) external view returns (PassportTypes.APP_SECURITY);\n\n  /// @notice Gets the minimum galaxy member level required\n  /// @return The minimum galaxy member level\n  function getMinimumGalaxyMemberLevel() external view returns (uint256);\n\n  /// @notice Returns if the specific check is enabled\n  function isCheckEnabled(PassportTypes.CheckType check) external view returns (bool);\n\n  /// @notice Returns the signaling threshold\n  /// @return The signaling threshold\n  function signalingThreshold() external view returns (uint256);\n\n  /// @notice Gets the total number of signals for an app\n  /// @param app The app ID\n  /// @return The total number of signals for the app\n  function appTotalSignalsCounter(bytes32 app) external view returns (uint256);\n\n  /// @notice Returns the domain for EIP-712 signature\n  function eip712Domain()\n    external\n    view\n    returns (\n      bytes1 fields,\n      string memory name,\n      string memory signatureVersion,\n      uint256 chainId,\n      address verifyingContract,\n      bytes32 salt,\n      uint256[] memory extensions\n    );\n\n  /// @notice Grants a role to a specific account\n  /// @param role The role to grant\n  /// @param account The account to grant the role to\n  function grantRole(bytes32 role, address account) external;\n\n  /// @notice Revokes a role from a specific account\n  /// @param role The role to revoke\n  /// @param account The account to revoke the role from\n  function revokeRole(bytes32 role, address account) external;\n\n  /// @notice Signals a user\n  /// @param _user The user to signal\n  function signalUser(address _user) external;\n\n  /// @notice Signals a user with a reason\n  /// @param _user The user to signal\n  /// @param reason The reason for the signal\n  function signalUserWithReason(address _user, string memory reason) external;\n\n  /// @notice Assigns a signaler to an app\n  /// @param app The app ID\n  /// @param user The signaler address\n  function assignSignalerToApp(bytes32 app, address user) external;\n\n  /// @notice Removes a signaler from an app\n  /// @param user The signaler address\n  function removeSignalerFromApp(address user) external;\n\n  /// @notice Resets the signals of a user with a given reason\n  /// @param user The user address\n  /// @param reason The reason for resetting the signals\n  function resetUserSignalsWithReason(address user, string memory reason) external;\n\n  /// @notice Gets the version of the contract\n  /// @return The version of the contract as a string\n  function version() external pure returns (string memory);\n\n  /// @notice Returns the current block number\n  /// @return The current block number\n  function clock() external view returns (uint48);\n\n  /// @notice Returns the clock mode for the contract\n  /// @return The clock mode as a string\n  function CLOCK_MODE() external pure returns (string memory);\n\n  /// @notice Sets the signaling threshold\n  /// @param threshold The new signaling threshold\n  function setSignalingThreshold(uint256 threshold) external;\n\n  /// @notice Sets the security multiplier for an app security level\n  /// @param security The app security level\n  /// @param multiplier The security multiplier\n  function setSecurityMultiplier(PassportTypes.APP_SECURITY security, uint256 multiplier) external;\n\n  /// @notice Sets the app security level for a specific app\n  /// @param appId The app ID\n  /// @param security The security level\n  function setAppSecurity(bytes32 appId, PassportTypes.APP_SECURITY security) external;\n\n  /// @notice Sets the threshold score for a user to be considered a person\n  /// @param threshold The threshold score\n  function setThresholdPoPScore(uint208 threshold) external;\n\n  /// @notice Sets the number of rounds to consider for cumulative score calculation\n  /// @param rounds The number of rounds\n  function setRoundsForCumulativeScore(uint256 rounds) external;\n\n  /// @notice Sets the decay rate for exponential decay scoring\n  /// @param decayRate The decay rate\n  function setDecayRate(uint256 decayRate) external;\n\n  /// @notice Sets the X2EarnApps contract address\n  /// @param _x2EarnApps The X2EarnApps contract address\n  function setX2EarnApps(IX2EarnApps _x2EarnApps) external;\n\n  /// @notice Sets the xAllocationVoting contract address\n  /// @param xAllocationVoting The xAllocationVoting contract address\n  function setXAllocationVoting(IXAllocationVotingGovernor xAllocationVoting) external;\n\n  /// @notice Link an account (which will become an entity) to a passport (an address that is not an enitity)\n  /// After linking, the scores of the enitity will be stored to the linked account (passport)\n  /// Balance is not transferred and the entity will not be able to vote after linking.\n  /// @param entity The entity's address\n  /// @param deadline The deadline for the signature\n  /// @param signature The signature of the delegation\n  function linkEntityToPassportWithSignature(address entity, uint256 deadline, bytes memory signature) external;\n\n  /// @notice Link an account (which will become an entity) to a passport (an address that is not an enitity)\n  /// After linking, the scores of the enitity will be stored to the linked account (passport)\n  /// Balance is not transferred and the entity will not be able to vote after linking.\n  /// @dev The passport must accept the delegation\n  function linkEntityToPassport(address passport) external;\n\n  /// @notice Allow the passport to accept the delegation\n  /// @param entity - the entity address\n  function acceptEntityLink(address entity) external;\n\n  /// @notice Deny an incoming pending entity link to the sender's passport.\n  /// @param entity - the entity address\n  function denyIncomingPendingEntityLink(address entity) external;\n\n  /// @notice Cancel an outgoing pending entity link from the sender.\n  function cancelOutgoingPendingEntityLink() external;\n\n  /// @notice Remove the linked enitity from the passport\n  /// @param entity - the entity address\n  function removeEntityLink(address entity) external;\n\n  /// @notice Registers an action for a user\n  /// @param user - the user that performed the action\n  /// @param appId - the app id of the action\n  function registerAction(address user, bytes32 appId) external;\n\n  /// @notice Registers an action for a user in a round\n  /// @param user - the user that performed the action\n  /// @param appId - the app id of the action\n  /// @param round - the round id of the action\n  function registerActionForRound(address user, bytes32 appId, uint256 round) external;\n\n  /// @notice Gets the threshold percentage of blacklisted entities for a passport to be considered blacklisted\n  function blacklistThreshold() external view returns (uint256);\n\n  // @notice Gets the threshold percentage of whitelisted entities for a passport to be considered whitelisted\n  function whitelistThreshold() external view returns (uint256);\n\n  /// @notice Returns the maximum number of entities per passport\n  function maxEntitiesPerPassport() external view returns (uint256);\n\n  /// @notice Gets the decay rate for the cumulative score\n  function decayRate() external view returns (uint256);\n\n  /// @notice Gets the minimum galaxy member level to be considered a person\n  function minimumGalaxyMemberLevel() external view returns (uint256);\n\n  /// @notice Sets the threshold percentage of blacklisted entities for a passport to be considered blacklisted\n  function setBlacklistThreshold(uint256 _threshold) external;\n\n  /// @notice Sets the threshold percentage of whitelisted entities for a passport to be considered whitelisted\n  function setWhitelistThreshold(uint256 _threshold) external;\n\n  /// @notice Sets the maximum number of entities that can be linked to a passport\n  /// @param maxEntities - the maximum number of entities\n  function setMaxEntitiesPerPassport(uint256 maxEntities) external;\n\n  /// @notice Delegate the personhood to another address\n  /// @param delegatee - the delegatee address\n  function delegatePassport(address delegatee) external;\n\n  /// @notice Allow the delegatee to accept the delegation\n  /// @param delegator - the delegator address\n  function acceptDelegation(address delegator) external;\n\n  /// @notice Revoke the delegation (can be done by the delegator or the delegatee)\n  function revokeDelegation() external;\n\n  /// @notice Allows a delegator to deny (and remove) an incoming pending delegation.\n  /// @param delegator - the user who is delegating to me (aka the delegator)\n  function denyIncomingPendingDelegation(address delegator) external;\n\n  /// @notice Allows a delegator to cancel (and remove) the outgoing pending delegation.\n  function cancelOutgoingPendingDelegation() external;\n\n  /// @notice Returns the delegatee address for a delegator\n  /// @param delegator The delegator's address\n  /// @return The address of the delegatee\n  function getDelegatee(address delegator) external view returns (address);\n\n  /// @notice Returns the incoming and outgoing pending delegations for a user\n  /// @param user - the user address\n  /// @return incoming The address[] memory of users that are delegating to the user.\n  /// @return outgoing The address that the user is delegating to.\n  function getPendingDelegations(address user) external view returns (address[] memory incoming, address outgoing);\n\n  /// @notice Returns the delegatee address for a delegator at a specific timepoint\n  /// @param delegator The delegator's address\n  /// @param timepoint The timepoint to query\n  function getDelegateeInTimepoint(address delegator, uint256 timepoint) external view returns (address);\n\n  /// @notice Returns the delegator address for a delegatee\n  /// @param delegatee The delegatee's address\n  /// @return The address of the delegator\n  function getDelegator(address delegatee) external view returns (address);\n\n  /// @notice Returns the delegator address for a delegatee at a specific timepoint\n  /// @param delegatee The delegatee's address\n  /// @param timepoint The timepoint to query\n  function getDelegatorInTimepoint(address delegatee, uint256 timepoint) external view returns (address);\n\n  /// @notice Returns if a user is a delegator\n  /// @param user The user address\n  function isDelegator(address user) external view returns (bool);\n\n  /// @notice Returns if a user is a delegator at a specific timepoint\n  /// @param user The user address\n  /// @param timepoint The timepoint to query\n  function isDelegatorInTimepoint(address user, uint256 timepoint) external view returns (bool);\n\n  /// @notice Returns if a user is a delegatee\n  /// @param user The user address\n  function isDelegatee(address user) external view returns (bool);\n\n  /// @notice Returns if a user is a delegatee at a specific timepoint\n  /// @param user The user address\n  /// @param timepoint The timepoint to query\n  function isDelegateeInTimepoint(address user, uint256 timepoint) external view returns (bool);\n}\n"},"contracts/interfaces/IX2EarnApps.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nimport { X2EarnAppsDataTypes } from \"../libraries/X2EarnAppsDataTypes.sol\";\nimport { EndorsementUtils } from \"../x-2-earn-apps/libraries/EndorsementUtils.sol\";\nimport { X2EarnAppsStorageTypes } from \"../x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\";\nimport { IX2EarnCreator } from \"./IX2EarnCreator.sol\";\nimport { IXAllocationVotingGovernor } from \"./IXAllocationVotingGovernor.sol\";\nimport { IX2EarnRewardsPool } from \"./IX2EarnRewardsPool.sol\";\nimport { IStargateNFT } from \"../mocks/Stargate/interfaces/IStargateNFT.sol\";\n\n/**\n * @title IX2EarnApps\n * @notice Interface for the X2EarnApps contract.\n * @dev The contract inheriting this interface should be able to manage the x2earn apps and their Eligibility for allocation voting.\n */\ninterface IX2EarnApps {\n  /**\n   * @dev The clock was incorrectly modified.\n   */\n  error ERC6372InconsistentClock();\n\n  /**\n   * @dev The `appId` doesn't exist.\n   */\n  error X2EarnNonexistentApp(bytes32 appId);\n\n  /**\n   * @dev The creator of the app doesn't exist.\n   */\n  error X2EarnNonexistentCreator(bytes32 appId, address creator);\n\n  /**\n   * @dev The `addr` is not valid (eg: is the ZERO ADDRESS).\n   */\n  error X2EarnInvalidAddress(address addr);\n\n  /**\n   * @dev The caller is already an endorser.\n   */\n  error X2EarnAlreadyEndorser();\n\n  /**\n   * @dev The caller is not a node holder.\n   */\n  error X2EarnNonNodeHolder();\n\n  /**\n   * @dev The caller is not an endorser.\n   */\n  error X2EarnNonEndorser();\n\n  /**\n   * @dev The `appId` is already endorsed.\n   */\n  error X2EarnAppAlreadyEndorsed(bytes32 appId);\n\n  /**\n   * @dev An app with the specified `appId` already exists.\n   */\n  error X2EarnAppAlreadyExists(bytes32 appId);\n\n  /**\n   * @dev The Vechain Node is in a cooldown period, and the action cannot be performed.\n   */\n  error X2EarnNodeCooldownActive();\n\n  /**\n   * @dev The user is not authorized to perform the action.\n   */\n  error X2EarnUnauthorizedUser(address user);\n\n  /**\n   * @dev The maximum number of creators has been reached.\n   */\n  error X2EarnMaxCreatorsReached(bytes32 appId);\n\n  /**\n   * @dev The caller is already the creator of the app.\n   */\n  error X2EarnAlreadyCreator(address creator);\n\n  /**\n   * @dev The caller is an unverified creator.\n   */\n  error X2EarnUnverifiedCreator(address creator);\n\n  /**\n   * @dev The creator NFT is already used for another app.\n   */\n  error CreatorNFTAlreadyUsed(address creator);\n\n  /**\n   * @dev Invalid start index for get apps pagination\n   */\n  error X2EarnInvalidStartIndex();\n\n  /**\n   * @notice Error indicating that an XAPP has already been included in a XAllocation Voting round and submission cant be removed.\n   */\n  error NodeManagementXAppAlreadyIncluded(bytes32 appId);\n\n  /**\n   * @dev Lookup to future votes is not available.\n   */\n  error ERC5805FutureLookup(uint256 timepoint, uint48 clock);\n\n  /**\n   * @dev The `percentage` is not valid.\n   */\n  error X2EarnInvalidAllocationPercentage(uint256 percentage);\n\n  /**\n   * @dev The `distributorAddress` is not valid.\n   */\n  error X2EarnNonexistentRewardDistributor(bytes32 appId, address distributorAddress);\n\n  /**\n   * @dev The `moderator` is not valid.\n   */\n  error X2EarnNonexistentModerator(bytes32 appId, address moderator);\n\n  /**\n   * @dev The maximum number of moderators has been reached.\n   */\n  error X2EarnMaxModeratorsReached(bytes32 appId);\n\n  /**\n   * @dev The app is blacklisted.\n   */\n  error X2EarnAppBlacklisted(bytes32 appId);\n\n  /**\n   * @dev The maximum number of reward distributors has been reached.\n   */\n  error X2EarnMaxRewardDistributorsReached(bytes32 appId);\n\n  /**\n   * @dev The maximum number of managers has been reached.\n   */\n  error X2EarnMaxManagersReached(bytes32 appId);\n\n  /**\n   * @dev The user has a node that cannot be used to endorse\n   */\n  error NodeNotAllowedToEndorse();\n\n  // V8 errors\n  /**\n   * @dev Endorsements are currently paused (during migration).\n   */\n  error EndorsementsPaused();\n\n  /**\n   * @dev Cooldown period not expired for the specified node-app endorsement.\n   */\n  error CooldownNotExpired(uint256 nodeId, bytes32 appId);\n\n  /**\n   * @dev Exceeds maximum points allowed per app.\n   */\n  error ExceedsMaxPointsPerApp(bytes32 appId, uint256 current, uint256 max);\n\n  /**\n   * @dev Exceeds maximum points a single node can endorse to one app.\n   */\n  error ExceedsMaxPointsPerNode(uint256 nodeId, bytes32 appId, uint256 max);\n\n  /**\n   * @dev Node doesn't have enough available points.\n   */\n  error InsufficientAvailablePoints(uint256 nodeId, uint256 available, uint256 requested);\n\n  /**\n   * @dev Invalid points amount provided.\n   */\n  error InvalidPointsAmount();\n\n  /**\n   * @dev Event fired when a new app is added.\n   */\n  event AppAdded(bytes32 indexed id, address addr, string name, bool appAvailableForAllocationVoting);\n\n  /**\n   * @dev Event fired when an app Eligibility for allocation voting changes.\n   */\n  event VotingEligibilityUpdated(bytes32 indexed appId, bool isAvailable);\n\n  /**\n   * @dev Event fired when an app is blacklisted or unblacklisted.\n   */\n  event BlacklistUpdated(bytes32 indexed appId, bool isBlacklisted);\n\n  /**\n   * @dev Event fired when the score threshold is updated.\n   */\n  event EndorsementScoreThresholdUpdated(uint256 oldThreshold, uint256 newThreshold);\n\n  /**\n   * @dev Event fired when the admin adds a new moderator to the app.\n   */\n  event ModeratorAddedToApp(bytes32 indexed appId, address moderator);\n\n  /**\n   * @dev Event fired when the admin removes a moderator from the app.\n   */\n  event ModeratorRemovedFromApp(bytes32 indexed appId, address moderator);\n\n  /**\n   * @dev Event fired when the admin removes a creator from the app.\n   */\n  event CreatorRemovedFromApp(bytes32 indexed appId, address creator);\n\n  /**\n   * @dev Event fired when the admin adds a new creator to the app and new creator NFT is minted.\n   */\n  event CreatorAddedToApp(bytes32 indexed appId, address creatorAddress);\n\n  /**\n   * @dev Event fired when the admin adds a new reward distributor to the app.\n   */\n  event RewardDistributorAddedToApp(bytes32 indexed appId, address distributorAddress);\n\n  /**\n   * @dev Event fired when the admin removes a reward distributor from the app.\n   */\n  event RewardDistributorRemovedFromApp(bytes32 indexed appId, address distributorAddress);\n\n  /**\n   * @dev Event fired when the admin of an app changes.\n   */\n  event AppAdminUpdated(bytes32 indexed appId, address oldAdmin, address newAdmin);\n\n  /**\n   * @dev Event fired when the address where the x2earn app receives allocation funds is changed.\n   */\n  event TeamWalletAddressUpdated(bytes32 indexed appId, address oldTeamWalletAddress, address newTeamWalletAddress);\n\n  /**\n   * @dev Event fired when the metadata URI of the app is changed.\n   */\n  event AppMetadataURIUpdated(bytes32 indexed appId, string oldMetadataURI, string newMetadataURI);\n\n  /**\n   * @dev Event fired when the base URI is updated.\n   */\n  event BaseURIUpdated(string oldBaseURI, string newBaseURI);\n\n  /**\n   * @dev Event fired when the cooldown period duration is updated.\n   */\n  event CooldownPeriodUpdated(uint256 oldCooldownPeriod, uint256 newCooldownPeriod);\n\n  /**\n   * @dev Event fired when the grace period duration is updated.\n   */\n  event GracePeriodUpdated(uint256 oldGracePeriod, uint256 newGracePeriod);\n\n  /**\n   * @dev Event fired when the app endorsement status is updated.\n   */\n  event AppEndorsementStatusUpdated(bytes32 indexed appId, bool endorsed);\n\n  /**\n   * @dev Event fired when the app endorsement grace period is started.\n   */\n  event AppUnendorsedGracePeriodStarted(bytes32 indexed appId, uint48 startBlock, uint48 endBlock);\n\n  /**\n   * @dev Event fired when the team allocation percentage is updated.\n   */\n  event TeamAllocationPercentageUpdated(bytes32 indexed appId, uint256 oldPercentage, uint256 newPercentage);\n\n  /**\n   * @dev V8: Event fired when an app is endorsed with points.\n   */\n  event AppEndorsed(bytes32 indexed appId, uint256 indexed nodeId, address endorser, uint256 points);\n\n  /**\n   * @dev V8: Event fired when an app is unendorsed.\n   */\n  event AppUnendorsed(bytes32 indexed appId, uint256 indexed nodeId, uint256 points);\n\n  /**\n   * @dev V8: Event fired when endorsements paused state changes.\n   */\n  event EndorsementsPausedUpdated(bool paused);\n\n  /**\n   * @dev V8: Event fired when max points per node per app is updated.\n   */\n  event MaxPointsPerNodePerAppUpdated(uint256 oldMax, uint256 newMax);\n\n  /**\n   * @dev V8: Event fired when max points per app is updated.\n   */\n  event MaxPointsPerAppUpdated(uint256 oldMax, uint256 newMax);\n\n  /**\n   * @dev V8: Event fired when an app admin voluntarily delists their app.\n   */\n  event AppSelfBlacklisted(bytes32 indexed appId, address indexed admin);\n\n  /**\n   * @dev Event fired when the node strength scores are updated.\n   */\n  event NodeStrengthScoresUpdated(EndorsementUtils.NodeStrengthScores indexed nodeStrengthScores);\n\n  /**\n   * @dev Generates the hash of the app name to be used as the app id.\n   *\n   * @param name the name of the app\n   */\n  function hashAppName(string memory name) external pure returns (bytes32);\n\n  /**\n   * @dev Get the app data by its id.\n   *\n   * @param appId the id of the app\n   */\n  function app(bytes32 appId) external view returns (X2EarnAppsDataTypes.AppWithDetailsReturnType memory);\n\n  /**\n   * @notice Get all the apps that exist in the VeBetter DAO ecosystem.\n   * @dev An XApp must have been included in at least one allocation round to be considered an existing app.\n   */\n  function apps() external view returns (X2EarnAppsDataTypes.AppWithDetailsReturnType[] memory);\n\n  /**\n   * @dev Add a new moderator to the app.\n   *\n   * @param appId the id of the app\n   * @param moderator the address of the moderator\n   *\n   * Emits a {ModeratorAddedToApp} event.\n   */\n  function addAppModerator(bytes32 appId, address moderator) external;\n\n  /**\n   * @dev Remove a moderator from the app.\n   *\n   * @param appId the id of the app\n   * @param moderator the address of the moderator\n   *\n   * Emits a {ModeratorRemovedFromApp} event.\n   */\n  function removeAppModerator(bytes32 appId, address moderator) external;\n\n  /**\n   * @dev Set the app admin.\n   *\n   * @param appId the id of the app\n   * @param admin the address of the admin\n   *\n   * Emits a {AppAdminUpdated} event.\n   */\n  function setAppAdmin(bytes32 appId, address admin) external;\n\n  /**\n   * @dev Add a new creator to the app.\n   *\n   * @param appId the id of the app\n   * @param creator the address of the creator\n   *\n   * Emits a {CreatorAddedToApp} event.\n   */\n  function addCreator(bytes32 appId, address creator) external;\n\n  /**\n   * @dev Check if a creator has already been used for another app.\n   *\n   * @param creator the address of the creator\n   */\n  function isCreatorOfAnyApp(address creator) external returns (bool);\n\n  /**\n   * @dev Remove a creator from the app.\n   *\n   * @param appId the id of the app\n   * @param creator the address of the creator\n   *\n   * Emits a {CreatorRemovedFromApp} event.\n   */\n  function removeAppCreator(bytes32 appId, address creator) external;\n\n  /**\n   * @dev Get the creators of an app.\n   *\n   * @param appId the id of the app\n   */\n  function appCreators(bytes32 appId) external view returns (address[] memory);\n\n  /**\n   * @dev Get the number of apps created by an account.\n   *\n   * @param creator the address of the creator\n   */\n  function creatorApps(address creator) external view returns (uint256);\n\n  /**\n   * @dev Get the app admin.\n   *\n   * @param appId the id of the app\n   */\n  function appAdmin(bytes32 appId) external view returns (address);\n\n  /**\n   * @dev Check if an account is the admin of the app\n   *\n   * @param appId the hashed name of the app\n   * @param account the address of the account\n   */\n  function isAppAdmin(bytes32 appId, address account) external view returns (bool);\n\n  /**\n   * @dev Update the address where the x2earn app receives allocation funds.\n   *\n   * @param appId the id of the app\n   * @param newTeamWalletAddress the new address where the app should receive allocation funds\n   *\n   * Emits a {TeamWalletAddressUpdated} event.\n   */\n  function updateTeamWalletAddress(bytes32 appId, address newTeamWalletAddress) external;\n\n  /**\n   * @dev Get the address where the x2earn app receives allocation funds.\n   *\n   * @param appId the id of the app\n   */\n  function teamWalletAddress(bytes32 appId) external view returns (address);\n\n  /**\n   * @dev Function to get the percentage of the allocation sent to the team address each round.\n   *\n   * @param appId the app id\n   */\n  function teamAllocationPercentage(bytes32 appId) external view returns (uint256);\n\n  /**\n   * @dev Update the allocation percentage to be sent to the team\n   *\n   * @param appId the id of the app\n   * @param percentage the new percentage of the allocation\n   */\n  function setTeamAllocationPercentage(bytes32 appId, uint256 percentage) external;\n\n  /**\n   * @dev Add a new reward distributor to the app.\n   *\n   * @param appId the id of the app\n   * @param distributorAddress the address of the reward distributor\n   *\n   * Emits a {RewardDistributorAddedToApp} event.\n   */\n  function addRewardDistributor(bytes32 appId, address distributorAddress) external;\n\n  /**\n   * @dev Remove a reward distributor from the app.\n   *\n   * @param appId the id of the app\n   * @param distributorAddress the address of the reward distributor\n   *\n   * Emits a {RewardDistributorRemovedFromApp} event.\n   */\n  function removeRewardDistributor(bytes32 appId, address distributorAddress) external;\n\n  /**\n   * @dev Returns true if an account is a reward distributor of the app\n   *\n   * @param appId the id of the app\n   * @param distributorAddress the address of the account\n   */\n  function isRewardDistributor(bytes32 appId, address distributorAddress) external view returns (bool);\n\n  /**\n   * @dev Enable the rewards pool for a new app.\n   *\n   * @param appId the id of the app\n   */\n  function enableRewardsPoolForNewApp(bytes32 appId) external;\n\n  /**\n   * @notice Checks endorsements for a given app and updates its voting eligibility based on the endorsements' scores.\n   *\n   * @dev This function is intended to be called by a cron job prior to the start of each voting round.\n   * If the app has less than 100 points, the grace period elasped is checked.\n   * If the grace period elapsed by the app is greater than the threshold grace period, the app is marked as not eligible for voting.\n   * If an endorser has lost its node status (level 0), it is removed from the endorsers list.\n   *\n   * @param appId The unique identifier of the app being checked.\n   * @return True if the app is eligible for voting.\n   */\n  function checkEndorsement(bytes32 appId) external returns (bool);\n\n  /**\n   * @dev Update the metadata URI of the app.\n   *\n   * @param appId the id of the app\n   * @param metadataURI the new metadata URI of the app containing details about the app\n   *\n   * Emits a {AppMetadataURIUpdated} event.\n   */\n  function updateAppMetadata(bytes32 appId, string memory metadataURI) external;\n\n  /**\n   * @dev Check if there is an app with the specified `appId`.\n   * @dev This function should be used to check if an app exists is part of the VeBetter DAO ecosystem.\n   * @notice An app is considered to exist if it has been included in at least one allocation round.\n   *\n   * @param appId the id of the app\n   */\n  function appExists(bytes32 appId) external view returns (bool);\n\n  /**\n   * @dev Check if an app is blacklisted.\n   *\n   * @param appId the id of the app\n   */\n  function isBlacklisted(bytes32 appId) external view returns (bool);\n\n  /**\n   * @dev Allow or deny an app to participate in the next allocation voting rounds.\n   *\n   * @param _appId the id of the app\n   * @param _isEligible true if the app should be eligible for voting, false otherwise\n   *\n   * Emits a {VotingEligibilityUpdated} event.\n   */\n  function setVotingEligibility(bytes32 _appId, bool _isEligible) external;\n\n  /**\n   * @dev Get all the app ids that are eligible for voting in the next allocation rounds.\n   */\n  function allEligibleApps() external view returns (bytes32[] memory);\n\n  /**\n   * @dev Check if an app was allowed to participate in the allocation rounds in a specific timepoint.\n   * XAllocationVoting contract can use this function to check if an app was eligible for voting in the block when the round starts.\n   *\n   * @param appId the id of the app\n   * @param timepoint the timepoint when the app should be checked for Eligibility\n   */\n  function isEligible(bytes32 appId, uint256 timepoint) external view returns (bool);\n\n  /**\n   * @dev return the base URI for the contract\n   */\n  function baseURI() external view returns (string memory);\n\n  /**\n   * @dev return the grace period for an XApp to find new endorsers after the previous one was removed.\n   */\n  function gracePeriod() external view returns (uint256);\n\n  /**\n   * @dev return true if an app is pending for endorsement.\n   */\n  function isAppUnendorsed(bytes32 appId) external view returns (bool);\n\n  /**\n   * @notice Gets the ids of all apps that are looking for endorsement.\n   * @return the ids of the apps that are pending for endorsement\n   */\n  function unendorsedAppIds() external view returns (bytes32[] memory);\n\n  /**\n   * @notice Gets the information about all apps that are looking for endorsement.\n   * @return the information about the apps that are pending for endorsement\n   */\n  function unendorsedApps() external view returns (X2EarnAppsDataTypes.AppWithDetailsReturnType[] memory);\n\n  /**\n   * @dev Get the endorsement score of an app.\n   *\n   * @param appId the id of the app\n   */\n  function getScore(bytes32 appId) external returns (uint256);\n\n  /**\n   * @notice Returns the endorsement score for an app at a specific block number.\n   * @param appId The unique identifier of the app.\n   * @param timepoint The block number to query.\n   * @return The endorsement score at the given timepoint.\n   */\n  function getScoreAtTimepoint(bytes32 appId, uint256 timepoint) external view returns (uint256);\n\n  /**\n   * @dev Get the endorsers of an app.\n   *\n   * @param appId the id of the app\n   */\n  function getEndorsers(bytes32 appId) external view returns (address[] memory);\n\n  /**\n   * @notice Get all endorser node IDs for an app.\n   */\n  function getEndorserNodes(bytes32 appId) external view returns (uint256[] memory);\n\n  /**\n   * @dev Get the endorsersment score of an individual.\n   *\n   * @param user the address of the user who holds a NODE\n   */\n  function getUsersEndorsementScore(address user) external view returns (uint256);\n\n  /**\n   * @dev Get the endorsersment score of a node ID.\n   *\n   * @param nodeId the ID of a node.\n   */\n  function getNodeEndorsementScore(uint256 nodeId) external view returns (uint256);\n\n  /**\n   * @notice Get the version of the contract.\n   * @dev This should be updated every time a new version of implementation is deployed.\n   */\n  function version() external view returns (string memory);\n\n  /**\n   * @dev Register a new app.\n   *\n   * @param _teamWalletAddress the address where the app will receive the allocation funds\n   * @param _admin the address of the admin\n   * @param _appName the name of the app\n   * @param _appMetadataURI the metadata URI of the app\n   *\n   * Emits a {AppAdded} event.\n   */\n  function submitApp(\n    address _teamWalletAddress,\n    address _admin,\n    string memory _appName,\n    string memory _appMetadataURI\n  ) external;\n\n  /**\n   * @dev Update the the endorsement scores of each node level.\n   *\n   * @param _nodeStrengthScores The node level scores to update.\n   *\n   * Emits a {NodeStrengthScoreUpdated} event.\n   */\n  function updateNodeEndorsementScores(EndorsementUtils.NodeStrengthScores calldata _nodeStrengthScores) external;\n\n  /**\n   * @notice Update the endorsement score threshold\n   * @dev This should be minimum endorsement score required for an app to be eligible for voting.\n   *\n   * @param _scoreThreshold the new score threshold\n   *\n   * Emits a {EndorsementScoreThresholdUpdated} event.\n   */\n\n  function updateEndorsementScoreThreshold(uint256 _scoreThreshold) external;\n\n  /**\n   * @notice This function can be called by an XAPP admin that wishes to remove an endorserment from a specific node ID\n   * @dev Can only be valled by DEFAULT_ADMIN or XAPP admin\n   * @param _appId The unique identifier of the app that wishes to be unendorsed.\n   * @param _nodeId The unique identifier of the node they wish to remove from their list of endorsers.\n   */\n  function removeNodeEndorsement(bytes32 _appId, uint256 _nodeId) external;\n\n  /**\n   * @dev Get the score threshold.\n   */\n  function endorsementScoreThreshold() external view returns (uint256);\n\n  /**\n   * @dev Remove an XApps submission.\n   */\n  function removeXAppSubmission(bytes32 _appId) external;\n\n  /**\n   * @notice this function returns the endorsement score of a node level\n   * @param nodeLevel The strength level of the node.\n   * @return uint256 The endorsement score of the node level.\n   */\n  function nodeLevelEndorsementScore(uint8 nodeLevel) external view returns (uint256);\n\n  /**\n   * @dev Get the cooldown period for a node in seconds.\n   */\n  function cooldownPeriod() external view returns (uint256);\n\n  /**\n   * @notice Function to update the grace period.\n   * @param _newGracePeriod The new grace period.\n   * Emits a {GracePeriodUpdated} event.\n   */\n  function updateGracePeriod(uint48 _newGracePeriod) external;\n\n  /**\n   * @notice Function to update the cooldown period.\n   * @param _newCooldownPeriod The new cooldown period.\n   * Emits a {CooldownPeriodUpdated} event.\n   */\n  function updateCooldownPeriod(uint256 _newCooldownPeriod) external;\n\n  // ---------- V8 Flexible Endorsement ---------- //\n\n  /**\n   * @notice Endorse an app with a specified number of points.\n   * @param appId The app to endorse.\n   * @param nodeId The node endorsing.\n   * @param points Number of points to endorse.\n   */\n  function endorseApp(bytes32 appId, uint256 nodeId, uint256 points) external;\n\n  /**\n   * @notice Unendorse an app by removing points.\n   * @param appId The app to unendorse.\n   * @param nodeId The node unendorsing.\n   * @param points Number of points to remove (0 = remove all).\n   */\n  function unendorseApp(bytes32 appId, uint256 nodeId, uint256 points) external;\n\n  /**\n   * @notice Pause endorsement operations.\n   */\n  function pauseEndorsements() external;\n\n  /**\n   * @notice Unpause endorsement operations.\n   */\n  function unpauseEndorsements() external;\n\n  /**\n   * @notice Seed endorsement during migration.\n   */\n  function seedEndorsement(bytes32 appId, uint256 nodeId, uint256 points) external;\n\n  /**\n   * @notice Mark migration as complete.\n   */\n  function markMigrationComplete() external;\n\n  /**\n   * @notice Set max points per node per app.\n   */\n  function setMaxPointsPerNodePerApp(uint256 maxPoints) external;\n\n  /**\n   * @notice Set max total points per app.\n   */\n  function setMaxPointsPerApp(uint256 maxPoints) external;\n\n  /**\n   * @notice Get available endorsement points for a node.\n   */\n  function getNodeAvailablePoints(uint256 nodeId) external view returns (uint256);\n\n  /**\n   * @notice Get comprehensive info about a node's endorsement points.\n   */\n  function getNodePointsInfo(uint256 nodeId) external view returns (X2EarnAppsStorageTypes.NodePointsInfo memory);\n\n  /**\n   * @notice Get all active endorsements for a node.\n   */\n  function getNodeActiveEndorsements(\n    uint256 nodeId\n  ) external view returns (X2EarnAppsStorageTypes.Endorsement[] memory);\n\n  /**\n   * @notice Check if node can unendorse an app (cooldown expired).\n   */\n  function canUnendorse(uint256 nodeId, bytes32 appId) external view returns (bool);\n\n  /**\n   * @notice Get max points per node per app.\n   */\n  function maxPointsPerNodePerApp() external view returns (uint256);\n\n  /**\n   * @notice Get max points per app.\n   */\n  function maxPointsPerApp() external view returns (uint256);\n\n  /**\n   * @notice Check if endorsements are paused.\n   */\n  function endorsementsPaused() external view returns (bool);\n\n  /**\n   * @notice V8 initializer for flexible endorsement config.\n   */\n  function initializeV8(uint256 _maxPointsPerNodePerApp, uint256 _maxPointsPerApp) external;\n\n  /**\n   * @notice Allows an app admin to voluntarily blacklist their app from allocation voting.\n   * @dev Blacklists the app and revokes creator NFTs. Only governance can restore.\n   * @param _appId The unique identifier of the app.\n   */\n  function selfBlacklistApp(bytes32 _appId) external;\n}\n"},"contracts/interfaces/IX2EarnCreator.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\ninterface IX2EarnCreator {\n  // ---------------- Role Management ----------------\n\n  /// @notice Grants a role to an account\n  /// @param role The role to assign\n  /// @param account The account to grant the role to\n  function grantRole(bytes32 role, address account) external;\n\n  /// @notice Revokes a role from an account\n  /// @param role The role to revoke\n  /// @param account The account to revoke the role from\n  function revokeRole(bytes32 role, address account) external;\n\n  /// @notice Checks if an account has a specific role\n  /// @param role The role identifier\n  /// @param account The account to check\n  /// @return Boolean indicating if the account has the role\n  function hasRole(bytes32 role, address account) external view returns (bool);\n\n  // ---------------- Token Management ----------------\n\n  /// @notice Mints a new token to the specified address\n  /// @param to The address to receive the token\n  function safeMint(address to) external;\n\n  /// @notice Allows a user to mint a Creator NFT to themselves when self-minting is enabled\n  function selfMint() external;\n\n  /// @notice Returns whether self-minting is enabled\n  function selfMintEnabled() external view returns (bool);\n\n  /// @notice Burns a specified token, removing it from circulation\n  /// @param tokenId The ID of the token to burn\n  function burn(uint256 tokenId) external;\n\n  /// @notice Retrieves the token URI for a given token ID\n  /// @param tokenId The ID of the token\n  /// @return The URI pointing to the token's metadata\n  function tokenURI(uint256 tokenId) external view returns (string memory);\n\n  // ---------------- Pausing Management ----------------\n\n  /// @notice Pauses all minting and burning functions\n  function pause() external;\n\n  /// @notice Unpauses minting and burning functions\n  function unpause() external;\n\n  /// @notice Returns whether the contract is paused\n  /// @return Boolean indicating whether the contract is paused\n  function paused() external view returns (bool);\n\n  // ---------------- Enumeration Functions ----------------\n\n  /// @notice Gets the total number of tokens in existence\n  /// @return Total supply of tokens\n  function totalSupply() external view returns (uint256);\n\n  /// @notice Gets the token ID owned by `owner` at a specific `index`\n  /// @param owner Address owning the tokens\n  /// @param index Index of the token in the owner's list of tokens\n  /// @return Token ID owned by `owner` at the specified `index`\n  function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n  /// @notice Gets the token ID at a specific global `index`\n  /// @param index Index of the token in the total supply\n  /// @return Token ID at the specified `index`\n  function tokenByIndex(uint256 index) external view returns (uint256);\n\n  // ---------------- View Functions ----------------\n\n  /// @notice Checks if the contract supports a specific interface\n  /// @param interfaceId The interface identifier\n  /// @return Boolean indicating if the interface is supported\n  function supportsInterface(bytes4 interfaceId) external view returns (bool);\n\n  /// @notice Returns the balance of tokens held by `owner`\n  /// @param owner Address to query the balance of\n  /// @return Balance of tokens held by `owner`\n  function balanceOf(address owner) external view returns (uint256);\n}\n"},"contracts/interfaces/IX2EarnRewardsPool.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.20;\n\n/**\n * @title IX2EarnRewardsPool\n * @dev Interface designed to be used by a contract that allows x2Earn apps to reward users that performed sustainable actions.\n * Funds can be deposited into this contract by specifying the app id that can access the funds.\n * Admins of x2EarnApps can withdraw funds from the rewards pool, whihc are sent to the team wallet.\n */\ninterface IX2EarnRewardsPool {\n  /**\n   * @dev Event emitted when a new deposit is made into the rewards pool.\n   *\n   * @param amount The amount of $B3TR deposited.\n   * @param appId The ID of the app for which the deposit was made.\n   * @param depositor The address of the user that deposited the funds.\n   */\n  event NewDeposit(uint256 amount, bytes32 indexed appId, address indexed depositor);\n\n  /**\n   * @dev Event emitted when a team withdraws funds from the rewards pool.\n   *\n   * @param amount The amount of $B3TR withdrawn.\n   * @param appId The ID of the app for which the withdrawal was made.\n   * @param teamWallet The address of the team wallet that received the funds.\n   * @param withdrawer The address of the user that withdrew the funds.\n   * @param reason The reason for the withdrawal.\n   */\n  event TeamWithdrawal(\n    uint256 amount,\n    bytes32 indexed appId,\n    address indexed teamWallet,\n    address withdrawer,\n    string reason\n  );\n\n  /**\n   * @dev Event emitted when a reward is emitted by an app.\n   *\n   * @param amount The amount of $B3TR rewarded.\n   * @param appId The ID of the app that emitted the reward.\n   * @param receiver The address of the user that received the reward.\n   * @param proof The proof of the sustainable action that was performed.\n   * @param distributor The address of the user that distributed the reward.\n   */\n  event RewardDistributed(\n    uint256 amount,\n    bytes32 indexed appId,\n    address indexed receiver,\n    string proof,\n    address indexed distributor\n  );\n\n  /**\n   * @dev Event emitted when the proof of sustainability external contract call fails.\n   *\n   * @param reason The reason for the failure.\n   * @param lowLevelData The low level data returned by the external contract.\n   */\n  event RegisterActionFailed(string reason, bytes lowLevelData);\n\n  /**\n   * @dev Event emitted when an app's reward distribution is paused.\n   * @param appId The ID of the app that was paused.\n   * @param admin The address of the admin who paused the app.\n   */\n  event AppPaused(bytes32 indexed appId, address indexed admin);\n\n  /**\n   * @dev Event emitted when an app's reward distribution is unpaused.\n   * @param appId The ID of the app that was unpaused.\n   * @param admin The address of the admin who unpaused the app.\n   */\n  event AppUnpaused(bytes32 indexed appId, address indexed admin);\n\n\n/**\n  * @dev Event emitted when a reward is emitted by an app with proof and metadata.\n  * @param amount The amount of $B3TR rewarded.\n  * @param appId The ID of the app that emitted the reward.\n  * @param receiver The address of the user that received the reward.\n  * @param metadata The metadata of the sustainable action that was performed.\n  * @param distributor The address of the user that distributed the reward.\n */\n  event RewardMetadata(\n    uint256 amount,\n    bytes32 indexed appId,\n    address indexed receiver,\n    string metadata,\n    address indexed distributor\n  );\n\n  /**\n   * @dev Event emitted when the admin configure the rewards pool balance\n   *\n   * @param appId - the app ID\n   * @param enable - true to enable, false to disable\n   */\n  event RewardsPoolBalanceEnabled(bytes32 indexed appId, bool enable);\n\n  /**\n   * @dev Event emitted when the balance of the rewards pool for an app is initialized or updated.\n   *\n   * @param appId The ID of the app for which the balance was updated.\n   * @param amount The amount being added or removed from the rewards pool.\n   * @param availableFunds The current balance of the available funds for the app.\n   * @param rewardsPoolBalance The current balance of the rewards pool for the app.\n   */\n  event RewardsPoolBalanceUpdated(bytes32 indexed appId, uint256 amount, uint256 availableFunds, uint256 rewardsPoolBalance);\n\n\n  /**\n   * @dev Retrieves the current version of the contract.\n   *\n   * @return The version of the contract.\n   */\n  function version() external pure returns (string memory);\n\n  /**\n   * @dev Function used by x2earn apps to deposit funds into the rewards pool.\n   *\n   * @param amount The amount of $B3TR to deposit.\n   * @param appId The ID of the app.\n   */\n  function deposit(uint256 amount, bytes32 appId) external returns (bool);\n\n  /**\n   * @dev Function used by x2earn apps to withdraw funds from the rewards pool.\n   *\n   * @param amount The amount of $B3TR to withdraw.\n   * @param appId The ID of the app.\n   * @param reason The reason for the withdrawal.\n   */\n  function withdraw(uint256 amount, bytes32 appId, string memory reason) external;\n\n  /**\n   * @dev Gets the amount of funds available for an app to withdraw and reward user if the dual-pool is disabled.\n   *\n   * @param appId The ID of the app.\n   */\n  function availableFunds(bytes32 appId) external view returns (uint256);\n\n  /**\n   * @dev Gets the total of funds available for withdrawal and rewards distribution.\n   *\n   * @param appId The ID of the app.\n   */\n  function totalBalance(bytes32 appId) external view returns (uint256);\n\n  /**\n   * @dev Gets either the dual-pool rewards pool balance is enabled or not.\n   *\n   * @param appId The ID of the app.\n   */\n  function isRewardsPoolEnabled(bytes32 appId) external view returns (bool);\n\n  /**\n   * @dev Gets whether the distribution is paused or not for a specific xApp\n   *\n   * @param appId The ID of the app.\n   */\n  function isDistributionPaused(bytes32 appId) external view returns (bool);\n\n  /**\n   * @dev Enables the rewards pool for a newly created app.\n   * @param appId The ID of the app.\n   * @notice This function can only be called by the X2EarnApps contract during app submission\n   */\n  function enableRewardsPoolForNewApp(bytes32 appId) external;  \n\n  /**\n   * @dev Gets the amount of funds available for an app to reward users if the dual-pool is enabled.\n   *\n   * @param appId The ID of the app.\n   */\n  function rewardsPoolBalance(bytes32 appId) external view returns (uint256);\n  \n  /**\n   * @dev Function used by x2earn apps to reward users that performed sustainable actions.\n   *\n   * @param appId the app id that is emitting the reward\n   * @param amount the amount of B3TR token the user is rewarded with\n   * @param receiver the address of the user that performed the sustainable action and is rewarded\n   * @param proof deprecated argument, pass an empty string instead\n   */\n  function distributeReward(bytes32 appId, uint256 amount, address receiver, string memory proof) external;\n\n  /**\n   * @dev Function used by x2earn apps to reward users that performed sustainable actions.\n   * @notice This function is depracted in favor of distributeRewardWithProof.\n   *\n   * @param appId the app id that is emitting the reward\n   * @param amount the amount of B3TR token the user is rewarded with\n   * @param receiver the address of the user that performed the sustainable action and is rewarded\n   * @param proof the JSON string that contains the proof and impact of the sustainable action\n   */\n  function distributeRewardDeprecated(bytes32 appId, uint256 amount, address receiver, string memory proof) external;\n\n  /**\n   * @dev Function used by x2earn apps to reward users that performed sustainable actions.\n   *\n   * @param appId the app id that is emitting the reward\n   * @param amount the amount of B3TR token the user is rewarded with\n   * @param receiver the address of the user that performed the sustainable action and is rewarded\n   * @param proofTypes the types of the proof of the sustainable action\n   * @param proofValues the values of the proof of the sustainable action\n   * @param impactCodes the codes of the impacts of the sustainable action\n   * @param impactValues the values of the impacts of the sustainable action\n   * @param description the description of the sustainable action\n   */\n  function distributeRewardWithProof(\n    bytes32 appId,\n    uint256 amount,\n    address receiver,\n    string[] memory proofTypes, // link, image, video, text, etc.\n    string[] memory proofValues, // \"https://...\", \"Qm...\", etc.,\n    string[] memory impactCodes, // carbon, water, etc.\n    uint256[] memory impactValues, // 100, 200, etc.,\n    string memory description\n  ) external;\n\n  /**\n   * @dev Function used by x2earn apps to reward users that performed sustainable actions and emit metadata event.\n   *\n   * @param appId the app id that is emitting the reward\n   * @param amount the amount of B3TR token the user is rewarded with\n   * @param receiver the address of the user that performed the sustainable action and is rewarded\n   * @param proofTypes the types of the proof of the sustainable action\n   * @param proofValues the values of the proof of the sustainable action\n   * @param impactCodes the codes of the impacts of the sustainable action\n   * @param impactValues the values of the impacts of the sustainable action\n   * @param description the description of the sustainable action\n   * @param metadata the metadata of the sustainable action\n   */\n  function distributeRewardWithProofAndMetadata(\n    bytes32 appId,\n    uint256 amount,\n    address receiver,\n    string[] memory proofTypes, // link, image, video, text, etc.\n    string[] memory proofValues, // \"https://...\", \"Qm...\", etc.,\n    string[] memory impactCodes, // carbon, water, etc.\n    uint256[] memory impactValues, // 100, 200, etc.,\n    string memory description,\n    string memory metadata // \"{'country': 'Brazil', 'city': 'Brasilia'}\"\n  ) external;\n\n  /**\n   * @dev Function used by x2earn apps to reward users and attribute the action to a specific round.\n   *\n   * @param appId the app id that is emitting the reward\n   * @param amount the amount of B3TR token the user is rewarded with\n   * @param receiver the address of the user that performed the sustainable action and is rewarded\n   * @param proof deprecated argument, pass an empty string instead\n   * @param actionRound the round in which the action was actually performed\n   */\n  function distributeRewardForRound(\n    bytes32 appId,\n    uint256 amount,\n    address receiver,\n    string memory proof,\n    uint256 actionRound\n  ) external;\n\n  /**\n   * @dev Function used by x2earn apps to reward users with proof and attribute the action to a specific round.\n   *\n   * @param appId the app id that is emitting the reward\n   * @param amount the amount of B3TR token the user is rewarded with\n   * @param receiver the address of the user that performed the sustainable action and is rewarded\n   * @param proofTypes the types of the proof of the sustainable action\n   * @param proofValues the values of the proof of the sustainable action\n   * @param impactCodes the codes of the impacts of the sustainable action\n   * @param impactValues the values of the impacts of the sustainable action\n   * @param description the description of the sustainable action\n   * @param actionRound the round in which the action was actually performed\n   */\n  function distributeRewardWithProofForRound(\n    bytes32 appId,\n    uint256 amount,\n    address receiver,\n    string[] memory proofTypes,\n    string[] memory proofValues,\n    string[] memory impactCodes,\n    uint256[] memory impactValues,\n    string memory description,\n    uint256 actionRound\n  ) external;\n\n  /**\n   * @dev Function used by x2earn apps to reward users with proof, metadata and attribute the action to a specific round.\n   *\n   * @param appId the app id that is emitting the reward\n   * @param amount the amount of B3TR token the user is rewarded with\n   * @param receiver the address of the user that performed the sustainable action and is rewarded\n   * @param proofTypes the types of the proof of the sustainable action\n   * @param proofValues the values of the proof of the sustainable action\n   * @param impactCodes the codes of the impacts of the sustainable action\n   * @param impactValues the values of the impacts of the sustainable action\n   * @param description the description of the sustainable action\n   * @param metadata the metadata of the sustainable action\n   * @param actionRound the round in which the action was actually performed\n   */\n  function distributeRewardWithProofAndMetadataForRound(\n    bytes32 appId,\n    uint256 amount,\n    address receiver,\n    string[] memory proofTypes,\n    string[] memory proofValues,\n    string[] memory impactCodes,\n    uint256[] memory impactValues,\n    string memory description,\n    string memory metadata,\n    uint256 actionRound\n  ) external;\n\n  /**\n   * @dev Builds the JSON proof string that will be stored\n   * on chain regarding the proofs, impacts and description of the sustainable action.\n   *\n   * @param proofTypes the types of the proof of the sustainable action\n   * @param proofValues the values of the proof of the sustainable action\n   * @param impactCodes the codes of the impacts of the sustainable action\n   * @param impactValues the values of the impacts of the sustainable action\n   * @param description the description of the sustainable action\n   */\n  function buildProof(\n    string[] memory proofTypes, // link, photo, video, text, etc.\n    string[] memory proofValues, // \"https://...\", \"Qm...\", etc.,\n    string[] memory impactCodes, // carbon, water, etc.\n    uint256[] memory impactValues, // 100, 200, etc.,\n    string memory description\n  ) external returns (string memory);\n}\n"},"contracts/interfaces/IXAllocationVotingGovernor.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nimport { IERC165 } from \"@openzeppelin/contracts/interfaces/IERC165.sol\";\nimport { IERC6372 } from \"@openzeppelin/contracts/interfaces/IERC6372.sol\";\n\n/**\n * @dev Interface of the distribution allocation voting for the x-allocation pool reward distributions.\n * This interface was forked from OpenZeppelin's IGovernor.sol and modified to fit the needs of a voting mechanism\n * where a user can vote on multpile x-apps belonging to the ecosystem and fractionalize their votes accross the x-apps.\n *\n * There can be only one round per time.\n * After the round is created  it becomes immediately active.\n * There can be only two possible outcomes of a round: it succeeds or it fails.\n * To succeed the only requirement is that the quorum is reached.\n *\n * New allocation rounds can be started only by the Emissions contract, this way we can align the duration\n * of emission cycles and allocation rounds.\n *\n * If the round fails, we will need to “finalize” it, which means we will create a pointer to the last succeeded round\n * where shares should be calculated. Anyone can finalize the failed round,\n * but it will be automatically done when a new round starts.\n */\ninterface IXAllocationVotingGovernor is IERC165, IERC6372 {\n  enum RoundState {\n    Active,\n    Failed,\n    Succeeded\n  }\n\n  /**\n   * @dev The vote was already cast.\n   */\n  error GovernorAlreadyCastVote(address voter);\n\n  /**\n   * @dev The `account` is not the governance executor.\n   */\n  error B3TRGovernorOnlyExecutor(address account);\n\n  /**\n   * @dev The `roundId` doesn't exist.\n   */\n  error GovernorNonexistentRound(uint256 roundId);\n\n  /**\n   * @dev The current state of a round is not the required for performing an operation.\n   * The `expectedStates` is a bitmap with the bits enabled for each RoundState enum position\n   * counting from right to left.\n   *\n   * NOTE: If `expectedState` is `bytes32(0)`, the round is expected to not be in any state (i.e. not exist).\n   * This is the case when a round that is expected to be unset is already initiated (the round is duplicated).\n   *\n   * See {Governor-_encodeStateBitmap}.\n   */\n  error GovernorUnexpectedRoundState(uint256 roundId, RoundState current, bytes32 expectedStates);\n\n  /**\n   * @dev The voting period set is not a valid period.\n   */\n  error GovernorInvalidVotingPeriod(uint256 votingPeriod);\n\n  /**\n   * @dev The `appId` is not present in the list with the available x-apps for voting in this round.\n   */\n  error GovernorAppNotAvailableForVoting(bytes32 appId);\n\n  /**\n   * @dev The `votingThreshold` is not met.\n   */\n  error GovernorVotingThresholdNotMet(uint256 threshold, uint256 votes);\n\n  /**\n   * @dev The `voter` has insufficient voting power for this round to cast the votes.\n   */\n  error GovernorInsufficientVotingPower();\n\n  /**\n   * @dev The `voter` has voted for the same app multiple times in the same transaction.\n   */\n  error DuplicateAppVote();\n\n  /**\n   * The `voter` is not identified as a person via the VeBetterPassport.\n   */\n  error GovernorPersonhoodVerificationFailed(address person, string reason);\n\n  /**\n   * @dev The `person` is not identified as a person via the VeBetterPassport.\n   */\n  error XAllocationVotingPersonhoodVerificationFailed(address person);\n\n  /**\n   * @dev The `voter` has auto-voting not enabled.\n   */\n  error AutoVotingNotEnabled(address voter);\n\n  /**\n   * @dev The `voter` has auto-voting enabled.\n   */\n  error AutoVotingEnabled(address voter);\n\n  /**\n   * @dev Thrown when a zero address is provided for a contract address parameter\n   * @param contractName The name/type of the contract that cannot be zero address\n   */\n  error InvalidContractAddress(string contractName);\n\n  /**\n   * @dev The `caller` is not valid\n   */\n  error InvalidCaller(address caller);\n\n  /**\n   * @dev Citizen is not delegated to any navigator\n   */\n  error NotDelegatedToNavigator(address citizen);\n\n  /**\n   * @dev Citizen is delegated to a navigator and cannot vote manually\n   */\n  error DelegatedToNavigator(address citizen);\n\n  /**\n   * @dev Navigator cannot enable auto-voting\n   */\n  error NavigatorCannotEnableAutoVoting(address navigator);\n\n  /**\n   * @dev Navigator has not set allocation preferences for the round\n   */\n  error NavigatorPreferencesNotSet(address navigator, uint256 roundId);\n\n  /**\n   * @dev The skip window (minimum time into the round before skips are allowed) has not been reached\n   */\n  error SkipWindowNotReached(uint256 roundId);\n\n  /**\n   * @dev The voter has already been processed (voted or skipped) for this round\n   */\n  error VoteAlreadyProcessed(address voter, uint256 roundId);\n\n  /**\n   * @dev Emitted when auto-voting is skipped.\n   */\n  event AutoVoteSkipped(\n    address indexed voter,\n    uint256 indexed roundId,\n    bool isPerson,\n    uint256 appCount,\n    uint256 votingPower\n  );\n\n  /**\n   * @dev Emitted when a round is created.\n   */\n  event RoundCreated(uint256 roundId, address proposer, uint256 voteStart, uint256 voteEnd, bytes32[] appsIds);\n\n  /**\n   * @dev Emitted when votes are cast.\n   *\n   */\n  event AllocationVoteCast(address indexed voter, uint256 indexed roundId, bytes32[] appsIds, uint256[] voteWeights);\n\n  /**\n   * @dev Emitted when a vote is cast on behalf of an account.\n   */\n  event AllocationAutoVoteCast(\n    address indexed voter,\n    uint256 indexed roundId,\n    bytes32[] appsIds,\n    uint256[] voteWeights\n  );\n\n  /**\n   * @dev Emitted when autovoting is toggled for an account.\n   */\n  event AutoVotingToggled(address indexed account, bool enabled);\n\n  /**\n   * @dev Emitted when the preferred apps are updated for an account.\n   */\n  event PreferredAppsUpdated(address indexed account, bytes32[] apps);\n\n  /**\n   * @dev Emitted when a navigator casts a vote on behalf of a delegated citizen\n   */\n  event NavigatorVoteCast(\n    address indexed citizen,\n    address indexed navigator,\n    uint256 indexed roundId,\n    bytes32[] appsIds,\n    uint256[] voteWeights\n  );\n\n  /**\n   * @dev Emitted when a navigator vote is skipped (navigator dead or no preferences set)\n   */\n  event NavigatorVoteSkipped(address indexed citizen, address indexed navigator, uint256 indexed roundId);\n\n  /**\n   * @dev Emitted when a freshness multiplier is applied to a vote.\n   * @param voter The voter address\n   * @param roundId The round in which the vote was cast\n   * @param fingerprint The XOR fingerprint of the voted apps\n   * @param lastChangedRound The round when the voter's fingerprint last changed\n   * @param multiplier The freshness multiplier applied (basis points, 10000 = 1x)\n   */\n  event FreshnessMultiplierApplied(\n    address indexed voter,\n    uint256 indexed roundId,\n    bytes32 fingerprint,\n    uint256 lastChangedRound,\n    uint256 multiplier\n  );\n\n  /**\n   * @notice module:core\n   * @dev Version of the governor instance (used in building the ERC712 domain separator). Default: \"1\"\n   */\n  function version() external view returns (string memory);\n\n  /**\n   * @notice module:core\n   * @dev Current state of a round\n   */\n  function state(uint256 roundId) external view returns (RoundState);\n\n  /**\n   * @notice module:core\n   * @dev Timepoint used to retrieve user's votes and quorum. If using block number (as per Compound's Comp), the\n   * snapshot is performed at the end of this block. Hence, voting for this round starts at the beginning of the\n   * following block.\n   */\n  function roundSnapshot(uint256 roundId) external view returns (uint256);\n\n  /**\n   * @notice module:core\n   * @dev Timepoint at which votes close. If using block number, votes close at the end of this block, so it is\n   * possible to cast a vote during this block.\n   */\n  function roundDeadline(uint256 roundId) external view returns (uint256);\n\n  /**\n   * @notice module:user-config\n   * @dev Delay between the vote start and vote end. The unit this duration is expressed in depends on the clock\n   * (see EIP-6372) this contract uses.\n   *\n   *\n   * NOTE: This value is stored when the round is submitted so that possible changes to the value do not affect\n   * proposals that have already been submitted. The type used to save it is a uint32. Consequently, while this\n   * interface returns a uint256, the value it returns should fit in a uint32.\n   */\n  function votingPeriod() external view returns (uint256);\n\n  /**\n   * @notice module:user-config\n   * @dev Minimum number of cast voted required for a round to be successful.\n   *\n   * NOTE: The `timepoint` parameter corresponds to the snapshot used for counting vote. This allows to scale the\n   * quorum depending on values such as the totalSupply of a token at this timepoint (see {ERC20Votes}).\n   */\n  function quorum(uint256 timepoint) external view returns (uint256);\n\n  /**\n   * @notice module:user-config\n   * @dev Minimum number of cast voted required for a round to be successful.\n   *\n   * NOTE: The `roundId` parameter corresponds to the round for which the quorum is calculated.\n   */\n  function roundQuorum(uint256 roundId) external view returns (uint256);\n\n  /**\n   * @notice module:reputation\n   * @dev Voting power of an `account` at a specific `timepoint`.\n   *\n   * Note: this can be implemented in a number of ways, for example by reading the delegated balance from one (or\n   * multiple), {ERC20Votes} tokens.\n   */\n  function getVotes(address account, uint256 timepoint) external view returns (uint256);\n\n  /**\n   * @notice module:reputation\n   * @dev Total number of votes cast in an allocation round.\n   */\n  function totalVotes(uint256 roundId) external view returns (uint256);\n\n  /**\n   * @notice module:reputation\n   * @dev Total number of voters in an allocation round.\n   */\n  function totalVoters(uint256 roundId) external view returns (uint256);\n\n  /**\n   * @notice module:reputation\n   * @dev Number of votes cast for a specific app in an allocation round.\n   */\n  function getAppVotes(uint256 roundId, bytes32 appId) external view returns (uint256);\n\n  /**\n   * @notice module:reputation\n   * @dev Sum of the square roots of the votes cast for a specific app in an allocation round used for Quadatic Funding.\n   */\n  function getAppVotesQF(uint256 roundId, bytes32 app) external view returns (uint256);\n\n  /**\n   * @notice module:reputation\n   * @dev Calculates the total sum of the squares of the total Quadratic Funding (QF) votes for all apps in an allocation round.\n   */\n  function totalVotesQF(uint256 roundId) external view returns (uint256);\n\n  /**\n   * @notice module:voting\n   * @dev Returns whether `account` has cast a vote on `roundId`.\n   */\n  function hasVoted(uint256 roundId, address account) external view returns (bool);\n\n  /**\n   * @dev Create a new allocation round (round). Vote starts immediatly and lasts for a\n   * duration specified by {votingPeriod}.\n   *\n   * Emits a {RoundCreated} event.\n   */\n  function startNewRound() external returns (uint256 roundId);\n\n  /**\n   * @dev Cast multiple votes at once\n   *\n   * Emits a {AllocationVoteCast} event.\n   */\n  function castVote(uint256 roundId, bytes32[] memory appsIds, uint256[] memory voteWeights) external;\n\n  /**\n   * @dev Toggle autovoting for a user\n   * @param user The address to toggle autovoting for\n   * @notice This function is only callable by the VOT3 contract or the user themselves\n   */\n  function toggleAutoVoting(address user) external;\n\n  /**\n   * @dev Disable autovoting for a user. Called by NavigatorRegistry when a citizen delegates.\n   * @param user The address to disable autovoting for\n   */\n  function disableAutoVotingFor(address user) external;\n\n  /**\n   * @dev Check if autovoting is enabled for an account\n   * @param user The address to check\n   * @return Whether autovoting is enabled for the account\n   */\n  function isUserAutoVotingEnabled(address user) external view returns (bool);\n\n  /**\n   * @dev Check if autovoting is enabled for an account\n   * @param account The address to check\n   * @return Whether autovoting is enabled for the account\n   */\n  function isUserAutoVotingEnabledInCurrentRound(address account) external view returns (bool);\n\n  /**\n   * @dev Check if autovoting is enabled for an account at a specific round\n   * @param account The address to check\n   * @param roundId The round id to check\n   * @return Whether autovoting is enabled for the account at the specific round\n   */\n  function isUserAutoVotingEnabledForRound(address account, uint256 roundId) external view returns (bool);\n\n  /**\n   * @dev Check if autovoting is enabled for an account at a specific timepoint\n   */\n  function isUserAutoVotingEnabledAtTimepoint(address account, uint48 timepoint) external view returns (bool);\n\n  /**\n   * @dev Returns the current allocation round round.\n   */\n  function currentRoundId() external view returns (uint256);\n\n  /**\n   * @dev Returns the current allocation round block when it starts.\n   */\n  function currentRoundSnapshot() external view returns (uint256);\n\n  /**\n   * @dev Returns the current allocation round block when it ends.\n   */\n  function currentRoundDeadline() external view returns (uint256);\n\n  /**\n   * \n   @dev Returns if quorum was reached for a specific round.\n   */\n  function quorumReached(uint256 roundId) external view returns (bool);\n\n  /**\n   * @dev Returns the ids of apps that are available for voting in a specific round.\n   */\n  function getAppIdsOfRound(uint256 roundId) external view returns (bytes32[] memory);\n\n  /**\n   * @dev Returns if an app can be voted in a specific round.\n   */\n  function isEligibleForVote(bytes32 appId, uint256 roundId) external view returns (bool);\n\n  /**\n   * @dev Checks if the state of the round is {RoundState.Active}.\n   */\n  function isActive(uint256 roundId) external view returns (bool);\n\n  /**\n   * @dev Returns the id of the last round that succeeded.\n   */\n  function latestSucceededRoundId(uint256 roundId) external view returns (uint256);\n\n  /**\n   * @dev Returns true if an account has voted at least one time in any round.\n   */\n  function hasVotedOnce(address user) external view returns (bool);\n\n  /**\n   * @dev Returns the base allocation percentage for funds distribution in a round.\n   */\n  function getRoundBaseAllocationPercentage(uint256 roundId) external view returns (uint256);\n\n  /**\n   * @dev Returns the max amount of shares an app can get in a round.\n   */\n  function getRoundAppSharesCap(uint256 roundId) external view returns (uint256);\n\n  /**\n   * @dev Validates if an account is a person\n   */\n  function validatePersonhoodForCurrentRound(address account) external view returns (bool);\n\n  /// @dev Deprecated: use getVotes instead, which now includes deposit voting power.\n  function getTotalVotingPower(address voter, uint256 roundStart) external view returns (uint256);\n\n  /**\n   * @dev Get the total number of users who enabled auto-voting at the round start\n   */\n  function getTotalAutoVotingUsersAtRoundStart() external view returns (uint208);\n}\n"},"contracts/libraries/X2EarnAppsDataTypes.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nlibrary X2EarnAppsDataTypes {\n  struct App {\n    bytes32 id;\n    string name;\n    uint256 createdAtTimestamp;\n  }\n\n  struct AppWithDetailsReturnType {\n    bytes32 id;\n    address teamWalletAddress;\n    string name;\n    string metadataURI;\n    uint256 createdAtTimestamp;\n    bool appAvailableForAllocationVoting;\n  }\n}\n"},"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.20;\n\nimport { VechainNodesDataTypes } from \"../../NodeManagement/libraries/VechainNodesDataTypes.sol\";\nimport { DataTypes } from \"../../StargateNFT/libraries/DataTypes.sol\";\n\ninterface INodeManagementV3 {\n  enum NodeSource {\n    Node,\n    VeChainNodes,\n    StargateNFT\n  }\n\n  // Struct used to format return values for getUserNodes\n  struct NodeInfo {\n    uint256 nodeId;\n    uint8 nodeLevel;\n    address xNodeOwner;\n    bool isXNodeHolder;\n    bool isXNodeDelegated;\n    bool isXNodeDelegator;\n    bool isXNodeDelegatee;\n    address delegatee;\n  }\n\n  /**\n   * @notice Error indicating that the caller does not own a node.\n   */\n  error NodeManagementNonNodeHolder();\n\n  /**\n   * @notice Error indicating that the node is not currently delegated.\n   */\n  error NodeManagementNodeNotDelegated();\n\n  /**\n   * @notice Error indicating that an address is being set to the zero address.\n   */\n  error NodeManagementZeroAddress();\n\n  /**\n   * @notice Error indicating that an address is being set to the zero address.\n   */\n  error NodeManagementSelfDelegation();\n\n  /**\n   * @notice Error indicating that the node is already delegated to another user.\n   * @param nodeId The ID of the node that is already delegated.\n   * @param delegatee The address of the current delegatee.\n   */\n  error NodeManagementNodeAlreadyDelegated(uint256 nodeId, address delegatee);\n\n  /**\n   * @notice Error indicating that the user does not own the node.\n   * @param nodeId The ID of the node that the user does not own.\n   */\n  error NodeManagementNotNodeOwner(uint256 nodeId);\n\n  /**\n   * @notice Error indicating that the user does not manage the node.\n   * @param nodeId The ID of the node that the user does not manage.\n   */\n  error NodeManagementNotNodeOwnerOrManager(uint256 nodeId);\n\n  /**\n   * @notice Event emitted when a node is delegated or the delegation is removed.\n   * @param nodeId The ID of the node being delegated or having its delegation removed.\n   * @param delegatee The address to which the node is delegated or from which the delegation is removed.\n   * @param delegated A boolean indicating whether the node is delegated (true) or the delegation is removed (false).\n   */\n  event NodeDelegated(uint256 indexed nodeId, address indexed delegatee, bool delegated);\n\n  /**\n   *  @dev Emit when the vechain node contract address is set or updated\n   */\n  event VechainNodeContractSet(address oldContractAddress, address newContractAddress);\n\n  /**\n   *  @dev Emit when the stargate NFT contract address is set or updated\n   */\n  event StargateNftSet(address oldContractAddress, address newContractAddress);\n\n  /**\n   * @notice Error indicating that a node ID is not valid.\n   */\n  error NodeManagementInvalidNodeId();\n\n  /**\n   * @notice Initialize the contract with the specified VeChain Nodes contract, admin, and upgrader addresses.\n   * @param vechainNodesContract The address of the VeChain Nodes contract.\n   * @param admin The address to be granted the default admin role.\n   * @param upgrader The address to be granted the upgrader role.\n   */\n  function initialize(address vechainNodesContract, address admin, address upgrader) external;\n\n  /**\n   * @notice Set the address of the VeChain Nodes contract.\n   * @param vechainNodesContract The new address of the VeChain Nodes contract.\n   */\n  function setVechainNodesContract(address vechainNodesContract) external;\n\n  /**\n   * @notice Set the address of the Stargate NFT contract.\n   * @param stargateNft The new address of the Stargate NFT contract.\n   */\n  function setStargateNft(address stargateNft) external;\n\n  /**\n   * @notice Delegate a node to another address.\n   * @param delegatee The address to delegate the node to.\n   * @param nodeId The ID of the node to delegate.\n   */\n  function delegateNode(address delegatee, uint256 nodeId) external;\n\n  /**\n   * @notice Remove the delegation of a node.\n   * @param nodeId The ID of the node to remove the delegation from.\n   */\n  function removeNodeDelegation(uint256 nodeId) external;\n\n  /**\n   * @notice Retrieve the node ID associated with a user, either through direct ownership or delegation.\n   * @param user The address of the user to check.\n   * @return uint256 The node ID associated with the user.\n   */\n  function getNodeIds(address user) external view returns (uint256[] memory);\n\n  /**\n   * @notice Retrieves the address of the user managing the node ID endorsement either through ownership or delegation.\n   * @param nodeId The ID of the node for which the manager address is being retrieved.\n   * @return address The address of the manager of the specified node.\n   */\n  function getNodeManager(uint256 nodeId) external view returns (address);\n\n  /**\n   * @notice Retrieves the address of the true owner of a node.\n   * @param nodeId The ID of the node for which the owner address is being retrieved.\n   * @return address The address of the owner of the specified node.\n   */\n  function getNodeOwner(uint256 nodeId) external view returns (address);\n\n  /**\n   * @notice Retrieves the node IDs delegated to a user.\n   * @param user The address of the user to check.\n   * @return uint256[] The node IDs delegated to the user.\n   */\n  function getNodesDelegatedTo(address user) external view returns (uint256[] memory);\n\n  /**\n   * @notice Check if a user is holding a specific node ID either directly or through delegation.\n   * @param user The address of the user to check.\n   * @param nodeId The node ID to check for.\n   * @return bool True if the user is holding the node ID and it is a valid node.\n   */\n  function isNodeManager(address user, uint256 nodeId) external view returns (bool);\n\n  /**\n   * @notice Check if a node is delegated.\n   * @param nodeId The node ID to check for.\n   * @return bool True if the node is delegated.\n   */\n  function isNodeDelegated(uint256 nodeId) external view returns (bool);\n\n  /**\n   * @notice Check if a user is a delegator.\n   * @param user The address of the user to check.\n   * @return bool True if the user is a delegator.\n   */\n  function isNodeDelegator(address user) external view returns (bool);\n\n  /**\n   * @notice Check if a user is a node holder (either directly or through delegation).\n   * @param user The address of the user to check.\n   * @return bool True if the user is a node holder.\n   */\n  function isNodeHolder(address user) external view returns (bool);\n\n  /**\n   * @notice Check if a user directly owns a node (not delegated).\n   * @param user The address of the user to check.\n   * @return uint256 The ID of the owned node (0 if none).\n   */\n  function getDirectNodeOwnership(address user) external view returns (uint256);\n\n  /**\n   * @notice Retrieves the node IDs directly owned by a user.\n   * @param user The address of the user to check.\n   * @return uint256[] The node IDs directly owned by the user. If no nodes are owned, an empty array is returned.\n   */\n  function getDirectNodesOwnership(address user) external view returns (uint256[] memory);\n\n  /**\n   * @notice Checks if a user is the direct owner of a node.\n   * @param user The address of the user to check.\n   * @param nodeId The ID of the node to check.\n   * @return bool True if the user is the direct owner of the node, false otherwise.\n   */\n  function isDirectNodeOwner(address user, uint256 nodeId) external view returns (bool);\n\n  /**\n   * @notice Retrieves the node level of a given node ID.\n   * @param nodeId The token ID of the endorsing node.\n   * @return levelId The node level of the specified token ID.\n   */\n  function getNodeLevel(uint256 nodeId) external view returns (uint8 levelId);\n\n  /**\n   * @notice Retrieves the node level of a user's managed node.\n   * @param user The address of the user managing the node.\n   * @return uint8[] The node level of the node managed by the user.\n   */\n  function getUsersNodeLevels(address user) external view returns (uint8[] memory);\n\n  /**\n   * @notice Checks if a node is a legacy node.\n   * @param nodeId The ID of the node to check.\n   * @return bool True if the node is a legacy node, false otherwise.\n   */\n  function isLegacyNode(uint256 nodeId) external view returns (bool);\n\n  /**\n   * @notice Check if a node exists in the VeChainNodes contract or the StargateNFT contract\n   * @param nodeId The ID of the node to check.\n   * @return bool True if the node exists, false otherwise.\n   * @return NodeSource The source of the node.\n   */\n  function exists(uint256 nodeId) external view returns (bool, VechainNodesDataTypes.NodeSource);\n\n  /**\n   * @notice Retrieves the node IDs owned by a user.\n   * @param user The address of the user to check.\n   * @return uint256[] The node IDs owned by the user.\n   */\n  function getUserNodes(address user) external view returns (NodeInfo[] memory);\n\n  /**\n   * @notice Retrieves the node IDs owned by a user.\n   * @param user The address of the user to check.\n   * @return uint256[] The node IDs owned by the user.\n   */\n  function getUserStargateNFTsInfo(address user) external view returns (DataTypes.Token[] memory);\n}\n"},"contracts/mocks/Stargate/interfaces/IStargate.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\ninterface IStargate {\n    // ---------- Errors ------------ //\n\n    error UnauthorizedUser(address user);\n    error DelegationExitAlreadyRequested();\n    error InvalidDelegationStatus(uint256 tokenId, DelegationStatus status);\n    error DelegationNotFound(uint256 tokenId);\n    error TokenUnderMaturityPeriod(uint256 tokenId);\n    error InvalidToken(uint256 tokenId);\n    error ValidatorNotActiveOrQueued(address validator);\n    error TokenAlreadyDelegated(uint256 tokenId);\n    error OnlyStargateNFTAndProtocolStaker();\n    error InvalidInitializationParams();\n    error VetAmountMismatch(uint8 levelId, uint256 required, uint256 provided);\n    error VetTransferFailed(address receiver, uint256 amount);\n    error InsufficientContractBalance(uint256 contractBalance, uint256 tokenAmount);\n    error MaxClaimablePeriodsExceeded();\n    error InvalidMaxClaimablePeriods();\n\n    // ---------- Events ------------ //\n\n    /// @notice Emitted when a delegation is initiated\n    /// @param tokenId The ID of the token that was delegated\n    /// @param validator The validator that was delegated to\n    /// @param delegationId The ID of the delegation\n    /// @param amount The amount of VET delegated\n    /// @param levelId The level ID of the token\n    /// @param probabilityMultiplier The probability multiplier of the delegation\n    event DelegationInitiated(\n        uint256 indexed tokenId,\n        address indexed validator,\n        uint256 indexed delegationId,\n        uint256 amount,\n        uint8 levelId,\n        uint8 probabilityMultiplier\n    );\n\n    /// @notice Emitted when a delegation exit is requested\n    /// @dev When the delegation is pending, exit is immediate and this event is emitted\n    /// @param tokenId The ID of the token that was delegated\n    /// @param validator The validator that was delegated to\n    /// @param delegationId The ID of the delegation\n    /// @param exitBlock The block at which the delegation exit will be processed,\n    /// in case the delegation is pending it will be the current block\n    event DelegationExitRequested(\n        uint256 indexed tokenId,\n        address indexed validator,\n        uint256 indexed delegationId,\n        uint48 exitBlock\n    );\n\n    /// @notice Emitted when a delegation is withdrawn\n    /// @dev This is emitted when the delegation is withdrawn, either because the user requested to exit\n    /// or because the delegation is called with a new validator or if requestDelegationExit is called\n    /// the delegation is still pending.\n    /// @param tokenId The ID of the token that was delegated\n    /// @param validator The validator that was delegated to\n    /// @param delegationId The ID of the delegation\n    /// @param amount The amount of VET withdrawn\n    /// @param levelId The level ID of the token\n    event DelegationWithdrawn(\n        uint256 indexed tokenId,\n        address indexed validator,\n        uint256 indexed delegationId,\n        uint256 amount,\n        uint8 levelId\n    );\n\n    /// @notice Emitted when rewards are claimed\n    /// @param receiver The address that claimed the rewards\n    /// @param tokenId The ID of the token that claimed the rewards\n    /// @param delegationId The ID of the delegation that claimed the rewards\n    /// @param amount The amount of rewards claimed\n    /// @param firstClaimedPeriod The first period that the rewards were claimed for\n    /// @param lastClaimedPeriod The last period that the rewards were claimed for\n    event DelegationRewardsClaimed(\n        address indexed receiver,\n        uint256 indexed tokenId,\n        uint256 indexed delegationId,\n        uint256 amount,\n        uint32 firstClaimedPeriod,\n        uint32 lastClaimedPeriod\n    );\n\n    // ---------- Data Types ------------ //\n\n    struct Delegation {\n        uint256 delegationId; // the latest delegation id for the token (can be pending, active, or exited)\n        address validator; // the validator address\n        uint256 stake; // the amount of VET delegated to the validator (that is the same as the price of the NFT)\n        uint8 probabilityMultiplier; // a multiplier used to multiply the stake of the user when calculating the weight of the delegation (scaled by 100)\n        uint32 startPeriod; // the period when the delegation became active\n        uint32 endPeriod; // the period when the delegation ended (if exited); uint32.max if still active\n        bool isLocked; // the delegation is locked while active, and it means that the VET cannot be withdrawn and user needs to request to exit\n        DelegationStatus status;\n    }\n\n    /// @notice The status of a delegation returned by the StargateStaker contract\n    /// @dev NONE: the delegation id is not valid, or user never delegated\n    /// @dev PENDING: the user has selected a validator and staked the VET, but is waiting for the next period to start or for the validator to be become active\n    /// @dev ACTIVE: the user is accumulating rewards; if the user requests to exit the delegation the status remains ACTIVE\n    /// @dev EXITED: the user has exited the delegation or the validator exited and forced the user to exit or the user exited a pending delegation and the stake is now 0\n    enum DelegationStatus {\n        NONE,\n        PENDING,\n        ACTIVE,\n        EXITED\n    }\n\n    // ---------- Pausable ------------ //\n\n    /// @notice Pauses the StargateNFT contract\n    /// @dev Only the DEFAULT_ADMIN_ROLE can call this function\n    /// @dev Pausing the contract will prevent minting\n    function pause() external;\n\n    /// @notice Unpauses the StargateNFT contract\n    /// @dev Only the DEFAULT_ADMIN_ROLE can call this function\n    function unpause() external;\n\n    // ---------- Staking ------------ //\n\n    /// @notice Stakes VET and mints an NFT\n    /// @param _levelId The ID of the token level to mint, VET as msg.value\n    /// @return tokenId The ID of the minted NFT\n    function stake(uint8 _levelId) external payable returns (uint256 tokenId);\n\n    /// @notice Unstakes a token from the Stargate contract, will return the VET to the user and burn the NFT\n    /// for token to be unstaked, its delegation status must not be ACTIVE\n    /// @param _tokenId The ID of the token to unstake\n    /// @dev Emits a {IStargate.TokenUnstaked} event\n    function unstake(uint256 _tokenId) external;\n\n    // ---------- Delegations ------------ //\n\n    /// @notice Delegates the token to the validator to increase its probability of being selected as\n    /// a validator and accumulate rewards for each mined block.\n    /// The amount of rewards depends on the effective stake compared to the total effective stake of the validator.\n    /// The delegation is not active until the start of the next period of the validator. In the meantime, the user\n    /// can change the validator by calling this function again, cancel the delegation or unstaking the token.\n    /// Once the delegation is active, the user can request to exit the delegation by calling requestDelegationExit.\n    /// The token will remain delegated until the end of the validator period end block.\n    ///\n    /// This contract will need to move the VET associated to the token from the StargateNFT contract and deposit\n    /// it in the protocol staking contract.\n    /// If the token was previously delegated, the VET will be moved from the protocol staking contract to this contract\n    /// again and then moved back to the protocol staking contract.\n    ///\n    /// @param _tokenId - the token ID to delegate\n    /// @param _validator - the validator to delegate to\n    function delegate(uint256 _tokenId, address _validator) external;\n\n    /// @notice Stakes VET and mints an NFT, and delegates it\n    /// @param _levelId The ID of the token level to mint, VET as msg.value\n    /// @param _validator The validator to delegate to\n    /// @return tokenId The ID of the minted NFT\n    function stakeAndDelegate(\n        uint8 _levelId,\n        address _validator\n    ) external payable returns (uint256 tokenId);\n\n    /// @notice Migrates a token from the legacy nodes contract to StargateNFT, and delegates it\n    /// @param _tokenId The ID of the token to migrate\n    /// @param _validator The validator to delegate to\n    function migrateAndDelegate(uint256 _tokenId, address _validator) external payable;\n\n    /// @notice Requests a delegation exit by signalling the exit to the protocol staking contract.\n    /// If the delegation is active, the user will need to wait for then end of the period to actually exit, if instead\n    /// the delegation is pending the user will exit immediatly.\n    /// Once the request to exit is signalled, the user cannot undo it and cannot request to exit again.\n    /// @dev Exiting a pending delegation, differs from exiting an active delegation.\n    /// In the first case, it is enough to withdraw the VET from the protocol, in the second case\n    /// we will signal to the protocol to exit the delegation.\n    /// @param _tokenId - the token ID to request the exit for\n    function requestDelegationExit(uint256 _tokenId) external;\n\n    /// @notice Returns the details of the delegation of a token\n    /// @dev If the token does not have any delegation, it will return a set of default values\n    /// @param _tokenId - the token ID\n    /// @return The details of the delegation\n    function getDelegationDetails(uint256 _tokenId) external view returns (Delegation memory);\n\n    /// @notice Will fetch the latest delegation of a token and will return its status\n    /// @param _tokenId - the token ID\n    /// @return The status of the delegation\n    function getDelegationStatus(uint256 _tokenId) external view returns (DelegationStatus);\n\n    /// @notice Will return the latest delegation id of a token (regardless of its status)\n    /// @param _tokenId - the token ID\n    /// @return The delegation id\n    function getDelegationIdOfToken(uint256 _tokenId) external view returns (uint256);\n\n    /// @notice Will return true if the user has requested to exit the latest delegation (regardless of its status)\n    /// @dev This will return true even if the delegation is EXITED\n    /// @param _tokenId - the token ID\n    /// @return True if the user has requested to exit the delegation\n    function hasRequestedExit(uint256 _tokenId) external view returns (bool);\n\n    /// @notice Returns the total effective stake of the delegators of a validator in a specific period\n    /// @param _validator - the validator address\n    /// @param _period - the period to check\n    /// @return The total effective stake of the delegators of the validator in the period\n    function getDelegatorsEffectiveStake(\n        address _validator,\n        uint32 _period\n    ) external view returns (uint256);\n\n    /// @notice Returns the effective stake of a token\n    /// @dev The effective stake is the amount of VET that is staked by the token multiplied\n    /// by the reward multiplier of the level, and is used to calculate the share of the delegator in the period.\n    /// @param _tokenId - the token ID\n    /// @return The effective stake of the token\n    function getEffectiveStake(uint256 _tokenId) external view returns (uint256);\n\n    // ---------- Rewards ------------ //\n\n    /// @notice Claims all the rewards for a token\n    /// @dev This function will claim the rewards for each period between the last\n    /// claimed period and the last claimable period.\n    /// @param _tokenId - the token ID\n    function claimRewards(uint256 _tokenId) external;\n\n    /// @notice Returns the claimable rewards for a token for batch 0 (first 832 periods)\n    /// @dev This is the sum of the claimable rewards for each period between the last claimed period and the last claimable period.\n    /// @param _tokenId - the token ID\n    /// @return The claimable rewards for the token\n    function claimableRewards(uint256 _tokenId) external view returns (uint256);\n\n    /// @notice Returns the claimable rewards for a token for a specific batch\n    /// @dev This is the sum of the claimable rewards for each period between the last claimed period and the last claimable period.\n    /// @param _tokenId - the token ID\n    /// @param _batch - the batch to check\n    /// @return The claimable rewards for the token\n    function claimableRewards(uint256 _tokenId, uint32 _batch) external view returns (uint256);\n\n    /// @notice Returns the locked rewards for a token\n    /// @dev When the delegation is active, the rewards rewards of the current period are locked\n    /// and cannot be claimed until the next period. This function retur\n    /// @param _tokenId - the token ID\n    /// @return The locked rewards for the token\n    function lockedRewards(uint256 _tokenId) external view returns (uint256);\n\n    /// @notice Returns the latestClaimedPeriod and the endPeriod of the latest delegation of a token\n    /// @param _tokenId - the token ID\n    /// @return lastClaimedPeriod - the latest claimed period\n    /// @return endPeriod - the end period of the latest delegation\n    function claimableDelegationPeriods(uint256 _tokenId) external view returns (uint32, uint32);\n\n    // ---------- Max Claimable Periods ---------- //\n\n    /// @notice Returns the max claimable periods\n    /// @return The max claimable periods\n    function getMaxClaimablePeriods() external view returns (uint32);\n\n    /// @notice Sets the max claimable periods\n    /// @param _maxClaimablePeriods - the max claimable periods\n    function setMaxClaimablePeriods(uint32 _maxClaimablePeriods) external;\n\n    // ---------- Clock ------------ //\n\n    /// @notice Returns the current clock\n    /// @dev Call CLOCK_MODE() to know if the clock is in timestamp or block mode\n    function clock() external view returns (uint48);\n\n    /// @notice Returns the clock mode\n    /// @dev Call clock() to know the current clock\n    function CLOCK_MODE() external view returns (string memory);\n}\n"},"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\ninterface IStargateDelegation {\n    /*------- Errors -------*/\n    /// @notice Error thrown when a user is not authorized to perform an action\n    error UnauthorizedUser(address user);\n    /// @notice Error thrown when an NFT is under the maturity period\n    error NFTUnderMaturityPeriod(uint256 tokenId);\n    /// @notice Error thrown when an NFT is already delegated\n    error NFTAlreadyDelegated(uint256 tokenId);\n    /// @notice Error thrown when an NFT is not delegated\n    error NFTNotDelegated(uint256 tokenId);\n    /// @notice Error thrown when there are no rewards to claim\n    error NoRewardsToClaim(uint256 tokenId);\n    /// @notice Error thrown when an address is the zero address\n    error AddressCannotBeZero();\n    /// @notice Error thrown when a vtho reward per block per NFT level is invalid\n    error InvalidVthoRewardPerBlock(uint256 level, uint256 value);\n    /// @notice Error thrown when a delegation period is invalid\n    error InvalidDelegationPeriod();\n    /// @notice Error thrown when an array is empty\n    error ArrayCannotBeEmpty();\n    /// @notice Error thrown when an NFT level is invalid\n    error InvalidNFTLevel(uint256 tokenId, uint256 level);\n    /// @notice Error thrown when there is insufficient VTHO balance for rewards claim\n    error InsufficientVthoBalanceForRewardsClaim(uint256 balance, uint256 required);\n    /// @notice Error thrown when a VTHO transfer fails\n    error VthoTransferFailed(address recipient, uint256 amount);\n    /// @notice Error thrown when the rewards accumulation period ended\n    error RewardsAccumulationPeriodEnded();\n    /// @notice Error thrown when the user requests to exit delegation repeatedly\n    error DelegationExitAlreadyRequested();\n    /// @notice Error thrown when there are no lost rewards to claim\n    error NoLostRewardsToClaim(address owner, uint256 tokenId);\n\n    /*------- Events -------*/\n    /// @notice Event emitted when a delegation simulation is started\n    event DelegationSimulationStarted(\n        uint256 indexed tokenId,\n        address indexed delegator,\n        uint256 rewardsAccumulationStartBlock,\n        bool indexed isDelegationForever,\n        address caller\n    );\n    /// @notice Event emitted when a delegation exit is requested\n    event DelegationExitRequested(uint256 indexed tokenId, uint256 delegationEndBlock);\n    /// @notice Event emitted when a delegation rewards are claimed\n    event DelegationRewardsClaimed(\n        uint256 indexed tokenId,\n        uint256 rewards,\n        address indexed claimer,\n        address indexed recipient\n    );\n    /// @notice Event emitted when the rewards accumulation end block is set\n    event RewardsAccumulationEndBlockSet(uint256 rewardsAccumulationEndBlock);\n    /// @notice Event emitted when lost rewards are added\n    event LostRewardsAdded(address indexed owner, uint256 indexed tokenId, uint256 amount);\n    /// @notice Event emitted when lost rewards are removed\n    event LostRewardsRemoved(address indexed owner, uint256 indexed tokenId, uint256 amount);\n    /// @notice Event emitted when lost rewards are claimed\n    event LostRewardsClaimed(\n        address indexed owner,\n        uint256 indexed tokenId,\n        address indexed claimer,\n        uint256 amount\n    );\n\n    /*------- Functions -------*/\n\n    function version() external view returns (uint256);\n\n    function clock() external view returns (uint48);\n\n    function CLOCK_MODE() external view returns (string memory);\n\n    function delegate(uint256 _tokenId, bool _delegateForever) external;\n\n    function requestDelegationExit(uint256 _tokenId) external;\n\n    function claimRewards(uint256 _tokenId) external;\n\n    function claimableRewards(uint256 _tokenId) external view returns (uint256);\n\n    function accumulatedRewards(uint256 _tokenId) external view returns (uint256);\n\n    function isDelegationActive(uint256 _tokenId) external view returns (bool);\n\n    function getVthoRewardPerBlock(uint256 _level) external view returns (uint256);\n\n    function getDelegationPeriod() external view returns (uint256);\n\n    function getRewardsAccumulationEndBlock() external view returns (uint256);\n\n    function getRewardsAccumulationStartBlock(uint256 _tokenId) external view returns (uint256);\n\n    function getDelegationEndBlock(uint256 _tokenId) external view returns (uint256);\n\n    function currentDelegationPeriodEndBlock(uint256 _tokenId) external view returns (uint256);\n\n    function getDelegationDetails(\n        uint256 _tokenId\n    )\n        external\n        view\n        returns (\n            bool isDelegationActive,\n            uint256 claimableRewards,\n            uint256 rewardsAccumulationStartBlock,\n            uint256 delegationEndBlock\n        );\n}\n"},"contracts/mocks/Stargate/interfaces/IStargateNFT.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nimport { IERC721 } from \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport { IERC721Enumerable } from \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\";\nimport { IERC165 } from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport { DataTypes } from \"../StargateNFT/libraries/DataTypes.sol\";\nimport { ITokenAuction } from \"./ITokenAuction.sol\";\n\ninterface IStargateNFT is IERC165, IERC721, IERC721Enumerable {\n    // ------------------ Events ------------------ //\n\n    /**\n     * @notice Emitted when a token level is updated\n     * @param levelId The ID of the level that was updated\n     * @param name The new name of the level\n     * @param isX The new X status\n     * @param maturityBlocks The new maturity period in blocks\n     * @param scaledRewardFactor The new scaled reward multiplier\n     * @param vetAmountRequiredToStake The new VET amount required for staking\n     */\n    event LevelUpdated(\n        uint8 indexed levelId,\n        string name,\n        bool isX,\n        uint64 maturityBlocks,\n        uint64 scaledRewardFactor,\n        uint256 vetAmountRequiredToStake\n    );\n\n    /**\n     * @notice Emitted when the circulating supply of a token level is updated\n     * @param levelId The ID of the level supply that was updated\n     * @param oldCirculatingSupply The old circulating supply\n     * @param newCirculatingSupply The new circulating supply\n     */\n    event LevelCirculatingSupplyUpdated(\n        uint8 indexed levelId,\n        uint208 oldCirculatingSupply,\n        uint208 newCirculatingSupply\n    );\n\n    /**\n     * @notice Emitted when the cap of a token level is updated\n     * @param levelId The ID of the level cap that was updated\n     * @param oldCap The old cap\n     * @param newCap The new cap\n     */\n    event LevelCapUpdated(uint8 indexed levelId, uint32 oldCap, uint32 newCap);\n\n    /**\n     * @notice Emitted when the boost price per block of a token level is updated\n     * @param levelId The ID of the level boost price per block that was updated\n     * @param oldBoostPricePerBlock The old boost price per block\n     * @param newBoostPricePerBlock The new boost price per block\n     */\n    event LevelBoostPricePerBlockUpdated(\n        uint8 indexed levelId,\n        uint256 oldBoostPricePerBlock,\n        uint256 newBoostPricePerBlock\n    );\n\n    /**\n     * @notice Emitted when an NFT is minted\n     * @param owner The address that owns the newly minted NFT\n     * @param levelId The level ID of the newly minted NFT\n     * @param migrated Whether the token was migrated from legacy nodes contract\n     * @param tokenId The ID of the newly minted NFT\n     * @param vetAmountStaked The amount of VET staked to mint the NFT\n     */\n    event TokenMinted(\n        address indexed owner,\n        uint8 indexed levelId,\n        bool indexed migrated,\n        uint256 tokenId,\n        uint256 vetAmountStaked\n    );\n\n    /**\n     * @notice Emitted when an NFT is burned\n     * @param owner The address that owns the newly burned NFT\n     * @param levelId The level ID of the newly burned NFT\n     * @param tokenId The ID of the newly burned NFT\n     * @param vetAmountStaked The amount of VET staked to burn the NFT\n     */\n    event TokenBurned(\n        address indexed owner,\n        uint8 indexed levelId,\n        uint256 tokenId,\n        uint256 vetAmountStaked\n    );\n\n    /**\n     * @notice Emitted when the base URI for the token metadata is updated\n     * @param oldBaseURI The old base URI\n     * @param newBaseURI The new base URI\n     */\n    event BaseURIUpdated(string oldBaseURI, string newBaseURI);\n\n    /**\n     * @notice Emitted when a whitelist entry is removed\n     * @param owner The address of the whitelist entry\n     */\n    event WhitelistEntryRemoved(address owner);\n\n    /**\n     * @notice Emitted when a token manager is added to a token\n     * @param tokenId The ID of the token\n     * @param manager The address of the manager\n     */\n    event TokenManagerAdded(uint256 indexed tokenId, address indexed manager);\n\n    /**\n     * @notice Emitted when a token manager is removed from a token\n     * @param tokenId The ID of the token\n     * @param manager The address of the manager\n     */\n    event TokenManagerRemoved(uint256 indexed tokenId, address indexed manager);\n\n    /** ------------------ Deprecated Events ------------------ */\n    // These events are deprecated in V3 but we\n    // keep them for backwards compatibility and\n    // for indexing purposes\n\n    /**\n     * @notice Emitted when VTHO rewards are claimed for a token\n     * @dev Not emitted anymore in V3, since we don't generate VTHO anymore\n     * @param owner The address that claimed the rewards\n     * @param tokenId The ID of the token for which rewards were claimed\n     * @param amount The amount of VTHO rewards claimed\n     * @dev Deprecated in V3\n     */\n    event BaseVTHORewardsClaimed(address indexed owner, uint256 indexed tokenId, uint256 amount);\n\n    /**\n     * @notice Emitted when the VTHO generation end timestamp is updated\n     * @dev Not emitted anymore in V3, since there is no need to set this value anymore\n     * @param oldVthoGenerationEndTimestamp The old VTHO generation end timestamp\n     * @param newVthoGenerationEndTimestamp The new VTHO generation end timestamp\n     */\n    event VthoGenerationEndTimestampSet(\n        uint48 oldVthoGenerationEndTimestamp,\n        uint48 newVthoGenerationEndTimestamp\n    );\n\n    // ------------------ Functions ------------------ //\n\n    function version() external view returns (uint256);\n\n    /*------- Callbacks -------*/\n\n    /// @notice Callback function to ERC721Upgradeable._safeMint, called by StargateNFTMinting.stake\n    /// @dev Only the StargateNFT contract can call this function\n    /// @param to - the address to mint the token to\n    /// @param tokenId - the token ID of the token to mint\n    function _safeMintCallback(address to, uint256 tokenId) external;\n\n    /// @notice Callback function to ERC721Upgradeable._burn, called by StargateNFTMinting.unstake\n    /// @dev Only the StargateNFT contract can call this function\n    /// @param tokenId - the token ID of the token to burn\n    function _burnCallback(uint256 tokenId) external;\n\n    /*------- Pausing Functions -------*/\n\n    /// @notice Pauses the StargateNFT contract\n    /// @dev Only the PAUSER_ROLE can call this function\n    /// @dev Pausing the contract will prevent minting\n    function pause() external;\n\n    /// @notice Unpauses the StargateNFT contract\n    /// @dev Only the PAUSER_ROLE can call this function\n    function unpause() external;\n\n    /*------- Level Functions -------*/\n\n    /// @notice Adds a new token level\n    /// @param _levelAndSupply - The level and supply to add, see {DataTypes.LevelAndSupply}\n    /// @dev Only the LEVEL_OPERATOR_ROLE can call this function\n    /// Check the {Levels.addLevel} library function for more details\n    /// Emits a {IStargateNFT.LevelUpdated} event\n    /// Emits a {IStargateNFT.LevelCirculatingSupplyUpdated} event\n    /// Emits a {IStargateNFT.LevelCapUpdated} event\n    function addLevel(DataTypes.LevelAndSupply memory _levelAndSupply) external;\n\n    /// @notice Returns a list of all token level spec IDs\n    /// @return levelIds - The list of token level spec IDs\n    function getLevelIds() external view returns (uint8[] memory);\n\n    /// @notice Returns a token level spec for a given level ID\n    /// @param _levelId The ID of the token level spec to return\n    /// @return Level - The token level spec\n    function getLevel(uint8 _levelId) external view returns (DataTypes.Level memory);\n\n    /// @notice Returns a list of all token level specs\n    /// @return levels - The list of token level specs\n    function getLevels() external view returns (DataTypes.Level[] memory);\n\n    /// @notice Returns the circulating supply for all levels\n    /// @return circulatingSupplies An array of circulating supply values for all levels, sorted by level id\n    function getLevelsCirculatingSupplies() external view returns (uint208[] memory);\n\n    /// @notice Returns the circulating supply and cap for a given token level\n    /// @param _levelId The ID of the token level to get supply data for\n    /// @return circulating The circulating supply of the token level\n    /// @return cap The cap of the token level\n    function getLevelSupply(uint8 _levelId) external view returns (uint208 circulating, uint32 cap);\n\n    /// @notice Returns the circulating supply for a given level at a specific block\n    /// @param _levelId The ID of the level to get supply data for\n    /// @param _blockNumber The block number to get the supply at\n    /// @return circulatingSupply The circulating supply of the level at the specified block\n    function getCirculatingSupplyAtBlock(\n        uint8 _levelId,\n        uint48 _blockNumber\n    ) external view returns (uint208);\n\n    /// @notice Returns the circulating supply for all levels at a certain block\n    /// @param _blockNumber The block number to get the supply at\n    /// @return circulatingSupplies An array of circulating supply values for all levels, sorted by level id\n    function getLevelsCirculatingSuppliesAtBlock(\n        uint48 _blockNumber\n    ) external view returns (uint208[] memory);\n\n    // ---------- Token Functions ---------- //\n\n    /// @notice Get the latest token id that was minted\n    /// @dev Ids start from the total supply of the legacy contrat\n    /// @return currentTokenId the latest token id that was minted\n    function getCurrentTokenId() external view returns (uint256);\n\n    /// @notice Returns a token for a given token ID\n    /// @param _tokenId The ID of the token to get\n    /// @return token The token\n    function getToken(uint256 _tokenId) external view returns (DataTypes.Token memory);\n\n    /// @notice Returns the level ID of a given token\n    /// @param _tokenId - the token ID of the NFT\n    /// @return levelId - the level ID of the NFT\n    function getTokenLevel(uint256 _tokenId) external view returns (uint8);\n\n    /// @notice Returns the tokens owned by an address\n    /// @param _owner The address to get tokens for\n    /// @return tokens An array of tokens owned by the address\n    function tokensOwnedBy(address _owner) external view returns (DataTypes.Token[] memory);\n\n    /// @notice Returns the total VET staked by an address\n    /// @param _owner The address to get total VET staked for\n    /// @return totalVetStaked The total VET staked by the address\n    function ownerTotalVetStaked(address _owner) external view returns (uint256);\n\n    /// @notice Returns a list of token IDs for a given owner\n    /// @param _owner The address of the owner to get token IDs for\n    /// @return tokenIds The list of token IDs\n    function idsOwnedBy(address _owner) external view returns (uint256[] memory);\n\n    /// @notice Returns true if a token exists\n    /// @param _tokenId The ID of the token to check\n    /// @return True if the token exists, false otherwise\n    function tokenExists(uint256 _tokenId) external view returns (bool);\n\n    // ---------- Boosting Functions ------------ //\n\n    /// @notice Boosts the maturity period of a token\n    /// @dev This can only be called by the Stargate contract\n    /// @param _tokenId The ID of the token to boost\n    /// @dev Emits a {IStargateNFT.MaturityPeriodBoosted} event\n    function boost(uint256 _tokenId) external;\n\n    /// @notice Returns the amount of VTHO required to boost a token's maturity period\n    /// @param _tokenId The ID of the token to boost\n    /// @return boostAmount The amount of VTHO required to boost the token's maturity period\n    function boostAmount(uint256 _tokenId) external view returns (uint256);\n\n    /// @notice Returns the amount of VTHO required to boost a token's maturity period\n    /// @param _levelId The level ID of the token to boost\n    /// @return boostAmount The amount of VTHO required to boost the token's maturity period\n    function boostAmountOfLevel(uint8 _levelId) external view returns (uint256);\n\n    /// @notice Returns the boost price per block for a given level\n    /// @param _levelId The level ID of the token to boost\n    /// @return boostPricePerBlock The boost price per block for the level\n    function boostPricePerBlock(uint8 _levelId) external view returns (uint256);\n\n    /// @notice Returns the maturity period end block for a given token\n    /// @param _tokenId The ID of the token to get maturity period end block for\n    /// @return maturityPeriodEndBlock The maturity period end block\n    function maturityPeriodEndBlock(uint256 _tokenId) external view returns (uint64);\n\n    /// @notice Returns true if a token is in the maturity period\n    /// @param _tokenId The ID of the token to check\n    /// @return isInMaturityPeriod True if the token is in the maturity period, false otherwise\n    function isUnderMaturityPeriod(uint256 _tokenId) external view returns (bool);\n\n    // ---------- Token Manager Functions ---------- //\n\n    /// @notice Adds a manager to a token\n    /// @dev This manager can use the token for voting on VeVote\n    /// or in B3TR but it cant calim rewards for themselves, transfer,\n    /// delegate or unstake the token\n    /// @dev If a token already has a manager, it will be removed and\n    /// the new manager will be added\n    /// @param _manager The address of the manager to add\n    /// @param _tokenId The ID of the token to add the manager to\n    /// @dev Emits a {IStargateNFT.TokenManagerAdded} event\n    function addTokenManager(address _manager, uint256 _tokenId) external;\n\n    /// @notice Removes a manager from a token\n    /// @dev This manager can no longer use the token for voting on VeVote\n    /// or in B3TR but it can still claim rewards for themselves, transfer,\n    /// delegate or unstake the token\n    /// @dev If a token has no manager, it will revert\n    /// @param _tokenId The ID of the token to remove the manager from\n    /// @dev Emits a {IStargateNFT.TokenManagerRemoved} event\n    function removeTokenManager(uint256 _tokenId) external;\n\n    /// @notice Returns the manager of a token, if the token does not have a manager\n    /// it will return the owner of the token\n    /// @param _tokenId The ID of the token to get the manager for\n    /// @return manager The manager of the token\n    function getTokenManager(uint256 _tokenId) external view returns (address);\n\n    /// @notice Returns the list of:\n    /// 1) Token ids managed by the user\n    /// 2) Token ids owned by the user and not managed by someone else\n    /// Token ids owned by the user, but managed by others, won't be returned\n    /// @param _user The address of the user to get the tokens for\n    /// @return tokenIds The list of token ids managed by the user\n    function idsManagedBy(address _user) external view returns (uint256[] memory);\n\n    /// @notice Returns the list of:\n    /// 1) Tokens managed by the user\n    /// 2) Tokens owned by the user and not managed by someone else\n    /// Tokens owned by the user, but managed by others, won't be returned\n    /// @param _user The address of the user to get the tokens for\n    /// @return tokens The list of tokens managed by the user\n    function tokensManagedBy(address _user) external view returns (DataTypes.Token[] memory);\n\n    /// @notice Checks if an address is a manager of a token\n    /// @param _manager The address of the manager to check\n    /// @param _tokenId The ID of the token to check\n    /// @return True if the address is a manager of the token, false otherwise\n    function isTokenManager(address _manager, uint256 _tokenId) external view returns (bool);\n\n    /// @notice Checks if a token is managed by the owner\n    /// @param _tokenId The ID of the token to check\n    /// @return True if the token is managed by the owner, false otherwise\n    function isManagedByOwner(uint256 _tokenId) external view returns (bool);\n\n    /// @notice Function to get the overview of the tokens related to a user\n    /// A token is related to a user if it is owned by the user or if it is managed by the user\n    /// This includes:\n    /// - Tokens owned by the user and managed by the user\n    /// - Tokens owned by the user and not managed by the user\n    /// - Tokens managed by the user and not owned by the user\n    /// @param _user The address of the user to get the overview of the tokens\n    /// @return DataTypes.TokenOverview[] The overview of the tokens related to the user\n    function tokensOverview(address _user) external view returns (DataTypes.TokenOverview[] memory);\n\n    // ---------- Base URI Functions ---------- //\n\n    /// @notice Sets the base URI for the token collection metadata\n    /// @dev Only the MANAGER_ROLE can call this function\n    /// @dev Metadata is hosted on IPFS, and the base URI is the base path to the collection metadata\n    /// @param _baseTokenURI The new base URI\n    /// @dev Emits a {IStargateNFT.BaseURIUpdated} event\n    function setBaseURI(string memory _baseTokenURI) external;\n\n    /// @notice Returns the base URI for the token collection metadata\n    /// @return baseURI - the base URI string\n    function baseURI() external view returns (string memory);\n\n    // ---------- Stargate functions ---------- //\n\n    /// @notice Mints a token from the StargateNFT contract\n    /// @dev This can only be called by the Stargate contract\n    /// @param _levelId The ID of the token level to mint\n    /// @param _to The address to mint the token to\n    /// @dev Emits a {IStargateNFT.TokenMinted} event\n    function mint(uint8 _levelId, address _to) external returns (uint256 tokenId);\n\n    /// @notice Burns a token from the StargateNFT contract\n    /// @dev This can only be called by the Stargate contract\n    /// @param _tokenId The ID of the token to burn\n    /// @dev Emits a {IStargateNFT.TokenBurned} event\n    function burn(uint256 _tokenId) external;\n\n    /// @notice Migrates a token from the legacy nodes contract to StargateNFT to the same owner address\n    /// as the owner of the token in the legacy nodes contract\n    /// @dev This can only be called by the Stargate contract\n    /// @param _tokenId The ID of the token to migrate\n    /// @dev Emits a {IStargateNFT.TokenMinted} event and a {IStargateNFT.TokenMigrated} event\n    function migrate(uint256 _tokenId) external;\n\n    /// @notice Boosts the maturity period of a token\n    /// @dev This can only be called by the Stargate contract\n    /// @param _sender The address to boost the token for\n    /// @param _tokenId The ID of the token to boost\n    /// @dev Emits a {IStargateNFT.MaturityPeriodBoosted} event\n    function boostOnBehalfOf(address _sender, uint256 _tokenId) external;\n\n    /// @notice Returns the address of the Stargate contract\n    /// @return stargate - the Stargate contract\n    function getStargate() external view returns (address);\n\n    // ---------- Clock Functions ---------- //\n\n    /// @notice Returns the current block number\n    /// @return blockNumber - the current block number\n    function clock() external view returns (uint48);\n\n    /// @notice Returns the clock mode\n    function CLOCK_MODE() external view returns (string memory);\n\n    /// @notice Returns the current timestamp\n    /// @return timestamp - the current timestamp\n    function timestamp() external view returns (uint48);\n\n    // ---------- VTHO Functions ---------- //\n\n    /// @notice Returns the address of the VTHO token contract\n    /// @return vthoToken - the VTHO token contract\n    function getVthoTokenAddress() external view returns (address);\n\n    // ---------- Legacy Nodes Functions ---------- //\n\n    /// @notice Returns the number of X tokens in circulation\n    /// @dev Get the count of normal tokens by subtracting the count of X tokens from the total supply\n    /// @return xTokensCount - the number of X tokens\n    function xTokensCount() external view returns (uint208);\n\n    /// @notice Checks if an owner owns an X token\n    /// @param _owner The address of the owner to check\n    /// @return True if the owner owns an X token, false otherwise\n    function ownsXToken(address _owner) external view returns (bool);\n\n    /// @notice Checks if a token is an X token\n    /// @param _tokenId The ID of the token to check\n    /// @return True if the token is an X token, false otherwise\n    function isXToken(uint256 _tokenId) external view returns (bool);\n\n    /// @notice Returns the legacy nodes contract\n    /// @return legacyNodes - the legacy nodes contract\n    function legacyNodes() external view returns (ITokenAuction);\n\n    // ---------- Temporary Functions ---------- //\n\n    /// @notice Transfers the balance of the contract to the Stargate contract\n    /// @dev This function was created after the refactor on the StargateNFT and Stargate\n    /// contracts. After the refactor, all VET is handled by Stargate, this means\n    /// stake, stakeAndDelegate, unstake... functions were moved to the Stargate.\n    /// Since up until now we were using the StagateNFT contract to handle the VET,\n    /// we need to transfer back all the previous staked VET to the Stargate\n    /// so user can delegate it and unstake it. This functions transfers all the VET\n    /// to the Stargate contract in one go.\n    /// This function is called by the admin after the upgrade to V3 and the\n    /// Stargate variable is set to the correct value\n    /// @dev Only the DEFAULT_ADMIN_ROLE can call this function\n    /// @dev Emits a {IStargateNFT.VetTransferFailed} event\n    function transferBalance(uint256 amount) external;\n\n    /// @notice Migrate a token manager to the StargateNFT contract, this function is only callable by the DEFAULT_ADMIN_ROLE\n    /// so we can migrate the storage from NodeManagementV3 to StargateNFT, after the migration we can remove this function\n    /// @param _tokenId The ID of the token to migrate\n    /// @param _manager The address of the manager to migrate\n    function migrateTokenManager(uint256 _tokenId, address _manager) external;\n}\n"},"contracts/mocks/Stargate/interfaces/ITokenAuction.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\ninterface ITokenAuction {\n    // ------------ Events ------------ //\n    // TODO: revisit interface\n    event AuctionCreated(\n        uint256 indexed _auctionId,\n        uint256 indexed _tokenId,\n        uint256 _startingPrice,\n        uint256 _endingPrice,\n        uint64 _duration\n    );\n\n    event AuctionSuccessful(\n        uint256 indexed _auctionId,\n        uint256 indexed _tokenId,\n        address indexed _seller,\n        address _winner,\n        uint256 _finalPrice\n    );\n\n    event AddAuctionWhiteList(\n        uint256 indexed _auctionId,\n        uint256 indexed _tokenId,\n        address indexed _candidate\n    );\n\n    event RemoveAuctionWhiteList(\n        uint256 indexed _auctionId,\n        uint256 indexed _tokenId,\n        address indexed _candidate\n    );\n\n    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);\n\n    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);\n\n    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);\n\n    event NewUpgradeApply(\n        uint256 indexed _tokenId,\n        address indexed _applier,\n        uint8 _level,\n        uint64 _applyTime,\n        uint64 _applyBlockno\n    );\n\n    event CancelUpgrade(uint256 indexed _tokenId, address indexed _owner);\n\n    event LevelChanged(\n        uint256 indexed _tokenId,\n        address indexed _owner,\n        uint8 _fromLevel,\n        uint8 _toLevel\n    );\n\n    event AuctionCancelled(uint256 indexed _auctionId, uint256 indexed _tokenId);\n\n    event ProtocolUpgrade(address _saleAuction);\n\n    event OperatorUpdated(address _op, bool _enabled);\n\n    event BlackListUpdated(address _person, bool _op);\n\n    event Pause();\n\n    event Unpause();\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    // ------------ Functions ------------ //\n\n    function removeAuctionWhiteList(uint256 _tokenId, address _address) external;\n\n    function supportsInterface(bytes4 _interfaceId) external view returns (bool);\n\n    function sendBonusTo(address _to, uint256 _amount) external;\n\n    function name() external view returns (string memory);\n\n    function isNormalToken(address _target) external view returns (bool);\n\n    function getApproved(uint256 _tokenId) external view returns (address);\n\n    function approve(address _to, uint256 _tokenId) external;\n\n    function operators(address) external view returns (bool);\n\n    function totalSupply() external view returns (uint256);\n\n    function isToken(address _target) external view returns (bool);\n\n    function InterfaceId_ERC165() external view returns (bytes4);\n\n    function setTokenMetadataBaseURI(string memory _newBaseURI) external;\n\n    function transferFrom(address _from, address _to, uint256 _tokenId) external;\n\n    function getTokenParams(uint8 _level) external view returns (uint256, uint64, uint64, uint64);\n\n    function auctionCount() external view returns (uint256);\n\n    function setLeadTime(uint64 _leadtime) external;\n\n    function createDirectionalSaleAuction(\n        uint256 _tokenId,\n        uint128 _price,\n        uint64 _duration,\n        address _toAddress\n    ) external;\n\n    function unpause() external returns (bool);\n\n    function addToBlackList(address _badGuy) external;\n\n    function bid(uint256 _tokenId) external payable;\n\n    function blackList(address) external view returns (bool);\n\n    function removeFromBlackList(address _innocent) external;\n\n    function canTransfer(uint256 _tokenId) external view returns (bool);\n\n    function paused() external view returns (bool);\n\n    function upgradeTo(uint256 _tokenId, uint8 _toLvl) external;\n\n    function ownerOf(uint256 _tokenId) external view returns (address);\n\n    function transferCooldown() external view returns (uint64);\n\n    function setSaleAuctionAddress(address _address) external;\n\n    function balanceOf(address _owner) external view returns (uint256);\n\n    function applyUpgrade(uint8 _toLvl) external;\n\n    function addToken(\n        address _addr,\n        uint8 _lvl,\n        bool _onUpgrade,\n        uint64 _applyUpgradeTime,\n        uint64 _applyUpgradeBlockno\n    ) external;\n\n    function pause() external returns (bool);\n\n    function leadTime() external view returns (uint64);\n\n    function owner() external view returns (address);\n\n    function symbol() external view returns (string memory);\n\n    function cancelAuction(uint256 _tokenId) external;\n\n    function addOperator(address _operator) external;\n\n    function getMetadata(\n        uint256 _tokenId\n    ) external view returns (address, uint8, bool, bool, uint64, uint64, uint64);\n\n    function transfer(address _to, uint256 _tokenId) external;\n\n    function removeOperator(address _operator) external;\n\n    function downgradeTo(uint256 _tokenId, uint8 _toLvl) external;\n\n    function cancelUpgrade(uint256 _tokenId) external;\n\n    function setTransferCooldown(uint64 _cooldown) external;\n\n    function createSaleAuction(\n        uint256 _tokenId,\n        uint128 _startingPrice,\n        uint128 _endingPrice,\n        uint64 _duration\n    ) external;\n\n    function idToOwner(uint256) external view returns (address);\n\n    function tokenURI(uint256 _tokenId) external view returns (string memory);\n\n    function addAuctionWhiteList(uint256 _tokenId, address _address) external;\n\n    function xTokenCount() external view returns (uint64);\n\n    function saleAuction() external view returns (address);\n\n    function ownerToId(address) external view returns (uint256);\n\n    function transferOwnership(address newOwner) external;\n\n    function normalTokenCount() external view returns (uint64);\n\n    function isX(address _target) external view returns (bool);\n}\n"},"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.20;\n\nlibrary VechainNodesDataTypes {\n    /**\n     * @dev The strength level of each node.\n     */\n    enum NodeStrengthLevel {\n        None,\n        // Normal Token\n        Strength,\n        Thunder,\n        Mjolnir,\n        // X Token\n        VeThorX,\n        StrengthX,\n        ThunderX,\n        MjolnirX\n    }\n\n    /**\n     * @dev The score of a node.\n     */\n    struct NodeStrengthScores {\n        uint256 strength;\n        uint256 thunder;\n        uint256 mjolnir;\n        uint256 veThorX;\n        uint256 strengthX;\n        uint256 thunderX;\n        uint256 mjolnirX;\n    }\n\n    /**\n     * @dev The source of a node: VeChainNodes legacy contract or Stargate.\n     */\n    enum NodeSource {\n        None,\n        VeChainNodes,\n        StargateNFT\n    }\n}\n"},"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol":{"content":"// SPDX-License-Identifier: MIT\n\n//        ✦     *        .         ✶         *        .       ✦       .\n//  ✦   _______..___________.    ___      .______        _______      ___   .___________. _______   ✦\n//     /       ||           |   /   \\     |   _  \\      /  _____|    /   \\  |           ||   ____|  *\n//    |   (----``---|  |----`  /  ^  \\    |  |_)  |    |  |  __     /  ^  \\ `---|  |----`|  |__      .\n//     \\   \\        |  |      /  /_\\  \\   |      /     |  | |_ |   /  /_\\  \\    |  |     |   __|     ✶\n// .----)   |       |  |     /  _____  \\  |  |\\  \\----.|  |__| |  /  _____  \\   |  |     |  |____   *\n// |_______/        |__|    /__/     \\__\\ | _| `._____| \\______| /__/     \\__\\  |__|     |_______|  ✦\n//         *       .      ✦      *      .        ✶       *      ✦       .       *        ✶\n\npragma solidity 0.8.20;\n\nimport { EnumerableSet } from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { Checkpoints } from \"@openzeppelin/contracts/utils/structs/Checkpoints.sol\";\nimport { ITokenAuction } from \"../../interfaces/ITokenAuction.sol\";\nimport { IStargateDelegation } from \"../../interfaces/IStargateDelegation.sol\";\nimport { IStargate } from \"../../interfaces/IStargate.sol\";\n\n/// @title DataTypes\n/// @notice Library for the StargateNFT contract to store data structure definitions used across the contract and libraries\nlibrary DataTypes {\n  using Checkpoints for Checkpoints.Trace208;\n  using EnumerableSet for EnumerableSet.UintSet;\n\n  struct StargateNFTStorage {\n    uint48 vthoGenerationEndTimestamp_deprecated; // this is the timestamp (in seconds) when the protocol will stop generating VTHO by holding VET (deprecated in V3 and used only as a getter)\n    uint8 MAX_LEVEL_ID; // Maximum level ID\n    ITokenAuction legacyNodes; // TokenAuction contract\n    IStargateDelegation stargateDelegation_deprecated; // StargateDelegation contract (not used anymore from V3)\n    IERC20 vthoToken; // VTHO token contract\n    uint256 currentTokenId; // Token tracking: Current token ID\n    string baseTokenURI; // Base URI for the token metadata\n    mapping(uint8 levelId => Level) levels; // Token levels management: Mapping level ID to token level details\n    mapping(uint8 levelId => Checkpoints.Trace208) circulatingSupply; // Token levels management: Mapping level ID to circulating supply\n    mapping(uint8 levelId => uint32) cap; // Token levels management: Mapping level ID to cap aka max supply\n    mapping(uint256 tokenId => Token) tokens; // Token tracking: Mapping token ID to token\n    mapping(uint256 tokenId => uint64) maturityPeriodEndBlock; // Token tracking: Maturity period end block\n    mapping(address => WhitelistEntry) whitelistEntries_deprecated; // Token tracking: Whitelist entries for migration (deprecated in V3)\n    // ------- Version 3 ------- //\n    IStargate stargate; // Hayabusa Stargate contract\n    mapping(address => EnumerableSet.UintSet) managerToTokenIds; // Map manager address to token IDs\n    mapping(uint256 => address) tokenIdToManager; // Map token ID to manager address\n    mapping(uint8 levelId => uint256) boostPricePerBlock; // Map level ID to boost price per block\n  }\n\n  struct StargateNFTInitParams {\n    string tokenCollectionName; // ERC721 token collection name\n    string tokenCollectionSymbol; // ERC721 token collection symbol\n    string baseTokenURI; // Base URI for the token metadata\n    address admin; // Access control: Default admin address\n    address upgrader; // Access control: Upgrader address\n    address pauser; // Access control: Pauser address\n    address levelOperator; // Access control: Level operator address\n    address legacyNodes; // Address of the legacy TokenAuction contract\n    address stargateDelegation; // Address of the stargate delegation contract\n    address vthoToken; // Address of the VTHO token contract\n    uint256 legacyLastTokenId; // Last token ID minted in the legacy TokenAuction contract when the snapshot was taken\n    LevelAndSupply[] levelsAndSupplies; // A list of levels and their supply\n  }\n\n  struct Level {\n    string name; // Name of the level (e.g., \"Thunder\", \"Mjolnir\")\n    bool isX; // Whether the level is for X-tokens\n    uint8 id; // ID to identify the level, as a continuation of the legacy strength levels\n    uint64 maturityBlocks; // Maturity period in blocks\n    uint64 scaledRewardFactor; // Reward multiplier for that level scaled by 100 (i.e., 1.5 becomes 150)\n    uint256 vetAmountRequiredToStake; // VET amount required for staking\n  }\n\n  struct LevelAndSupply {\n    Level level; // Level details\n    uint208 circulatingSupply; // Current circulating supply\n    uint32 cap; // Maximum supply cap\n  }\n\n  struct Token {\n    uint256 tokenId;\n    uint8 levelId;\n    uint64 mintedAtBlock;\n    uint256 vetAmountStaked;\n    uint48 lastVetGeneratedVthoClaimTimestamp_deprecated; // this is the timestamp (in seconds) when the last base VTHO reward was claimed for the token (deprecated in V3 and used only as a getter)\n  }\n\n  struct WhitelistEntry {\n    uint256 tokenId;\n    uint8 levelId;\n  }\n\n  struct WhitelistEntryInit {\n    address owner;\n    uint256 tokenId;\n    uint8 levelId;\n  }\n\n  struct TokenOverview {\n    uint256 id;\n    address owner;\n    address manager;\n    uint8 levelId;\n  }\n}\n"},"contracts/ve-better-passport/libraries/PassportTypes.sol":{"content":"// SPDX-License-Identifier: MIT\n\n//                                      #######\n//                                 ################\n//                               ####################\n//                             ###########   #########\n//                            #########      #########\n//          #######          #########       #########\n//          #########       #########      ##########\n//           ##########     ########     ####################\n//            ##########   #########  #########################\n//              ################### ############################\n//               #################  ##########          ########\n//                 ##############      ###              ########\n//                  ############                       #########\n//                    ##########                     ##########\n//                     ########                    ###########\n//                       ###                    ############\n//                                          ##############\n//                                    #################\n//                                   ##############\n//                                   #########\n\npragma solidity 0.8.20;\n\nimport { IXAllocationVotingGovernor } from \"../../interfaces/IXAllocationVotingGovernor.sol\";\nimport { IX2EarnApps } from \"../../interfaces/IX2EarnApps.sol\";\nimport { IGalaxyMember } from \"../../interfaces/IGalaxyMember.sol\";\n\n/**\n * @title PassportTypes\n * @notice This library defines various data types, enumerations, and initialization parameters used within the Passport contract.\n * It includes the `InitializationData` struct, which contains references to external contracts and configurations for personhood checks,\n * proof of participation, signaling, and passport delegation. It also includes role-based configuration settings.\n */\nlibrary PassportTypes {\n  /**\n   * @dev Struct containing data to initialize the contract\n   * @param xAllocationVoting The address of the xAllocationVoting\n   * @param x2EarnApps The address of the x2EarnApps\n   * @param galaxyMember The address of the galaxy member contract\n   * @param upgrader The address of the upgrader\n   * @param admins The addresses of the admins\n   * @param settingsManagers The addresses of the settings managers\n   * @param roleGranters The addresses of the role granters\n   * @param blacklisters The addresses of the blacklisters\n   * @param whitelisters The addresses of the whitelisters\n   * @param actionRegistrar The address of the action registrar\n   * @param actionScoreManager The address of the action score manager\n   * @param popScoreThreshold The threshold proof of participation score for a wallet to be considered a person\n   * @param signalingThreshold The threshold for a proposal to be active\n   * @param roundsForCumulativeScore The number of rounds for cumulative score\n   */\n  struct InitializationData {\n    IXAllocationVotingGovernor xAllocationVoting;\n    IX2EarnApps x2EarnApps;\n    IGalaxyMember galaxyMember;\n    uint256 signalingThreshold;\n    uint256 roundsForCumulativeScore;\n    uint256 minimumGalaxyMemberLevel;\n    uint256 blacklistThreshold;\n    uint256 whitelistThreshold;\n    uint256 maxEntitiesPerPassport;\n    uint256 decayRate;\n  }\n\n  struct InitializationRoleData {\n    address admin;\n    address botSignaler;\n    address upgrader;\n    address settingsManager;\n    address roleGranter;\n    address blacklister;\n    address whitelister;\n    address actionRegistrar;\n    address actionScoreManager;\n    address resetSignaler;\n  }\n\n  enum CheckType {\n    UNDEFINED, // Default value for invalid or uninitialized checks\n    WHITELIST_CHECK, // Check if the user is whitelisted\n    BLACKLIST_CHECK, // Check if the user is blacklisted\n    SIGNALING_CHECK, // Check if the user has been signaled too many times\n    PARTICIPATION_SCORE_CHECK, // Check the user's participation score\n    GM_OWNERSHIP_CHECK // Check if the user owns a GM token\n  }\n\n  /// @notice Security level indicates how secure the app is\n  /// @dev App security is used to calculate the overall score of a sustainable action\n  enum APP_SECURITY {\n    NONE,\n    LOW,\n    MEDIUM,\n    HIGH\n  }\n}\n"},"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol":{"content":"// SPDX-License-Identifier: MIT\n\n//                                      #######\n//                                 ################\n//                               ####################\n//                             ###########   #########\n//                            #########      #########\n//          #######          #########       #########\n//          #########       #########      ##########\n//           ##########     ########     ####################\n//            ##########   #########  #########################\n//              ################### ############################\n//               #################  ##########          ########\n//                 ##############      ###              ########\n//                  ############                       #########\n//                    ##########                     ##########\n//                     ########                    ###########\n//                       ###                    ############\n//                                          ##############\n//                                    #################\n//                                   ##############\n//                                   #########\n\npragma solidity 0.8.20;\n\nimport { PassportTypes } from \"../../ve-better-passport/libraries/PassportTypes.sol\";\nimport { IVeBetterPassport } from \"../../interfaces/IVeBetterPassport.sol\";\nimport { IXAllocationVotingGovernor } from \"../../interfaces/IXAllocationVotingGovernor.sol\";\nimport { IStargateNFT } from \"../../mocks/Stargate/interfaces/IStargateNFT.sol\";\nimport { DataTypes } from \"../../mocks/Stargate/StargateNFT/libraries/DataTypes.sol\";\nimport { Checkpoints } from \"@openzeppelin/contracts/utils/structs/Checkpoints.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport { X2EarnAppsStorageTypes } from \"./X2EarnAppsStorageTypes.sol\";\n\n/**\n * @title EndorsementUtils\n * @dev Utility library for handling endorsements of applications in a voting context.\n */\nlibrary EndorsementUtils {\n  using Checkpoints for Checkpoints.Trace208;\n  // ------------------------------- Node Data Types -------------------------------\n  enum NodeStrengthLevel {\n    None,\n    Strength,\n    Thunder,\n    Mjolnir,\n    VeThorX,\n    StrengthX,\n    ThunderX,\n    MjolnirX\n  }\n\n  struct NodeStrengthScores {\n    uint256 strength;\n    uint256 thunder;\n    uint256 mjolnir;\n    uint256 veThorX;\n    uint256 strengthX;\n    uint256 thunderX;\n    uint256 mjolnirX;\n  }\n\n  enum NodeSource {\n    None,\n    VeChainNodes,\n    StargateNFT\n  }\n\n  // ------------------------------- Errors -------------------------------\n  error X2EarnNonexistentApp(bytes32 appId);\n  error X2EarnAppBlacklisted(bytes32 appId);\n  error X2EarnNonNodeHolder();\n  error X2EarnAppAlreadyEndorsed(bytes32 appId);\n  error NodeNotAllowedToEndorse();\n  error X2EarnNonEndorser();\n  error NodeManagementXAppAlreadyIncluded(bytes32 appId);\n  error X2EarnInvalidAddress(address addr);\n  // V8 errors\n  error EndorsementsPaused();\n  error CooldownNotExpired(uint256 nodeId, bytes32 appId);\n  error ExceedsMaxPointsPerApp(bytes32 appId, uint256 current, uint256 max);\n  error ExceedsMaxPointsPerNode(uint256 nodeId, bytes32 appId, uint256 max);\n  error InsufficientAvailablePoints(uint256 nodeId, uint256 available, uint256 requested);\n  error InvalidPointsAmount();\n  error MigrationAlreadyCompleted();\n  error InvalidEndorsementIndex(uint256 nodeId, bytes32 appId);\n  error MaxPointsPerAppBelowThreshold(uint256 maxPoints, uint256 threshold);\n  error ThresholdExceedsMaxPointsPerApp(uint256 threshold, uint256 maxPointsPerApp);\n  error FutureLookup(uint256 timepoint, uint256 currentBlock);\n\n  // ------------------------------- Events -------------------------------\n  event AppAdded(bytes32 indexed id, address addr, string name, bool appAvailableForAllocationVoting);\n  event AppEndorsed(bytes32 indexed appId, uint256 indexed nodeId, address endorser, uint256 points);\n  event AppUnendorsed(bytes32 indexed appId, uint256 indexed nodeId, uint256 points);\n  event EndorsementsPausedUpdated(bool paused);\n  event NodeStrengthScoresUpdated(NodeStrengthScores nodeStrengthScores);\n  event AppEndorsementStatusUpdated(bytes32 indexed appId, bool endorsed);\n  event AppUnendorsedGracePeriodStarted(bytes32 indexed appId, uint48 startBlock, uint48 endBlock);\n  event GracePeriodUpdated(uint256 oldGracePeriod, uint256 newGracePeriod);\n  event CooldownPeriodUpdated(uint256 oldCooldownPeriod, uint256 newCooldownPeriod);\n  event EndorsementScoreThresholdUpdated(uint256 oldThreshold, uint256 newThreshold);\n  event MaxPointsPerNodePerAppUpdated(uint256 oldMax, uint256 newMax);\n  event MaxPointsPerAppUpdated(uint256 oldMax, uint256 newMax);\n\n  // ------------------------------- Getter Functions -------------------------------\n\n  /**\n   * @notice Returns the current endorsement score for an app.\n   * @param appId The unique identifier of the app.\n   * @return The total endorsement points the app has received.\n   */\n  function getScore(bytes32 appId) external view returns (uint256) {\n    return uint256(X2EarnAppsStorageTypes._getEndorsementStorage()._appEndorsementScoreCheckpoints[appId].latest());\n  }\n\n  /**\n   * @notice Returns the endorsement score for an app at a specific block number.\n   * @param appId The unique identifier of the app.\n   * @param timepoint The block number to query.\n   * @return The endorsement score at the given timepoint.\n   */\n  function getScoreAtTimepoint(bytes32 appId, uint256 timepoint) external view returns (uint256) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    if (timepoint > block.number) {\n      revert FutureLookup(timepoint, block.number);\n    }\n    return uint256($._appEndorsementScoreCheckpoints[appId].upperLookupRecent(SafeCast.toUint48(timepoint)));\n  }\n\n  /**\n   * @notice Returns all endorser addresses for an app.\n   * @dev Filters out burned nodes and returns only valid manager addresses.\n   * @param appId The unique identifier of the app.\n   * @return Array of addresses managing nodes that endorse this app.\n   */\n  function getEndorsers(bytes32 appId) external view returns (address[] memory) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    uint256[] storage nodeIds = $._appEndorserNodes[appId];\n    uint256 length = nodeIds.length;\n    address[] memory endorsers = new address[](length);\n    uint256 count;\n\n    for (uint256 i; i < length; i++) {\n      uint256 nodeId = nodeIds[i];\n      if (!$._stargateNFT.tokenExists(nodeId)) continue;\n      address manager = $._stargateNFT.getTokenManager(nodeId);\n      if (manager != address(0)) {\n        endorsers[count] = manager;\n        count++;\n      }\n    }\n\n    assembly {\n      mstore(endorsers, count)\n    }\n    return endorsers;\n  }\n\n  /**\n   * @notice Returns all node IDs that endorse an app.\n   * @param appId The unique identifier of the app.\n   * @return Array of node IDs endorsing this app.\n   */\n  function getEndorserNodes(bytes32 appId) external view returns (uint256[] memory) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._appEndorserNodes[appId];\n  }\n\n  /**\n   * @notice Returns the total endorsement score a user has from all their managed nodes.\n   * @param user The address of the user.\n   * @return Total endorsement points across all nodes the user manages.\n   */\n  function getUsersEndorsementScore(address user) external view returns (uint256) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    DataTypes.Token[] memory nodeLevels = $._stargateNFT.tokensManagedBy(user);\n    uint256 totalScore;\n    for (uint256 i; i < nodeLevels.length; i++) {\n      totalScore += $._nodeEnodorsmentScore[nodeLevels[i].levelId];\n    }\n    return totalScore;\n  }\n\n  /**\n   * @notice Returns the endorsement score for a specific node based on its level.\n   * @param nodeId The unique identifier of the node.\n   * @return The endorsement score the node has based on its strength level.\n   */\n  function getNodeEndorsementScore(uint256 nodeId) external view returns (uint256) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    uint8 nodeLevel = $._stargateNFT.getTokenLevel(nodeId);\n    return $._nodeEnodorsmentScore[nodeLevel];\n  }\n\n  /**\n   * @notice Returns the endorsement score for a specific node strength level.\n   * @param nodeLevel The strength level (1-7 corresponding to different node types).\n   * @return The endorsement score assigned to that node level.\n   */\n  function nodeLevelEndorsementScore(uint8 nodeLevel) external view returns (uint256) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._nodeEnodorsmentScore[nodeLevel];\n  }\n\n  /**\n   * @notice Returns the grace period duration in blocks.\n   * @dev Grace period is the time an app has to regain endorsement after losing eligibility.\n   * @return The grace period duration in blocks.\n   */\n  function gracePeriod() external view returns (uint256) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._gracePeriodDuration;\n  }\n\n  /**\n   * @notice Returns the cooldown period duration in rounds.\n   * @dev Cooldown prevents immediate un-endorsement after endorsing an app.\n   * @return The cooldown period duration in rounds.\n   */\n  function cooldownPeriod() external view returns (uint256) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._cooldownPeriod;\n  }\n\n  /**\n   * @notice Returns the minimum endorsement score required for an app to be eligible.\n   * @return The endorsement score threshold (default 100).\n   */\n  function endorsementScoreThreshold() external view returns (uint256) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._endorsementScoreThreshold;\n  }\n\n  /**\n   * @notice Checks if an app is in the unendorsed (pending endorsement) list.\n   * @param appId The unique identifier of the app.\n   * @param isBlacklisted Whether the app is blacklisted.\n   * @return True if the app is pending endorsement, false otherwise.\n   */\n  function isAppUnendorsed(bytes32 appId, bool isBlacklisted) external view returns (bool) {\n    if (isBlacklisted) return false;\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._unendorsedAppsIndex[appId] > 0;\n  }\n\n  /**\n   * @notice Returns all app IDs that are currently pending endorsement.\n   * @return Array of app IDs waiting to reach the endorsement threshold.\n   */\n  function unendorsedAppIds() external view returns (bytes32[] memory) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._unendorsedApps;\n  }\n\n  /**\n   * @notice Returns the maximum points a single node can assign to one app.\n   * @return The max points per node per app (default 49).\n   */\n  function maxPointsPerNodePerApp() external view returns (uint256) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._maxPointsPerNodePerApp;\n  }\n\n  /**\n   * @notice Returns the maximum total points an app can receive from all endorsers.\n   * @return The max points per app (default 110).\n   */\n  function maxPointsPerApp() external view returns (uint256) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._maxPointsPerApp;\n  }\n\n  /**\n   * @notice Checks if endorsements are currently paused (during migration).\n   * @return True if endorsements are paused, false otherwise.\n   */\n  function endorsementsPaused() external view returns (bool) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._endorsementsPaused;\n  }\n\n  /**\n   * @notice Checks if the V8 migration has been completed.\n   * @return True if migration is complete, false otherwise.\n   */\n  function migrationCompleted() external view returns (bool) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._migrationCompleted;\n  }\n\n  /**\n   * @notice Returns all active endorsements for a node.\n   * @dev Each endorsement contains appId, points, and endorsedAtRound for cooldown tracking.\n   * @param nodeId The unique identifier of the node.\n   * @return Array of Endorsement structs representing all apps the node endorses.\n   */\n  function getNodeActiveEndorsements(\n    uint256 nodeId\n  ) external view returns (X2EarnAppsStorageTypes.Endorsement[] memory) {\n    return X2EarnAppsStorageTypes._getEndorsementStorage()._activeEndorsements[nodeId];\n  }\n\n  /**\n   * @notice Returns how many points a node has allocated to a specific app.\n   * @param nodeId The unique identifier of the node.\n   * @param appId The unique identifier of the app.\n   * @return The number of points the node has endorsed to this app.\n   */\n  function getNodePointsForApp(uint256 nodeId, bytes32 appId) external view returns (uint256) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n    if (endorsements.length == 0) return 0;\n    uint256 index = $._activeEndorsementsAppIndex[nodeId][appId];\n    if (index >= endorsements.length || endorsements[index].appId != appId) return 0;\n    return endorsements[index].points;\n  }\n\n  /**\n   * @notice Returns the total points a node has used across all endorsements.\n   * @param nodeId The unique identifier of the node.\n   * @return Total points the node has allocated to apps.\n   */\n  function getNodeUsedPoints(uint256 nodeId) external view returns (uint256) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n    uint256 usedPoints;\n    for (uint256 i; i < endorsements.length; i++) {\n      usedPoints += endorsements[i].points;\n    }\n    return usedPoints;\n  }\n\n  /**\n   * @notice Returns the available points a node can still allocate to apps.\n   * @dev Calculated as: totalPoints (based on node level) - usedPoints (sum of all endorsements).\n   * @param nodeId The unique identifier of the node.\n   * @return Available points the node can use for new endorsements.\n   */\n  function getNodeAvailablePoints(uint256 nodeId) external view returns (uint256) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    uint8 nodeLevel = $._stargateNFT.getTokenLevel(nodeId);\n    uint256 totalPoints = $._nodeEnodorsmentScore[nodeLevel];\n    X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n    uint256 usedPoints;\n    for (uint256 i; i < endorsements.length; i++) {\n      usedPoints += endorsements[i].points;\n    }\n    return totalPoints > usedPoints ? totalPoints - usedPoints : 0;\n  }\n\n  /**\n   * @notice Returns comprehensive info about a node's endorsement points.\n   * @dev Calculates total, used, available, and locked (under cooldown) points in a single call.\n   * @param nodeId The unique identifier of the node.\n   * @return info Struct containing totalPoints, usedPoints, availablePoints, and lockedPoints.\n   */\n  function getNodePointsInfo(uint256 nodeId) external view returns (X2EarnAppsStorageTypes.NodePointsInfo memory info) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    uint8 nodeLevel = $._stargateNFT.getTokenLevel(nodeId);\n    info.totalPoints = $._nodeEnodorsmentScore[nodeLevel];\n\n    X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n    uint256 currentRound = $._xAllocationVotingGovernor.currentRoundId();\n\n    for (uint256 i; i < endorsements.length; i++) {\n      info.usedPoints += endorsements[i].points;\n      if (currentRound < endorsements[i].endorsedAtRound + $._cooldownPeriod) {\n        info.lockedPoints += endorsements[i].points;\n      }\n    }\n\n    info.availablePoints = info.totalPoints > info.usedPoints ? info.totalPoints - info.usedPoints : 0;\n  }\n\n  /**\n   * @notice Checks if a node can unendorse a specific app (cooldown expired).\n   * @dev Returns false if node doesn't endorse the app or if cooldown hasn't expired.\n   *      Cooldown is measured in rounds (VeBetterDAO allocation rounds).\n   * @param nodeId The unique identifier of the node.\n   * @param appId The unique identifier of the app.\n   * @return True if the node can unendorse the app, false otherwise.\n   */\n  function canUnendorse(uint256 nodeId, bytes32 appId) external view returns (bool) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n    if (endorsements.length == 0) return false;\n    uint256 index = $._activeEndorsementsAppIndex[nodeId][appId];\n    if (index >= endorsements.length || endorsements[index].appId != appId) return false;\n    return $._xAllocationVotingGovernor.currentRoundId() >= endorsements[index].endorsedAtRound + $._cooldownPeriod;\n  }\n\n  // ------------------------------- Setter Functions -------------------------------\n\n  /**\n   * @notice Updates the endorsement scores for all node strength levels.\n   * @dev Called by governance to adjust how many endorsement points each node type provides.\n   * @param nodeStrengthScores Struct containing scores for all 7 node levels.\n   */\n  function updateNodeEndorsementScores(NodeStrengthScores calldata nodeStrengthScores) external {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    $._nodeEnodorsmentScore[1] = nodeStrengthScores.strength;\n    $._nodeEnodorsmentScore[2] = nodeStrengthScores.thunder;\n    $._nodeEnodorsmentScore[3] = nodeStrengthScores.mjolnir;\n    $._nodeEnodorsmentScore[4] = nodeStrengthScores.veThorX;\n    $._nodeEnodorsmentScore[5] = nodeStrengthScores.strengthX;\n    $._nodeEnodorsmentScore[6] = nodeStrengthScores.thunderX;\n    $._nodeEnodorsmentScore[7] = nodeStrengthScores.mjolnirX;\n    emit NodeStrengthScoresUpdated(nodeStrengthScores);\n  }\n\n  /**\n   * @notice Adds or removes an app from the unendorsed apps list.\n   * @dev Apps in this list have been submitted but haven't reached the endorsement threshold yet.\n   *      Uses swap-and-pop pattern for O(1) removal.\n   * @param appId The unique identifier of the app.\n   * @param remove If true, removes from list; if false, adds to list.\n   */\n  function updateUnendorsedApps(bytes32 appId, bool remove) public {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    if (remove) {\n      uint256 index = $._unendorsedAppsIndex[appId] - 1;\n      uint256 lastIndex = $._unendorsedApps.length - 1;\n      bytes32 lastAppId = $._unendorsedApps[lastIndex];\n      $._unendorsedApps[index] = lastAppId;\n      $._unendorsedAppsIndex[lastAppId] = index + 1;\n      $._unendorsedApps.pop();\n      delete $._unendorsedAppsIndex[appId];\n    } else {\n      $._unendorsedApps.push(appId);\n      $._unendorsedAppsIndex[appId] = $._unendorsedApps.length;\n    }\n  }\n\n  /**\n   * @notice Sets the grace period duration.\n   * @dev Grace period is the time an app has to regain endorsement after losing eligibility.\n   * @param gracePeriodDuration The new grace period in blocks.\n   */\n  function setGracePeriod(uint48 gracePeriodDuration) external {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    emit GracePeriodUpdated($._gracePeriodDuration, gracePeriodDuration);\n    $._gracePeriodDuration = gracePeriodDuration;\n  }\n\n  /**\n   * @notice Sets the cooldown period duration.\n   * @dev Cooldown prevents immediate un-endorsement after endorsing an app.\n   * @param cooldownPeriodDuration The new cooldown period in rounds.\n   */\n  function setCooldownPeriod(uint256 cooldownPeriodDuration) external {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    emit CooldownPeriodUpdated($._cooldownPeriod, cooldownPeriodDuration);\n    $._cooldownPeriod = cooldownPeriodDuration;\n  }\n\n  /**\n   * @notice Updates the minimum endorsement score required for app eligibility.\n   * @dev Reverts if scoreThreshold > maxPointsPerApp (would make threshold unreachable).\n   * @param scoreThreshold The new endorsement score threshold.\n   */\n  function updateEndorsementScoreThreshold(uint256 scoreThreshold) external {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    if (scoreThreshold > $._maxPointsPerApp) {\n      revert ThresholdExceedsMaxPointsPerApp(scoreThreshold, $._maxPointsPerApp);\n    }\n    emit EndorsementScoreThresholdUpdated($._endorsementScoreThreshold, scoreThreshold);\n    $._endorsementScoreThreshold = scoreThreshold;\n  }\n\n  /**\n   * @notice Sets the endorsement status of an app and updates pending list.\n   * @param appId The unique identifier of the app.\n   * @param endorsed If true, removes from pending list; if false, adds to pending list.\n   */\n  function setEndorsementStatus(bytes32 appId, bool endorsed) public {\n    updateUnendorsedApps(appId, endorsed);\n    emit AppEndorsementStatusUpdated(appId, endorsed);\n  }\n\n  /**\n   * @notice Sets the maximum points a single node can assign to one app.\n   * @dev Enforces decentralization by preventing one node from dominating an app's endorsement.\n   * @param maxPoints The new max points per node per app (default 49).\n   */\n  function setMaxPointsPerNodePerApp(uint256 maxPoints) external {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    emit MaxPointsPerNodePerAppUpdated($._maxPointsPerNodePerApp, maxPoints);\n    $._maxPointsPerNodePerApp = maxPoints;\n  }\n\n  /**\n   * @notice Sets the maximum total points an app can receive from all endorsers.\n   * @dev Provides a buffer above the threshold to prevent over-endorsement.\n   *      Reverts if maxPoints < endorsementScoreThreshold (would make threshold unreachable).\n   * @param maxPoints The new max points per app (default 110).\n   */\n  function setMaxPointsPerApp(uint256 maxPoints) external {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    if (maxPoints < $._endorsementScoreThreshold) {\n      revert MaxPointsPerAppBelowThreshold(maxPoints, $._endorsementScoreThreshold);\n    }\n    emit MaxPointsPerAppUpdated($._maxPointsPerApp, maxPoints);\n    $._maxPointsPerApp = maxPoints;\n  }\n\n  /**\n   * @notice Pauses or unpauses endorsement operations.\n   * @dev Used during migration to prevent state changes while data is being seeded.\n   * @param paused If true, pauses endorsements; if false, unpauses.\n   */\n  function setEndorsementsPaused(bool paused) external {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n    $._endorsementsPaused = paused;\n    emit EndorsementsPausedUpdated(paused);\n  }\n\n  /**\n   * @notice Marks the V8 migration as complete or incomplete.\n   * @dev Once complete, seedEndorsement() can no longer be called.\n   * @param completed If true, marks migration as complete.\n   */\n  function setMigrationCompleted(bool completed) external {\n    X2EarnAppsStorageTypes._getEndorsementStorage()._migrationCompleted = completed;\n  }\n\n  // ------------------------------- Core Logic Functions -------------------------------\n\n  /**\n   * @notice Endorses an app with a specified number of points from a node.\n   * @dev Validates all constraints (paused, caps, node ownership) before creating endorsement.\n   *      If node already endorses this app, adds points and resets cooldown.\n   *      Cooldown is tracked per-app using the current round ID.\n   * @param appId The unique identifier of the app to endorse.\n   * @param nodeId The unique identifier of the endorsing node.\n   * @param points The number of points to endorse with.\n   * @param isBlacklisted Whether the app is currently blacklisted.\n   * @param appExists Whether the app has been fully created (not just submitted).\n   * @param isEligibleNow Whether the app is currently eligible for voting.\n   */\n  function endorseApp(\n    bytes32 appId,\n    uint256 nodeId,\n    uint256 points,\n    bool isBlacklisted,\n    bool appExists,\n    bool isEligibleNow\n  ) external {\n    X2EarnAppsStorageTypes.AppsStorageStorage storage appsStorage = X2EarnAppsStorageTypes._getAppsStorageStorage();\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n\n    _validateEndorsement($, appsStorage, appId, nodeId, points, isBlacklisted);\n\n    uint256 currentAppPoints = _getNodePointsForAppInternal($, nodeId, appId);\n    _updateEndorsement($, nodeId, appId, points, currentAppPoints, $._xAllocationVotingGovernor.currentRoundId());\n    uint256 newScore = _getScore($, appId) + points;\n    _setScore($, appId, newScore);\n\n    if (newScore >= $._endorsementScoreThreshold) {\n      _updateStatusIfThresholdMet($, appsStorage, appId, appExists, isEligibleNow, isBlacklisted);\n    }\n\n    address endorser = $._stargateNFT.getTokenManager(nodeId);\n    emit AppEndorsed(appId, nodeId, endorser, points);\n  }\n\n  function _validateEndorsement(\n    X2EarnAppsStorageTypes.EndorsementStorage storage $,\n    X2EarnAppsStorageTypes.AppsStorageStorage storage appsStorage,\n    bytes32 appId,\n    uint256 nodeId,\n    uint256 points,\n    bool isBlacklisted\n  ) private view {\n    if ($._endorsementsPaused) revert EndorsementsPaused();\n    if (appsStorage._apps[appId].id == bytes32(0)) revert X2EarnNonexistentApp(appId);\n    if (isBlacklisted) revert X2EarnAppBlacklisted(appId);\n    if (nodeId == 0 || points == 0) revert InvalidPointsAmount();\n    if (!$._stargateNFT.tokenExists(nodeId) || !$._stargateNFT.isTokenManager(msg.sender, nodeId)) {\n      revert X2EarnNonNodeHolder();\n    }\n\n    uint8 nodeLevel = $._stargateNFT.getTokenLevel(nodeId);\n    if ($._nodeEnodorsmentScore[nodeLevel] == 0) revert NodeNotAllowedToEndorse();\n\n    uint256 totalNodePoints = $._nodeEnodorsmentScore[nodeLevel];\n    uint256 usedPoints = _getNodeUsedPoints($, nodeId);\n    uint256 availablePoints = totalNodePoints > usedPoints ? totalNodePoints - usedPoints : 0;\n    if (points > availablePoints) revert InsufficientAvailablePoints(nodeId, availablePoints, points);\n\n    uint256 currentAppPoints = _getNodePointsForAppInternal($, nodeId, appId);\n    if (currentAppPoints + points > $._maxPointsPerNodePerApp) {\n      revert ExceedsMaxPointsPerNode(nodeId, appId, $._maxPointsPerNodePerApp);\n    }\n    uint256 currentScore = _getScore($, appId);\n    if (currentScore + points > $._maxPointsPerApp) {\n      revert ExceedsMaxPointsPerApp(appId, currentScore, $._maxPointsPerApp);\n    }\n  }\n\n  function _updateEndorsement(\n    X2EarnAppsStorageTypes.EndorsementStorage storage $,\n    uint256 nodeId,\n    bytes32 appId,\n    uint256 points,\n    uint256 currentAppPoints,\n    uint256 currentRound\n  ) private {\n    if (currentAppPoints > 0) {\n      uint256 index = $._activeEndorsementsAppIndex[nodeId][appId];\n      $._activeEndorsements[nodeId][index].points = currentAppPoints + points;\n      $._activeEndorsements[nodeId][index].endorsedAtRound = currentRound;\n    } else {\n      // Add to node's endorsements\n      $._activeEndorsements[nodeId].push(\n        X2EarnAppsStorageTypes.Endorsement({ appId: appId, points: points, endorsedAtRound: currentRound })\n      );\n      $._activeEndorsementsAppIndex[nodeId][appId] = $._activeEndorsements[nodeId].length - 1;\n\n      // Add to app's endorser nodes (reverse mapping)\n      $._appEndorserNodes[appId].push(nodeId);\n      $._appEndorserNodesIndex[appId][nodeId] = $._appEndorserNodes[appId].length - 1;\n    }\n  }\n\n  /**\n   * @notice Removes points from an endorsement (partial or full un-endorsement).\n   * @dev Requires cooldown to have expired. If points=0, removes entire endorsement.\n   * @param appId The unique identifier of the app to unendorse.\n   * @param nodeId The unique identifier of the endorsing node.\n   * @param points The number of points to remove (0 = remove all).\n   * @param isBlacklisted Whether the app is currently blacklisted.\n   * @param isEligibleNow Whether the app is currently eligible for voting.\n   * @param clock The current block timestamp for grace period calculations.\n   * @return stillEligible Whether the app remains eligible after this un-endorsement.\n   */\n  function unendorseApp(\n    bytes32 appId,\n    uint256 nodeId,\n    uint256 points,\n    bool isBlacklisted,\n    bool isEligibleNow,\n    uint48 clock\n  ) external returns (bool stillEligible) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n\n    {\n      X2EarnAppsStorageTypes.AppsStorageStorage storage appsStorage = X2EarnAppsStorageTypes._getAppsStorageStorage();\n      if ($._endorsementsPaused) revert EndorsementsPaused();\n      if (appsStorage._apps[appId].id == bytes32(0)) revert X2EarnNonexistentApp(appId);\n    }\n\n    if (!$._stargateNFT.tokenExists(nodeId) || !$._stargateNFT.isTokenManager(msg.sender, nodeId)) {\n      revert X2EarnNonNodeHolder();\n    }\n\n    uint256 pointsToRemove;\n    {\n      X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n      if (endorsements.length == 0) revert X2EarnNonEndorser();\n\n      uint256 index = $._activeEndorsementsAppIndex[nodeId][appId];\n      if (index >= endorsements.length || endorsements[index].appId != appId) {\n        revert X2EarnNonEndorser();\n      }\n\n      if ($._xAllocationVotingGovernor.currentRoundId() < endorsements[index].endorsedAtRound + $._cooldownPeriod) {\n        revert CooldownNotExpired(nodeId, appId);\n      }\n\n      uint256 currentPoints = endorsements[index].points;\n      pointsToRemove = points == 0 ? currentPoints : points;\n      if (pointsToRemove > currentPoints) revert InvalidPointsAmount();\n\n      if (pointsToRemove == currentPoints) {\n        _removeEndorsement($, nodeId, appId, index);\n      } else {\n        endorsements[index].points -= pointsToRemove;\n      }\n    }\n\n    uint256 newScore = _getScore($, appId) - pointsToRemove;\n    _setScore($, appId, newScore);\n\n    emit AppUnendorsed(appId, nodeId, pointsToRemove);\n\n    if (!isEligibleNow || isBlacklisted) {\n      return isEligibleNow;\n    }\n\n    if (newScore < $._endorsementScoreThreshold) {\n      return _updateStatusIfThresholdNotMetWithVote($, appId, isBlacklisted, isEligibleNow, clock);\n    }\n\n    return true;\n  }\n\n  /**\n   * @notice Removes a node's endorsement from an app (called by app admin).\n   * @dev Unlike unendorseApp, this bypasses cooldown check. Used by app admins to remove endorsers.\n   * @param appId The unique identifier of the app.\n   * @param nodeId The unique identifier of the node to remove.\n   * @param isBlacklisted Whether the app is currently blacklisted.\n   * @param isEligibleNow Whether the app is currently eligible for voting.\n   * @param clock The current block timestamp for grace period calculations.\n   * @return stillEligible Whether the app remains eligible after removal.\n   */\n  function removeNodeEndorsement(\n    bytes32 appId,\n    uint256 nodeId,\n    bool isBlacklisted,\n    bool isEligibleNow,\n    uint48 clock\n  ) public returns (bool stillEligible) {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n\n    {\n      X2EarnAppsStorageTypes.AppsStorageStorage storage appsStorage = X2EarnAppsStorageTypes._getAppsStorageStorage();\n      if (appsStorage._apps[appId].id == bytes32(0)) revert X2EarnNonexistentApp(appId);\n    }\n\n    uint256 pointsToRemove;\n    {\n      X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n      if (endorsements.length == 0) revert X2EarnNonEndorser();\n\n      uint256 index = $._activeEndorsementsAppIndex[nodeId][appId];\n      if (index >= endorsements.length || endorsements[index].appId != appId) {\n        revert X2EarnNonEndorser();\n      }\n\n      pointsToRemove = endorsements[index].points;\n      _removeEndorsement($, nodeId, appId, index);\n    }\n\n    uint256 newScore = _getScore($, appId) - pointsToRemove;\n    _setScore($, appId, newScore);\n\n    emit AppUnendorsed(appId, nodeId, pointsToRemove);\n\n    if (!isEligibleNow || isBlacklisted) {\n      return isEligibleNow;\n    }\n\n    if (newScore < $._endorsementScoreThreshold) {\n      return _updateStatusIfThresholdNotMetWithVote($, appId, isBlacklisted, isEligibleNow, clock);\n    }\n\n    return true;\n  }\n\n  /**\n   * @notice Removes an app submission that hasn't been fully created yet.\n   * @dev Can only be called on apps that were submitted but not yet created (createdAtTimestamp == 0).\n   * @param appId The unique identifier of the app to remove.\n   */\n  function removeXAppSubmission(bytes32 appId) external {\n    X2EarnAppsStorageTypes.AppsStorageStorage storage appsStorage = X2EarnAppsStorageTypes._getAppsStorageStorage();\n    if (appsStorage._apps[appId].id == bytes32(0)) revert X2EarnNonexistentApp(appId);\n    if (appsStorage._apps[appId].createdAtTimestamp != 0) revert NodeManagementXAppAlreadyIncluded(appId);\n    updateUnendorsedApps(appId, true);\n  }\n\n  /**\n   * @notice Validates an app's endorsement status and cleans up invalid endorsements.\n   * @dev Removes endorsements from burned/invalid nodes and updates eligibility status.\n   *      Triggers grace period if score drops below threshold.\n   * @param appId The unique identifier of the app to check.\n   * @param clock The current block timestamp for grace period calculations.\n   * @return True if the app is still eligible after validation, false otherwise.\n   */\n  function checkEndorsement(bytes32 appId, uint48 clock) external returns (bool) {\n    X2EarnAppsStorageTypes.AppsStorageStorage storage appsStorage = X2EarnAppsStorageTypes._getAppsStorageStorage();\n    X2EarnAppsStorageTypes.VoteEligibilityStorage storage voteStorage = X2EarnAppsStorageTypes\n      ._getVoteEligibilityStorage();\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n\n    if (appsStorage._apps[appId].id == bytes32(0)) revert X2EarnNonexistentApp(appId);\n\n    bool isBlacklisted = voteStorage._blackList[appId];\n    if (isBlacklisted) return false;\n\n    // Validate endorsements and remove invalid ones (burned nodes, etc.)\n    uint256 score = _validateAndCleanEndorsements($, appId);\n    bool existsNow = appsStorage._apps[appId].createdAtTimestamp != 0;\n    bool isEligibleNow = existsNow && voteStorage._isAppEligibleCheckpoints[appId].latest() == 1;\n\n    if (score < $._endorsementScoreThreshold) {\n      return _updateStatusIfThresholdNotMetWithVote($, appId, isBlacklisted, isEligibleNow, clock);\n    } else {\n      _updateStatusIfThresholdMet($, appsStorage, appId, existsNow, isEligibleNow, isBlacklisted);\n    }\n\n    return true;\n  }\n\n  /// @dev Validate all endorsements for an app, remove invalid ones, and return updated score\n  function _validateAndCleanEndorsements(\n    X2EarnAppsStorageTypes.EndorsementStorage storage $,\n    bytes32 appId\n  ) private returns (uint256) {\n    uint256[] storage nodeIds = $._appEndorserNodes[appId];\n    uint256 validScore;\n    uint256 i;\n\n    while (i < nodeIds.length) {\n      uint256 nodeId = nodeIds[i];\n      bool isValid = $._stargateNFT.tokenExists(nodeId);\n\n      if (!isValid) {\n        // Get points from this endorsement\n        X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n        uint256 endorseIndex = $._activeEndorsementsAppIndex[nodeId][appId];\n\n        // Defensive validation before reading endorsement\n        if (endorseIndex >= endorsements.length || endorsements[endorseIndex].appId != appId) {\n          revert InvalidEndorsementIndex(nodeId, appId);\n        }\n\n        uint256 pointsToRemove = endorsements[endorseIndex].points;\n\n        // Remove endorsement from node's list\n        uint256 lastEndorseIndex = endorsements.length - 1;\n        if (endorseIndex != lastEndorseIndex) {\n          endorsements[endorseIndex] = endorsements[lastEndorseIndex];\n          $._activeEndorsementsAppIndex[nodeId][endorsements[endorseIndex].appId] = endorseIndex;\n        }\n        endorsements.pop();\n        delete $._activeEndorsementsAppIndex[nodeId][appId];\n\n        // Remove from app's endorser list (swap and pop)\n        uint256 lastNodeIndex = nodeIds.length - 1;\n        if (i != lastNodeIndex) {\n          uint256 lastNodeId = nodeIds[lastNodeIndex];\n          nodeIds[i] = lastNodeId;\n          $._appEndorserNodesIndex[appId][lastNodeId] = i;\n        }\n        nodeIds.pop();\n        delete $._appEndorserNodesIndex[appId][nodeId];\n\n        emit AppUnendorsed(appId, nodeId, pointsToRemove);\n        // Don't increment i since we swapped\n      } else {\n        // Valid node - add points to score\n        X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n        uint256 endorseIndex = $._activeEndorsementsAppIndex[nodeId][appId];\n\n        // Defensive validation before reading endorsement\n        if (endorseIndex >= endorsements.length || endorsements[endorseIndex].appId != appId) {\n          revert InvalidEndorsementIndex(nodeId, appId);\n        }\n\n        validScore += endorsements[endorseIndex].points;\n        i++;\n      }\n    }\n\n    // Update stored score\n    _setScore($, appId, validScore);\n    return validScore;\n  }\n\n  function seedEndorsement(bytes32 appId, uint256 nodeId, uint256 points) external {\n    X2EarnAppsStorageTypes.EndorsementStorage storage $ = X2EarnAppsStorageTypes._getEndorsementStorage();\n\n    if ($._migrationCompleted) revert MigrationAlreadyCompleted();\n\n    uint256 currentRound = $._xAllocationVotingGovernor.currentRoundId();\n    X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n    uint256 existingIndex = $._activeEndorsementsAppIndex[nodeId][appId];\n\n    // Check if endorsement already exists for this (nodeId, appId)\n    bool exists = endorsements.length > 0 &&\n      existingIndex < endorsements.length &&\n      endorsements[existingIndex].appId == appId;\n\n    if (exists) {\n      // Update existing endorsement - adjust score delta\n      uint256 oldPoints = endorsements[existingIndex].points;\n      endorsements[existingIndex].points = points;\n      endorsements[existingIndex].endorsedAtRound = currentRound;\n\n      // Adjust app score: remove old, add new\n      _setScore($, appId, _getScore($, appId) - oldPoints + points);\n    } else {\n      // Create new endorsement\n      endorsements.push(\n        X2EarnAppsStorageTypes.Endorsement({ appId: appId, points: points, endorsedAtRound: currentRound })\n      );\n      $._activeEndorsementsAppIndex[nodeId][appId] = endorsements.length - 1;\n\n      // Add to app's endorser nodes (reverse mapping) - only for new endorsements\n      $._appEndorserNodes[appId].push(nodeId);\n      $._appEndorserNodesIndex[appId][nodeId] = $._appEndorserNodes[appId].length - 1;\n\n      _setScore($, appId, _getScore($, appId) + points);\n    }\n\n    // Get endorser address from node manager\n    address endorser = $._stargateNFT.getTokenManager(nodeId);\n    emit AppEndorsed(appId, nodeId, endorser, points);\n  }\n\n  // ------------------------------- Private Functions -------------------------------\n\n  function _getNodeUsedPoints(\n    X2EarnAppsStorageTypes.EndorsementStorage storage $,\n    uint256 nodeId\n  ) private view returns (uint256) {\n    X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n    uint256 usedPoints;\n    for (uint256 i; i < endorsements.length; i++) {\n      usedPoints += endorsements[i].points;\n    }\n    return usedPoints;\n  }\n\n  function _getNodePointsForAppInternal(\n    X2EarnAppsStorageTypes.EndorsementStorage storage $,\n    uint256 nodeId,\n    bytes32 appId\n  ) private view returns (uint256) {\n    X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n    if (endorsements.length == 0) return 0;\n    uint256 index = $._activeEndorsementsAppIndex[nodeId][appId];\n    if (index >= endorsements.length || endorsements[index].appId != appId) return 0;\n    return endorsements[index].points;\n  }\n\n  function _removeEndorsement(\n    X2EarnAppsStorageTypes.EndorsementStorage storage $,\n    uint256 nodeId,\n    bytes32 appId,\n    uint256 index\n  ) private {\n    // Remove from node's endorsements (swap and pop)\n    X2EarnAppsStorageTypes.Endorsement[] storage endorsements = $._activeEndorsements[nodeId];\n    uint256 lastIndex = endorsements.length - 1;\n\n    if (index != lastIndex) {\n      X2EarnAppsStorageTypes.Endorsement storage lastEndorsement = endorsements[lastIndex];\n      endorsements[index] = lastEndorsement;\n      $._activeEndorsementsAppIndex[nodeId][lastEndorsement.appId] = index;\n    }\n\n    endorsements.pop();\n    delete $._activeEndorsementsAppIndex[nodeId][appId];\n\n    // Remove from app's endorser nodes (reverse mapping, swap and pop)\n    uint256[] storage appNodes = $._appEndorserNodes[appId];\n    uint256 nodeIndex = $._appEndorserNodesIndex[appId][nodeId];\n    uint256 lastNodeIndex = appNodes.length - 1;\n\n    if (nodeIndex != lastNodeIndex) {\n      uint256 lastNodeId = appNodes[lastNodeIndex];\n      appNodes[nodeIndex] = lastNodeId;\n      $._appEndorserNodesIndex[appId][lastNodeId] = nodeIndex;\n    }\n\n    appNodes.pop();\n    delete $._appEndorserNodesIndex[appId][nodeId];\n  }\n\n  function _updateStatusIfThresholdMet(\n    X2EarnAppsStorageTypes.EndorsementStorage storage $,\n    X2EarnAppsStorageTypes.AppsStorageStorage storage appsStorage,\n    bytes32 appId,\n    bool appExists,\n    bool isEligibleNow,\n    bool isBlacklisted\n  ) private {\n    if (!appExists) {\n      appsStorage._apps[appId].createdAtTimestamp = block.timestamp;\n      appsStorage._appIds.push(appId);\n      $._veBetterPassport.setAppSecurity(appId, PassportTypes.APP_SECURITY.LOW);\n\n      X2EarnAppsStorageTypes.AdministrationStorage storage adminStorage = X2EarnAppsStorageTypes\n        ._getAdministrationStorage();\n      emit AppAdded(appId, adminStorage._teamWalletAddress[appId], appsStorage._apps[appId].name, true);\n    } else if (!isEligibleNow) {\n      $._veBetterPassport.setAppSecurity(appId, $._appSecurity[appId]);\n    }\n\n    bool appUnendorsed = !isBlacklisted && $._unendorsedAppsIndex[appId] > 0;\n    if (appUnendorsed) {\n      setEndorsementStatus(appId, true);\n    }\n\n    $._appGracePeriodStart[appId] = 0;\n  }\n\n  function _getScore(\n    X2EarnAppsStorageTypes.EndorsementStorage storage $,\n    bytes32 appId\n  ) private view returns (uint256) {\n    return uint256($._appEndorsementScoreCheckpoints[appId].latest());\n  }\n\n  function _setScore(X2EarnAppsStorageTypes.EndorsementStorage storage $, bytes32 appId, uint256 newScore) private {\n    $._appEndorsementScoreCheckpoints[appId].push(SafeCast.toUint48(block.number), SafeCast.toUint208(newScore));\n  }\n\n  function _updateStatusIfThresholdNotMetWithVote(\n    X2EarnAppsStorageTypes.EndorsementStorage storage $,\n    bytes32 appId,\n    bool isBlacklisted,\n    bool isEligibleNow,\n    uint48 clock\n  ) private returns (bool stillEligible) {\n    bool appUnendorsed = !isBlacklisted && $._unendorsedAppsIndex[appId] > 0;\n\n    if (!appUnendorsed) {\n      updateUnendorsedApps(appId, false);\n      emit AppEndorsementStatusUpdated(appId, false);\n    }\n\n    if ($._appGracePeriodStart[appId] == 0 && isEligibleNow) {\n      $._appGracePeriodStart[appId] = clock;\n      emit AppUnendorsedGracePeriodStarted(appId, clock, clock + $._gracePeriodDuration);\n      return true;\n    } else if ((clock > $._appGracePeriodStart[appId] + $._gracePeriodDuration) && isEligibleNow) {\n      $._appSecurity[appId] = $._veBetterPassport.appSecurity(appId);\n      $._veBetterPassport.setAppSecurity(appId, PassportTypes.APP_SECURITY.NONE);\n      return false;\n    }\n\n    return true;\n  }\n}\n"},"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol":{"content":"// SPDX-License-Identifier: MIT\n\n//                                      #######\n//                                 ################\n//                               ####################\n//                             ###########   #########\n//                            #########      #########\n//          #######          #########       #########\n//          #########       #########      ##########\n//           ##########     ########     ####################\n//            ##########   #########  #########################\n//              ################### ############################\n//               #################  ##########          ########\n//                 ##############      ###              ########\n//                  ############                       #########\n//                    ##########                     ##########\n//                     ########                    ###########\n//                       ###                    ############\n//                                          ##############\n//                                    #################\n//                                   ##############\n//                                   #########\n\npragma solidity 0.8.20;\n\nimport { Checkpoints } from \"@openzeppelin/contracts/utils/structs/Checkpoints.sol\";\nimport { PassportTypes } from \"../../ve-better-passport/libraries/PassportTypes.sol\";\nimport { INodeManagementV3 } from \"../../mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\";\nimport { IVeBetterPassport } from \"../../interfaces/IVeBetterPassport.sol\";\nimport { IXAllocationVotingGovernor } from \"../../interfaces/IXAllocationVotingGovernor.sol\";\nimport { IStargateNFT } from \"../../mocks/Stargate/interfaces/IStargateNFT.sol\";\nimport { X2EarnAppsDataTypes } from \"../../libraries/X2EarnAppsDataTypes.sol\";\nimport { IX2EarnCreator } from \"../../interfaces/IX2EarnCreator.sol\";\nimport { IX2EarnRewardsPool } from \"../../interfaces/IX2EarnRewardsPool.sol\";\n\n/**\n * @title X2EarnAppsStorageTypes\n * @notice This library defines the primary storage types used within the X2EarnApps contract.\n */\nlibrary X2EarnAppsStorageTypes {\n  bytes32 private constant VoteEligibilityStorageLocation =\n    0xb5b8d618af1ffb8d5bcc4bd23f445ba34ed08d7a16d1e1b5411cfbe7913e5900;\n  bytes32 private constant EndorsementStorageLocation =\n    0xc1a7bcdc0c77e8c77ade4541d1777901ab96ca598d164d89afa5c8dfbfc44300;\n  bytes32 private constant SettingsStorageLocation = 0x83b9a7e51f394efa93107c3888716138908bbbe611dfc86afa3639a826441100;\n  bytes32 private constant AppsStorageStorageLocation =\n    0xb6909058bd527140b8d55a44344c5e42f1f148f1b3b16df7641882df8dd72900;\n  bytes32 private constant AdministrationStorageLocation =\n    0x5830f0e95c01712d916c34d9e2fa42e9f749b325b67bce7382d70bb99c623500;\n\n  /// @custom:storage-location erc7201:b3tr.storage.X2EarnApps.VoteEligibility\n  struct VoteEligibilityStorage {\n    bytes32[] _eligibleApps; // Array containing an up to date list of apps that are eligible for voting\n    mapping(bytes32 appId => uint256 index) _eligibleAppIndex; // Mapping from app ID to index in the _eligibleApps array, so we can remove an app in O(1)\n    mapping(bytes32 appId => Checkpoints.Trace208) _isAppEligibleCheckpoints; // Checkpoints to track the eligibility changes of an app over time\n    mapping(bytes32 => bool) _blackList; // Mapping to store the blacklisted apps\n  }\n\n  /// @notice Represents an active endorsement from a node to an app\n  struct Endorsement {\n    bytes32 appId;\n    uint256 points;\n    uint256 endorsedAtRound; // Round in which the endorsement was created/updated (for cooldown tracking)\n  }\n\n  /// @notice Summary of a node's endorsement points allocation\n  struct NodePointsInfo {\n    uint256 totalPoints; // Total points the node has based on its level\n    uint256 usedPoints; // Points currently allocated to apps\n    uint256 availablePoints; // Points available for new endorsements\n    uint256 lockedPoints; // Points under cooldown (cannot be unendorsed yet)\n  }\n\n  /// @custom:storage-location erc7201:b3tr.storage.X2EarnApps.Endorsment\n  struct EndorsementStorage {\n    bytes32[] _unendorsedApps; // List of apps pending endorsement\n    mapping(bytes32 => uint256) _unendorsedAppsIndex; // Mapping from app ID to index in the _unendorsedApps array, so we can remove an app in O(1)\n    mapping(bytes32 => uint256[]) _appEndorsers_DEPRECATED; // DEPRECATED V8: Use _activeEndorsements instead\n    mapping(uint8 => uint256) _nodeEnodorsmentScore; // The endorsement score for each node level\n    mapping(bytes32 => uint48) _appGracePeriodStart; // The grace period elapsed by the app since endorsed\n    mapping(uint256 => bytes32) _nodeToEndorsedApp_DEPRECATED; // DEPRECATED V8: Use _activeEndorsements instead\n    uint48 _gracePeriodDuration; // The grace period threshold for no endorsement in BLOCKS\n    uint256 _endorsementScoreThreshold; // The endorsement score threshold for an app to be eligible for voting\n    mapping(bytes32 => uint256) _appScores_DEPRECATED; // DEPRECATED V8: Use _appEndorsementScoreCheckpoints instead\n    mapping(bytes32 => PassportTypes.APP_SECURITY) _appSecurity; // The security score of each app\n    INodeManagementV3 _nodeManagementContract; // The token auction contract\n    IVeBetterPassport _veBetterPassport; // The VeBetterPassport contract\n    mapping(uint256 => uint256) _endorsementRound_DEPRECATED; // DEPRECATED V8: Cooldown now per-app in Endorsement struct\n    uint256 _cooldownPeriod; // Cooldown duration in rounds for unendorsing\n    IXAllocationVotingGovernor _xAllocationVotingGovernor; // The XAllocationVotingGovernor contract\n    //------- Version 7 -------//\n    IStargateNFT _stargateNFT; // The Stargate NFT contract\n    //------- Version 8 - Flexible Endorsement -------//\n    // Notice: _activeEndorsements, _appEndorserNodes, _appEndorserNodesIndex need to be updated together, otherwise the mapping will be corrupted.\n    mapping(uint256 nodeId => Endorsement[]) _activeEndorsements; // All active endorsements by a node\n    mapping(uint256 nodeId => mapping(bytes32 appId => uint256 index)) _activeEndorsementsAppIndex; // Index lookup for O(1) access\n    mapping(bytes32 appId => uint256 score) _appEndorsementScore_DEPRECATED; // DEPRECATED V8: Use _appEndorsementScoreCheckpoints instead\n    mapping(bytes32 appId => uint256[]) _appEndorserNodes; // Reverse mapping: nodes endorsing each app\n    mapping(bytes32 appId => mapping(uint256 nodeId => uint256 index)) _appEndorserNodesIndex; // Index for O(1) removal\n    uint256 _maxPointsPerNodePerApp; // Max points a single node can assign to one app (default 49)\n    uint256 _maxPointsPerApp; // Max total points an app can receive (default 110)\n    bool _endorsementsPaused; // Pause endorsements during migration\n    bool _migrationCompleted; // One-time migration flag\n    mapping(bytes32 appId => Checkpoints.Trace208) _appEndorsementScoreCheckpoints; // Checkpointed endorsement scores for historical lookups\n  }\n\n  /// @custom:storage-location erc7201:b3tr.storage.X2EarnApps.Settings\n  struct ContractSettingsStorage {\n    string _baseURI;\n  }\n\n  /// @custom:storage-location erc7201:b3tr.storage.X2EarnApps.AppsStorage\n  struct AppsStorageStorage {\n    // Mapping from app ID to app\n    mapping(bytes32 appId => X2EarnAppsDataTypes.App) _apps;\n    // List of app IDs to enable retrieval of all _apps\n    bytes32[] _appIds;\n  }\n\n  /// @custom:storage-location erc7201:b3tr.storage.X2EarnApps.Administration\n  struct AdministrationStorage {\n    mapping(bytes32 appId => address) _admin;\n    mapping(bytes32 appId => address[]) _moderators;\n    mapping(bytes32 appId => address[]) _rewardDistributors; // addresses that can distribute rewards from X2EarnRewardsPool\n    mapping(bytes32 appId => address) _teamWalletAddress;\n    mapping(bytes32 appId => uint256) _teamAllocationPercentage; // by default this is 0 and all funds are sent to the X2EarnRewardsPool\n    mapping(bytes32 appId => string) _metadataURI;\n    mapping(bytes32 appId => address[]) _creators; // addresses that have a creators NFT and can manage interactions with Node holders\n    mapping(address creator => uint256 apps) _creatorApps; // number of apps created by a creator\n    IX2EarnCreator _x2EarnCreatorContract;\n    IX2EarnRewardsPool _x2EarnRewardsPoolContract; // x2earn rewards pool contract to enable rewards pool for new apps\n  }\n\n  function _getVoteEligibilityStorage()\n    internal\n    pure\n    returns (X2EarnAppsStorageTypes.VoteEligibilityStorage storage $)\n  {\n    assembly {\n      $.slot := VoteEligibilityStorageLocation\n    }\n  }\n\n  function _getEndorsementStorage() internal pure returns (X2EarnAppsStorageTypes.EndorsementStorage storage $) {\n    assembly {\n      $.slot := EndorsementStorageLocation\n    }\n  }\n\n  function _getContractSettingsStorage()\n    internal\n    pure\n    returns (X2EarnAppsStorageTypes.ContractSettingsStorage storage $)\n  {\n    assembly {\n      $.slot := SettingsStorageLocation\n    }\n  }\n\n  function _getAppsStorageStorage() internal pure returns (X2EarnAppsStorageTypes.AppsStorageStorage storage $) {\n    assembly {\n      $.slot := AppsStorageStorageLocation\n    }\n  }\n\n  function _getAdministrationStorage() internal pure returns (X2EarnAppsStorageTypes.AdministrationStorage storage $) {\n    assembly {\n      $.slot := AdministrationStorageLocation\n    }\n  }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":1},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","exportedSymbols":{"AccessControlUpgradeable":[362],"ContextUpgradeable":[844],"ERC165Upgradeable":[1013],"IAccessControl":[1096],"Initializable":[616]},"id":363,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:0"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":1097,"src":"134:81:0","symbolAliases":[{"foreign":{"id":2,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"142:14:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":845,"src":"216:67:0","symbolAliases":[{"foreign":{"id":4,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":844,"src":"224:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"../utils/introspection/ERC165Upgradeable.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":1014,"src":"284:79:0","symbolAliases":[{"foreign":{"id":6,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"292:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":9,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":617,"src":"364:63:0","symbolAliases":[{"foreign":{"id":8,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"372:13:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":11,"name":"Initializable","nameLocations":["2136:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"2136:13:0"},"id":12,"nodeType":"InheritanceSpecifier","src":"2136:13:0"},{"baseName":{"id":13,"name":"ContextUpgradeable","nameLocations":["2151:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":844,"src":"2151:18:0"},"id":14,"nodeType":"InheritanceSpecifier","src":"2151:18:0"},{"baseName":{"id":15,"name":"IAccessControl","nameLocations":["2171:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":1096,"src":"2171:14:0"},"id":16,"nodeType":"InheritanceSpecifier","src":"2171:14:0"},{"baseName":{"id":17,"name":"ERC165Upgradeable","nameLocations":["2187:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":1013,"src":"2187:17:0"},"id":18,"nodeType":"InheritanceSpecifier","src":"2187:17:0"}],"canonicalName":"AccessControlUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10,"nodeType":"StructuredDocumentation","src":"429:1660:0","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n     require(hasRole(MY_ROLE, msg.sender));\n     ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role."},"fullyImplemented":true,"id":362,"linearizedBaseContracts":[362,1013,2040,1096,844,616],"name":"AccessControlUpgradeable","nameLocation":"2108:24:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControlUpgradeable.RoleData","id":25,"members":[{"constant":false,"id":22,"mutability":"mutable","name":"hasRole","nameLocation":"2270:7:0","nodeType":"VariableDeclaration","scope":25,"src":"2237:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":21,"keyName":"account","keyNameLocation":"2253:7:0","keyType":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"2245:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2237:32:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":20,"name":"bool","nodeType":"ElementaryTypeName","src":"2264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":24,"mutability":"mutable","name":"adminRole","nameLocation":"2295:9:0","nodeType":"VariableDeclaration","scope":25,"src":"2287:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2218:8:0","nodeType":"StructDefinition","scope":362,"src":"2211:100:0","visibility":"public"},{"constant":true,"functionSelector":"a217fddf","id":28,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2341:18:0","nodeType":"VariableDeclaration","scope":362,"src":"2317:49:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":27,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2362:4:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"canonicalName":"AccessControlUpgradeable.AccessControlStorage","documentation":{"id":29,"nodeType":"StructuredDocumentation","src":"2374:71:0","text":"@custom:storage-location erc7201:openzeppelin.storage.AccessControl"},"id":35,"members":[{"constant":false,"id":34,"mutability":"mutable","name":"_roles","nameLocation":"2522:6:0","nodeType":"VariableDeclaration","scope":35,"src":"2488:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"typeName":{"id":33,"keyName":"role","keyNameLocation":"2504:4:0","keyType":{"id":30,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2496:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2488:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":32,"nodeType":"UserDefinedTypeName","pathNode":{"id":31,"name":"RoleData","nameLocations":["2512:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":25,"src":"2512:8:0"},"referencedDeclaration":25,"src":"2512:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage_ptr","typeString":"struct AccessControlUpgradeable.RoleData"}}},"visibility":"internal"}],"name":"AccessControlStorage","nameLocation":"2457:20:0","nodeType":"StructDefinition","scope":362,"src":"2450:85:0","visibility":"public"},{"constant":true,"id":38,"mutability":"constant","name":"AccessControlStorageLocation","nameLocation":"2683:28:0","nodeType":"VariableDeclaration","scope":362,"src":"2658:122:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":36,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2658:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030","id":37,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:66:0","typeDescriptions":{"typeIdentifier":"t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1","typeString":"int_const 1295...(68 digits omitted)...1824"},"value":"0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800"},"visibility":"private"},{"body":{"id":45,"nodeType":"Block","src":"2877:87:0","statements":[{"AST":{"nodeType":"YulBlock","src":"2896:62:0","statements":[{"nodeType":"YulAssignment","src":"2910:38:0","value":{"name":"AccessControlStorageLocation","nodeType":"YulIdentifier","src":"2920:28:0"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"2910:6:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":42,"isOffset":false,"isSlot":true,"src":"2910:6:0","suffix":"slot","valueSize":1},{"declaration":38,"isOffset":false,"isSlot":false,"src":"2920:28:0","valueSize":1}],"id":44,"nodeType":"InlineAssembly","src":"2887:71:0"}]},"id":46,"implemented":true,"kind":"function","modifiers":[],"name":"_getAccessControlStorage","nameLocation":"2796:24:0","nodeType":"FunctionDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"2820:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42,"mutability":"mutable","name":"$","nameLocation":"2874:1:0","nodeType":"VariableDeclaration","scope":46,"src":"2845:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":41,"nodeType":"UserDefinedTypeName","pathNode":{"id":40,"name":"AccessControlStorage","nameLocations":["2845:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"2845:20:0"},"referencedDeclaration":35,"src":"2845:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"src":"2844:32:0"},"scope":362,"src":"2787:177:0","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":56,"nodeType":"Block","src":"3181:44:0","statements":[{"expression":{"arguments":[{"id":52,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"3202:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":51,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[129,150],"referencedDeclaration":129,"src":"3191:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":53,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3191:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54,"nodeType":"ExpressionStatement","src":"3191:16:0"},{"id":55,"nodeType":"PlaceholderStatement","src":"3217:1:0"}]},"documentation":{"id":47,"nodeType":"StructuredDocumentation","src":"2970:174:0","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"id":57,"name":"onlyRole","nameLocation":"3158:8:0","nodeType":"ModifierDefinition","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"role","nameLocation":"3175:4:0","nodeType":"VariableDeclaration","scope":57,"src":"3167:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":48,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3167:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3166:14:0"},"src":"3149:76:0","virtual":false,"visibility":"internal"},{"body":{"id":62,"nodeType":"Block","src":"3289:7:0","statements":[]},"id":63,"implemented":true,"kind":"function","modifiers":[{"id":60,"kind":"modifierInvocation","modifierName":{"id":59,"name":"onlyInitializing","nameLocations":["3272:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3272:16:0"},"nodeType":"ModifierInvocation","src":"3272:16:0"}],"name":"__AccessControl_init","nameLocation":"3240:20:0","nodeType":"FunctionDefinition","parameters":{"id":58,"nodeType":"ParameterList","parameters":[],"src":"3260:2:0"},"returnParameters":{"id":61,"nodeType":"ParameterList","parameters":[],"src":"3289:0:0"},"scope":362,"src":"3231:65:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":68,"nodeType":"Block","src":"3370:7:0","statements":[]},"id":69,"implemented":true,"kind":"function","modifiers":[{"id":66,"kind":"modifierInvocation","modifierName":{"id":65,"name":"onlyInitializing","nameLocations":["3353:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3353:16:0"},"nodeType":"ModifierInvocation","src":"3353:16:0"}],"name":"__AccessControl_init_unchained","nameLocation":"3311:30:0","nodeType":"FunctionDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[],"src":"3341:2:0"},"returnParameters":{"id":67,"nodeType":"ParameterList","parameters":[],"src":"3370:0:0"},"scope":362,"src":"3302:75:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1012],"body":{"id":90,"nodeType":"Block","src":"3534:111:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":83,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3551:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":80,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"3571:14:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1096_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1096_$","typeString":"type(contract IAccessControl)"}],"id":79,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3566:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3566:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$1096","typeString":"type(contract IAccessControl)"}},"id":82,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3587:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"3566:32:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3551:47:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":86,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3626:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":84,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3602:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlUpgradeable_$362_$","typeString":"type(contract super AccessControlUpgradeable)"}},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3608:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1012,"src":"3602:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":87,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3602:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3551:87:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":77,"id":89,"nodeType":"Return","src":"3544:94:0"}]},"documentation":{"id":70,"nodeType":"StructuredDocumentation","src":"3382:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":91,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3452:17:0","nodeType":"FunctionDefinition","overrides":{"id":74,"nodeType":"OverrideSpecifier","overrides":[],"src":"3510:8:0"},"parameters":{"id":73,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72,"mutability":"mutable","name":"interfaceId","nameLocation":"3477:11:0","nodeType":"VariableDeclaration","scope":91,"src":"3470:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":71,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3470:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3469:20:0"},"returnParameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":91,"src":"3528:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75,"name":"bool","nodeType":"ElementaryTypeName","src":"3528:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3527:6:0"},"scope":362,"src":"3443:202:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1063],"body":{"id":115,"nodeType":"Block","src":"3815:124:0","statements":[{"assignments":[103],"declarations":[{"constant":false,"id":103,"mutability":"mutable","name":"$","nameLocation":"3854:1:0","nodeType":"VariableDeclaration","scope":115,"src":"3825:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":102,"nodeType":"UserDefinedTypeName","pathNode":{"id":101,"name":"AccessControlStorage","nameLocations":["3825:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"3825:20:0"},"referencedDeclaration":35,"src":"3825:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":106,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"3858:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3858:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3825:59:0"},{"expression":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":107,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"3901:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3903:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"3901:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":110,"indexExpression":{"id":109,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"3910:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3916:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":22,"src":"3901:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":113,"indexExpression":{"id":112,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"3924:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":100,"id":114,"nodeType":"Return","src":"3894:38:0"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"3651:76:0","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":116,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"3741:7:0","nodeType":"FunctionDefinition","parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"role","nameLocation":"3757:4:0","nodeType":"VariableDeclaration","scope":116,"src":"3749:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":93,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3749:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":96,"mutability":"mutable","name":"account","nameLocation":"3771:7:0","nodeType":"VariableDeclaration","scope":116,"src":"3763:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":95,"name":"address","nodeType":"ElementaryTypeName","src":"3763:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3748:31:0"},"returnParameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":99,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":116,"src":"3809:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":98,"name":"bool","nodeType":"ElementaryTypeName","src":"3809:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3808:6:0"},"scope":362,"src":"3732:207:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":128,"nodeType":"Block","src":"4204:47:0","statements":[{"expression":{"arguments":[{"id":123,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119,"src":"4225:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":124,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"4231:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4231:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":122,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[129,150],"referencedDeclaration":150,"src":"4214:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":127,"nodeType":"ExpressionStatement","src":"4214:30:0"}]},"documentation":{"id":117,"nodeType":"StructuredDocumentation","src":"3945:198:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"id":129,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4157:10:0","nodeType":"FunctionDefinition","parameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119,"mutability":"mutable","name":"role","nameLocation":"4176:4:0","nodeType":"VariableDeclaration","scope":129,"src":"4168:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":118,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4168:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4167:14:0"},"returnParameters":{"id":121,"nodeType":"ParameterList","parameters":[],"src":"4204:0:0"},"scope":362,"src":"4148:103:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":149,"nodeType":"Block","src":"4454:124:0","statements":[{"condition":{"id":141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4468:23:0","subExpression":{"arguments":[{"id":138,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"4477:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":139,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4483:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":137,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"4469:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4469:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":148,"nodeType":"IfStatement","src":"4464:108:0","trueBody":{"id":147,"nodeType":"Block","src":"4493:79:0","statements":[{"errorCall":{"arguments":[{"id":143,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4547:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":144,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"4556:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":142,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1023,"src":"4514:32:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32) pure"}},"id":145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4514:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":146,"nodeType":"RevertStatement","src":"4507:54:0"}]}}]},"documentation":{"id":130,"nodeType":"StructuredDocumentation","src":"4257:119:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"id":150,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4390:10:0","nodeType":"FunctionDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"mutability":"mutable","name":"role","nameLocation":"4409:4:0","nodeType":"VariableDeclaration","scope":150,"src":"4401:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4401:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":134,"mutability":"mutable","name":"account","nameLocation":"4423:7:0","nodeType":"VariableDeclaration","scope":150,"src":"4415:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":133,"name":"address","nodeType":"ElementaryTypeName","src":"4415:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4400:31:0"},"returnParameters":{"id":136,"nodeType":"ParameterList","parameters":[],"src":"4454:0:0"},"scope":362,"src":"4381:197:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1071],"body":{"id":170,"nodeType":"Block","src":"4833:117:0","statements":[{"assignments":[160],"declarations":[{"constant":false,"id":160,"mutability":"mutable","name":"$","nameLocation":"4872:1:0","nodeType":"VariableDeclaration","scope":170,"src":"4843:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":159,"nodeType":"UserDefinedTypeName","pathNode":{"id":158,"name":"AccessControlStorage","nameLocations":["4843:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"4843:20:0"},"referencedDeclaration":35,"src":"4843:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":163,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":161,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"4876:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4876:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4843:59:0"},{"expression":{"expression":{"baseExpression":{"expression":{"id":164,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"4919:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4921:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"4919:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":167,"indexExpression":{"id":166,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":153,"src":"4928:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4919:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4934:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":24,"src":"4919:24:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":157,"id":169,"nodeType":"Return","src":"4912:31:0"}]},"documentation":{"id":151,"nodeType":"StructuredDocumentation","src":"4584:170:0","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":171,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"4768:12:0","nodeType":"FunctionDefinition","parameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"role","nameLocation":"4789:4:0","nodeType":"VariableDeclaration","scope":171,"src":"4781:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":152,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4781:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4780:14:0"},"returnParameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":171,"src":"4824:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":155,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4824:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4823:9:0"},"scope":362,"src":"4759:191:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1079],"body":{"id":189,"nodeType":"Block","src":"5340:42:0","statements":[{"expression":{"arguments":[{"id":185,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"5361:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":186,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"5367:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":184,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"5350:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5350:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":188,"nodeType":"ExpressionStatement","src":"5350:25:0"}]},"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"4956:285:0","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":190,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":180,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"5333:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":179,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5320:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":182,"kind":"modifierInvocation","modifierName":{"id":178,"name":"onlyRole","nameLocations":["5311:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"5311:8:0"},"nodeType":"ModifierInvocation","src":"5311:28:0"}],"name":"grantRole","nameLocation":"5255:9:0","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"mutability":"mutable","name":"role","nameLocation":"5273:4:0","nodeType":"VariableDeclaration","scope":190,"src":"5265:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5265:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"account","nameLocation":"5287:7:0","nodeType":"VariableDeclaration","scope":190,"src":"5279:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":175,"name":"address","nodeType":"ElementaryTypeName","src":"5279:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5264:31:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[],"src":"5340:0:0"},"scope":362,"src":"5246:136:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1087],"body":{"id":208,"nodeType":"Block","src":"5757:43:0","statements":[{"expression":{"arguments":[{"id":204,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"5779:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":205,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"5785:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":203,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"5767:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5767:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":207,"nodeType":"ExpressionStatement","src":"5767:26:0"}]},"documentation":{"id":191,"nodeType":"StructuredDocumentation","src":"5388:269:0","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":209,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":199,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"5750:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":198,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5737:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5737:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":201,"kind":"modifierInvocation","modifierName":{"id":197,"name":"onlyRole","nameLocations":["5728:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"5728:8:0"},"nodeType":"ModifierInvocation","src":"5728:28:0"}],"name":"revokeRole","nameLocation":"5671:10:0","nodeType":"FunctionDefinition","parameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":193,"mutability":"mutable","name":"role","nameLocation":"5690:4:0","nodeType":"VariableDeclaration","scope":209,"src":"5682:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":192,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5682:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":195,"mutability":"mutable","name":"account","nameLocation":"5704:7:0","nodeType":"VariableDeclaration","scope":209,"src":"5696:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":194,"name":"address","nodeType":"ElementaryTypeName","src":"5696:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5681:31:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"5757:0:0"},"scope":362,"src":"5662:138:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1095],"body":{"id":231,"nodeType":"Block","src":"6427:166:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":217,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"6441:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":218,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"6463:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6463:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6441:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":225,"nodeType":"IfStatement","src":"6437:102:0","trueBody":{"id":224,"nodeType":"Block","src":"6477:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":221,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"6498:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":223,"nodeType":"RevertStatement","src":"6491:37:0"}]}},{"expression":{"arguments":[{"id":227,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"6561:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":228,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"6567:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":226,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"6549:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6549:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":230,"nodeType":"ExpressionStatement","src":"6549:37:0"}]},"documentation":{"id":210,"nodeType":"StructuredDocumentation","src":"5806:537:0","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":232,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"6357:12:0","nodeType":"FunctionDefinition","parameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":212,"mutability":"mutable","name":"role","nameLocation":"6378:4:0","nodeType":"VariableDeclaration","scope":232,"src":"6370:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":211,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6370:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":214,"mutability":"mutable","name":"callerConfirmation","nameLocation":"6392:18:0","nodeType":"VariableDeclaration","scope":232,"src":"6384:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":213,"name":"address","nodeType":"ElementaryTypeName","src":"6384:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6369:42:0"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[],"src":"6427:0:0"},"scope":362,"src":"6348:245:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":267,"nodeType":"Block","src":"6791:245:0","statements":[{"assignments":[242],"declarations":[{"constant":false,"id":242,"mutability":"mutable","name":"$","nameLocation":"6830:1:0","nodeType":"VariableDeclaration","scope":267,"src":"6801:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":241,"nodeType":"UserDefinedTypeName","pathNode":{"id":240,"name":"AccessControlStorage","nameLocations":["6801:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"6801:20:0"},"referencedDeclaration":35,"src":"6801:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":245,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":243,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"6834:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6834:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6801:59:0"},{"assignments":[247],"declarations":[{"constant":false,"id":247,"mutability":"mutable","name":"previousAdminRole","nameLocation":"6878:17:0","nodeType":"VariableDeclaration","scope":267,"src":"6870:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6870:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":251,"initialValue":{"arguments":[{"id":249,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"6911:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":248,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"6898:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6898:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6870:46:0"},{"expression":{"id":259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":252,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":242,"src":"6926:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6928:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"6926:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":256,"indexExpression":{"id":254,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"6935:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6926:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6941:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":24,"src":"6926:24:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":258,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"6953:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6926:36:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":260,"nodeType":"ExpressionStatement","src":"6926:36:0"},{"eventCall":{"arguments":[{"id":262,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"6994:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":263,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"7000:17:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":264,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"7019:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":261,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1035,"src":"6977:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6977:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":266,"nodeType":"EmitStatement","src":"6972:57:0"}]},"documentation":{"id":233,"nodeType":"StructuredDocumentation","src":"6599:114:0","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":268,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"6727:13:0","nodeType":"FunctionDefinition","parameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":235,"mutability":"mutable","name":"role","nameLocation":"6749:4:0","nodeType":"VariableDeclaration","scope":268,"src":"6741:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":234,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6741:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":237,"mutability":"mutable","name":"adminRole","nameLocation":"6763:9:0","nodeType":"VariableDeclaration","scope":268,"src":"6755:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6755:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6740:33:0"},"returnParameters":{"id":239,"nodeType":"ParameterList","parameters":[],"src":"6791:0:0"},"scope":362,"src":"6718:318:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":314,"nodeType":"Block","src":"7353:304:0","statements":[{"assignments":[280],"declarations":[{"constant":false,"id":280,"mutability":"mutable","name":"$","nameLocation":"7392:1:0","nodeType":"VariableDeclaration","scope":314,"src":"7363:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":279,"nodeType":"UserDefinedTypeName","pathNode":{"id":278,"name":"AccessControlStorage","nameLocations":["7363:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"7363:20:0"},"referencedDeclaration":35,"src":"7363:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":283,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":281,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"7396:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7396:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7363:59:0"},{"condition":{"id":288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7436:23:0","subExpression":{"arguments":[{"id":285,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7445:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":286,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7451:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":284,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"7437:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7437:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":312,"nodeType":"Block","src":"7614:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7635:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":277,"id":311,"nodeType":"Return","src":"7628:12:0"}]},"id":313,"nodeType":"IfStatement","src":"7432:219:0","trueBody":{"id":309,"nodeType":"Block","src":"7461:147:0","statements":[{"expression":{"id":298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":289,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":280,"src":"7475:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7477:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"7475:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":293,"indexExpression":{"id":291,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7484:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7475:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7490:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":22,"src":"7475:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":296,"indexExpression":{"id":295,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7498:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7475:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7509:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7475:38:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":299,"nodeType":"ExpressionStatement","src":"7475:38:0"},{"eventCall":{"arguments":[{"id":301,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7544:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":302,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7550:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":303,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"7559:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7559:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":300,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"7532:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7532:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":306,"nodeType":"EmitStatement","src":"7527:45:0"},{"expression":{"hexValue":"74727565","id":307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7593:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":277,"id":308,"nodeType":"Return","src":"7586:11:0"}]}}]},"documentation":{"id":269,"nodeType":"StructuredDocumentation","src":"7042:223:0","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":315,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"7279:10:0","nodeType":"FunctionDefinition","parameters":{"id":274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"role","nameLocation":"7298:4:0","nodeType":"VariableDeclaration","scope":315,"src":"7290:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7290:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":273,"mutability":"mutable","name":"account","nameLocation":"7312:7:0","nodeType":"VariableDeclaration","scope":315,"src":"7304:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":272,"name":"address","nodeType":"ElementaryTypeName","src":"7304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7289:31:0"},"returnParameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":315,"src":"7347:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":275,"name":"bool","nodeType":"ElementaryTypeName","src":"7347:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7346:6:0"},"scope":362,"src":"7270:387:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":360,"nodeType":"Block","src":"7976:304:0","statements":[{"assignments":[327],"declarations":[{"constant":false,"id":327,"mutability":"mutable","name":"$","nameLocation":"8015:1:0","nodeType":"VariableDeclaration","scope":360,"src":"7986:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":326,"nodeType":"UserDefinedTypeName","pathNode":{"id":325,"name":"AccessControlStorage","nameLocations":["7986:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"7986:20:0"},"referencedDeclaration":35,"src":"7986:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":330,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":328,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"8019:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8019:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7986:59:0"},{"condition":{"arguments":[{"id":332,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8067:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":333,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8073:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":331,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"8059:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8059:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":358,"nodeType":"Block","src":"8237:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8258:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":324,"id":357,"nodeType":"Return","src":"8251:12:0"}]},"id":359,"nodeType":"IfStatement","src":"8055:219:0","trueBody":{"id":355,"nodeType":"Block","src":"8083:148:0","statements":[{"expression":{"id":344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":335,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"8097:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8099:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"8097:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":339,"indexExpression":{"id":337,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8106:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8097:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8112:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":22,"src":"8097:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":342,"indexExpression":{"id":341,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8120:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8097:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8131:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"8097:39:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"ExpressionStatement","src":"8097:39:0"},{"eventCall":{"arguments":[{"id":347,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8167:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":348,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8173:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":349,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"8182:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8182:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":346,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"8155:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8155:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":352,"nodeType":"EmitStatement","src":"8150:45:0"},{"expression":{"hexValue":"74727565","id":353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8216:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":324,"id":354,"nodeType":"Return","src":"8209:11:0"}]}}]},"documentation":{"id":316,"nodeType":"StructuredDocumentation","src":"7663:224:0","text":" @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":361,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"7901:11:0","nodeType":"FunctionDefinition","parameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"role","nameLocation":"7921:4:0","nodeType":"VariableDeclaration","scope":361,"src":"7913:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7913:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"account","nameLocation":"7935:7:0","nodeType":"VariableDeclaration","scope":361,"src":"7927:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":319,"name":"address","nodeType":"ElementaryTypeName","src":"7927:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7912:31:0"},"returnParameters":{"id":324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":361,"src":"7970:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":322,"name":"bool","nodeType":"ElementaryTypeName","src":"7970:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7969:6:0"},"scope":362,"src":"7892:388:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":363,"src":"2090:6192:0","usedErrors":[379,382,1023,1026],"usedEvents":[387,1035,1044,1053]}],"src":"108:8175:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[616]},"id":617,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":364,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:1"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":365,"nodeType":"StructuredDocumentation","src":"139:2209:1","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n     function initialize() initializer public {\n         __ERC20_init(\"MyToken\", \"MTK\");\n     }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n     function initializeV2() reinitializer(2) public {\n         __ERC20Permit_init(\"MyToken\");\n     }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n     _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":616,"linearizedBaseContracts":[616],"name":"Initializable","nameLocation":"2367:13:1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":366,"nodeType":"StructuredDocumentation","src":"2387:293:1","text":" @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable"},"id":373,"members":[{"constant":false,"id":369,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:1","nodeType":"VariableDeclaration","scope":373,"src":"2813:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":368,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:1","nodeType":"VariableDeclaration","scope":373,"src":"2950:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":371,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:1","nodeType":"StructDefinition","scope":616,"src":"2685:290:1","visibility":"public"},{"constant":true,"id":376,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:1","nodeType":"VariableDeclaration","scope":616,"src":"3098:115:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:1","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":377,"nodeType":"StructuredDocumentation","src":"3220:60:1","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":379,"name":"InvalidInitialization","nameLocation":"3291:21:1","nodeType":"ErrorDefinition","parameters":{"id":378,"nodeType":"ParameterList","parameters":[],"src":"3312:2:1"},"src":"3285:30:1"},{"documentation":{"id":380,"nodeType":"StructuredDocumentation","src":"3321:57:1","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":382,"name":"NotInitializing","nameLocation":"3389:15:1","nodeType":"ErrorDefinition","parameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"3404:2:1"},"src":"3383:24:1"},{"anonymous":false,"documentation":{"id":383,"nodeType":"StructuredDocumentation","src":"3413:90:1","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":387,"name":"Initialized","nameLocation":"3514:11:1","nodeType":"EventDefinition","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:1","nodeType":"VariableDeclaration","scope":387,"src":"3526:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":384,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:1"},"src":"3508:34:1"},{"body":{"id":469,"nodeType":"Block","src":"4092:1081:1","statements":[{"assignments":[392],"declarations":[{"constant":false,"id":392,"mutability":"mutable","name":"$","nameLocation":"4187:1:1","nodeType":"VariableDeclaration","scope":469,"src":"4158:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":391,"nodeType":"UserDefinedTypeName","pathNode":{"id":390,"name":"InitializableStorage","nameLocations":["4158:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"4158:20:1"},"referencedDeclaration":373,"src":"4158:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":395,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":393,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"4191:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:1"},{"assignments":[397],"declarations":[{"constant":false,"id":397,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:1","nodeType":"VariableDeclaration","scope":469,"src":"4279:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":396,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":401,"initialValue":{"id":400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:1","subExpression":{"expression":{"id":398,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"4302:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"4302:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:1"},{"assignments":[403],"declarations":[{"constant":false,"id":403,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:1","nodeType":"VariableDeclaration","scope":469,"src":"4327:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":402,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":406,"initialValue":{"expression":{"id":404,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"4348:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"4348:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:1"},{"assignments":[408],"declarations":[{"constant":false,"id":408,"mutability":"mutable","name":"initialSetup","nameLocation":"4711:12:1","nodeType":"VariableDeclaration","scope":469,"src":"4706:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":407,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":414,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":409,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"4726:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4741:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4726:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":412,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"4746:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4726:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4706:54:1"},{"assignments":[416],"declarations":[{"constant":false,"id":416,"mutability":"mutable","name":"construction","nameLocation":"4775:12:1","nodeType":"VariableDeclaration","scope":469,"src":"4770:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":415,"name":"bool","nodeType":"ElementaryTypeName","src":"4770:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":429,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":417,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"4790:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4805:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4790:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":422,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4818:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$616","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$616","typeString":"contract Initializable"}],"id":421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4810:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":420,"name":"address","nodeType":"ElementaryTypeName","src":"4810:7:1","typeDescriptions":{}}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4810:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4824:4:1","memberName":"code","nodeType":"MemberAccess","src":"4810:18:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4829:6:1","memberName":"length","nodeType":"MemberAccess","src":"4810:25:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4810:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4790:50:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4770:70:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4855:13:1","subExpression":{"id":430,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"4856:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4872:13:1","subExpression":{"id":432,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"4873:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4855:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":439,"nodeType":"IfStatement","src":"4851:91:1","trueBody":{"id":438,"nodeType":"Block","src":"4887:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":435,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"4908:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4908:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":437,"nodeType":"RevertStatement","src":"4901:30:1"}]}},{"expression":{"id":444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":440,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"4951:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4953:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"4951:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4968:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4951:18:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":445,"nodeType":"ExpressionStatement","src":"4951:18:1"},{"condition":{"id":446,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"4983:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":454,"nodeType":"IfStatement","src":"4979:67:1","trueBody":{"id":453,"nodeType":"Block","src":"4999:47:1","statements":[{"expression":{"id":451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":447,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"5013:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5015:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"5013:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5031:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5013:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":452,"nodeType":"ExpressionStatement","src":"5013:22:1"}]}},{"id":455,"nodeType":"PlaceholderStatement","src":"5055:1:1"},{"condition":{"id":456,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"5070:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":468,"nodeType":"IfStatement","src":"5066:101:1","trueBody":{"id":467,"nodeType":"Block","src":"5086:81:1","statements":[{"expression":{"id":461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":457,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"5100:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5102:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"5100:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5118:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5100:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":462,"nodeType":"ExpressionStatement","src":"5100:23:1"},{"eventCall":{"arguments":[{"hexValue":"31","id":464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5154:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":463,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"5142:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5142:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":466,"nodeType":"EmitStatement","src":"5137:19:1"}]}}]},"documentation":{"id":388,"nodeType":"StructuredDocumentation","src":"3548:516:1","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event."},"id":470,"name":"initializer","nameLocation":"4078:11:1","nodeType":"ModifierDefinition","parameters":{"id":389,"nodeType":"ParameterList","parameters":[],"src":"4089:2:1"},"src":"4069:1104:1","virtual":false,"visibility":"internal"},{"body":{"id":516,"nodeType":"Block","src":"6291:392:1","statements":[{"assignments":[477],"declarations":[{"constant":false,"id":477,"mutability":"mutable","name":"$","nameLocation":"6386:1:1","nodeType":"VariableDeclaration","scope":516,"src":"6357:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":476,"nodeType":"UserDefinedTypeName","pathNode":{"id":475,"name":"InitializableStorage","nameLocations":["6357:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"6357:20:1"},"referencedDeclaration":373,"src":"6357:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":480,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":478,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"6390:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6357:59:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":481,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6431:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6433:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"6431:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":483,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6450:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6452:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"6450:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":485,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"6468:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6450:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6431:44:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":492,"nodeType":"IfStatement","src":"6427:105:1","trueBody":{"id":491,"nodeType":"Block","src":"6477:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":488,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"6498:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":490,"nodeType":"RevertStatement","src":"6491:30:1"}]}},{"expression":{"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":493,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6541:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6543:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"6541:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":496,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"6558:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6541:24:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":498,"nodeType":"ExpressionStatement","src":"6541:24:1"},{"expression":{"id":503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":499,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6575:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6577:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"6575:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6593:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6575:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":504,"nodeType":"ExpressionStatement","src":"6575:22:1"},{"id":505,"nodeType":"PlaceholderStatement","src":"6607:1:1"},{"expression":{"id":510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":506,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6618:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":508,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6620:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"6618:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6636:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6618:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":511,"nodeType":"ExpressionStatement","src":"6618:23:1"},{"eventCall":{"arguments":[{"id":513,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"6668:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":512,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"6656:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6656:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":515,"nodeType":"EmitStatement","src":"6651:25:1"}]},"documentation":{"id":471,"nodeType":"StructuredDocumentation","src":"5179:1068:1","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":517,"name":"reinitializer","nameLocation":"6261:13:1","nodeType":"ModifierDefinition","parameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"version","nameLocation":"6282:7:1","nodeType":"VariableDeclaration","scope":517,"src":"6275:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":472,"name":"uint64","nodeType":"ElementaryTypeName","src":"6275:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6274:16:1"},"src":"6252:431:1","virtual":false,"visibility":"internal"},{"body":{"id":524,"nodeType":"Block","src":"6921:48:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":520,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"6931:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6931:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":522,"nodeType":"ExpressionStatement","src":"6931:20:1"},{"id":523,"nodeType":"PlaceholderStatement","src":"6961:1:1"}]},"documentation":{"id":518,"nodeType":"StructuredDocumentation","src":"6689:199:1","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":525,"name":"onlyInitializing","nameLocation":"6902:16:1","nodeType":"ModifierDefinition","parameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"6918:2:1"},"src":"6893:76:1","virtual":false,"visibility":"internal"},{"body":{"id":537,"nodeType":"Block","src":"7136:89:1","statements":[{"condition":{"id":531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7150:18:1","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":529,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"7151:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7151:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":536,"nodeType":"IfStatement","src":"7146:73:1","trueBody":{"id":535,"nodeType":"Block","src":"7170:49:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":532,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"7191:15:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7191:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":534,"nodeType":"RevertStatement","src":"7184:24:1"}]}}]},"documentation":{"id":526,"nodeType":"StructuredDocumentation","src":"6975:104:1","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":538,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7093:18:1","nodeType":"FunctionDefinition","parameters":{"id":527,"nodeType":"ParameterList","parameters":[],"src":"7111:2:1"},"returnParameters":{"id":528,"nodeType":"ParameterList","parameters":[],"src":"7136:0:1"},"scope":616,"src":"7084:141:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":583,"nodeType":"Block","src":"7760:373:1","statements":[{"assignments":[544],"declarations":[{"constant":false,"id":544,"mutability":"mutable","name":"$","nameLocation":"7855:1:1","nodeType":"VariableDeclaration","scope":583,"src":"7826:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":543,"nodeType":"UserDefinedTypeName","pathNode":{"id":542,"name":"InitializableStorage","nameLocations":["7826:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"7826:20:1"},"referencedDeclaration":373,"src":"7826:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":547,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":545,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"7859:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7859:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7826:59:1"},{"condition":{"expression":{"id":548,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"7900:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7902:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"7900:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":554,"nodeType":"IfStatement","src":"7896:76:1","trueBody":{"id":553,"nodeType":"Block","src":"7917:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":550,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"7938:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7938:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":552,"nodeType":"RevertStatement","src":"7931:30:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":555,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"7985:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7987:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"7985:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8008:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":558,"name":"uint64","nodeType":"ElementaryTypeName","src":"8008:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":557,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8003:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8003:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8016:3:1","memberName":"max","nodeType":"MemberAccess","src":"8003:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7985:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":582,"nodeType":"IfStatement","src":"7981:146:1","trueBody":{"id":581,"nodeType":"Block","src":"8021:106:1","statements":[{"expression":{"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":563,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"8035:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8037:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"8035:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8057:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":567,"name":"uint64","nodeType":"ElementaryTypeName","src":"8057:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":566,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8052:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8065:3:1","memberName":"max","nodeType":"MemberAccess","src":"8052:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8035:33:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":572,"nodeType":"ExpressionStatement","src":"8035:33:1"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8104:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":575,"name":"uint64","nodeType":"ElementaryTypeName","src":"8104:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":574,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8099:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8099:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8112:3:1","memberName":"max","nodeType":"MemberAccess","src":"8099:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":573,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"8087:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8087:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":580,"nodeType":"EmitStatement","src":"8082:34:1"}]}}]},"documentation":{"id":539,"nodeType":"StructuredDocumentation","src":"7231:475:1","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":584,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7720:20:1","nodeType":"FunctionDefinition","parameters":{"id":540,"nodeType":"ParameterList","parameters":[],"src":"7740:2:1"},"returnParameters":{"id":541,"nodeType":"ParameterList","parameters":[],"src":"7760:0:1"},"scope":616,"src":"7711:422:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":594,"nodeType":"Block","src":"8308:63:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":590,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"8325:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8352:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"8325:39:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":589,"id":593,"nodeType":"Return","src":"8318:46:1"}]},"documentation":{"id":585,"nodeType":"StructuredDocumentation","src":"8139:99:1","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":595,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8252:22:1","nodeType":"FunctionDefinition","parameters":{"id":586,"nodeType":"ParameterList","parameters":[],"src":"8274:2:1"},"returnParameters":{"id":589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":595,"src":"8300:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":587,"name":"uint64","nodeType":"ElementaryTypeName","src":"8300:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8299:8:1"},"scope":616,"src":"8243:128:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":605,"nodeType":"Block","src":"8543:64:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":601,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"8560:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8587:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"8560:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":600,"id":604,"nodeType":"Return","src":"8553:47:1"}]},"documentation":{"id":596,"nodeType":"StructuredDocumentation","src":"8377:105:1","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":606,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8496:15:1","nodeType":"FunctionDefinition","parameters":{"id":597,"nodeType":"ParameterList","parameters":[],"src":"8511:2:1"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":606,"src":"8537:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":598,"name":"bool","nodeType":"ElementaryTypeName","src":"8537:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8536:6:1"},"scope":616,"src":"8487:120:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":614,"nodeType":"Block","src":"8827:80:1","statements":[{"AST":{"nodeType":"YulBlock","src":"8846:55:1","statements":[{"nodeType":"YulAssignment","src":"8860:31:1","value":{"name":"INITIALIZABLE_STORAGE","nodeType":"YulIdentifier","src":"8870:21:1"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"8860:6:1"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":611,"isOffset":false,"isSlot":true,"src":"8860:6:1","suffix":"slot","valueSize":1},{"declaration":376,"isOffset":false,"isSlot":false,"src":"8870:21:1","valueSize":1}],"id":613,"nodeType":"InlineAssembly","src":"8837:64:1"}]},"documentation":{"id":607,"nodeType":"StructuredDocumentation","src":"8613:67:1","text":" @dev Returns a pointer to the storage namespace."},"id":615,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"8746:24:1","nodeType":"FunctionDefinition","parameters":{"id":608,"nodeType":"ParameterList","parameters":[],"src":"8770:2:1"},"returnParameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"$","nameLocation":"8824:1:1","nodeType":"VariableDeclaration","scope":615,"src":"8795:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":610,"nodeType":"UserDefinedTypeName","pathNode":{"id":609,"name":"InitializableStorage","nameLocations":["8795:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"8795:20:1"},"referencedDeclaration":373,"src":"8795:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"8794:32:1"},"scope":616,"src":"8737:170:1","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":617,"src":"2349:6560:1","usedErrors":[379,382],"usedEvents":[387]}],"src":"113:8797:1"},"id":1},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"ERC1967Utils":[1428],"IERC1822Proxiable":[1125],"Initializable":[616],"UUPSUpgradeable":[798]},"id":799,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":618,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:2"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","id":620,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":799,"sourceUnit":1126,"src":"141:88:2","symbolAliases":[{"foreign":{"id":619,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"149:17:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":622,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":799,"sourceUnit":1429,"src":"230:84:2","symbolAliases":[{"foreign":{"id":621,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1428,"src":"238:12:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":624,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":799,"sourceUnit":617,"src":"315:50:2","symbolAliases":[{"foreign":{"id":623,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"323:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":626,"name":"Initializable","nameLocations":["1023:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"1023:13:2"},"id":627,"nodeType":"InheritanceSpecifier","src":"1023:13:2"},{"baseName":{"id":628,"name":"IERC1822Proxiable","nameLocations":["1038:17:2"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"1038:17:2"},"id":629,"nodeType":"InheritanceSpecifier","src":"1038:17:2"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":625,"nodeType":"StructuredDocumentation","src":"367:618:2","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism."},"fullyImplemented":false,"id":798,"linearizedBaseContracts":[798,1125,616],"name":"UUPSUpgradeable","nameLocation":"1004:15:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":630,"nodeType":"StructuredDocumentation","src":"1062:61:2","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":636,"mutability":"immutable","name":"__self","nameLocation":"1154:6:2","nodeType":"VariableDeclaration","scope":798,"src":"1128:48:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":634,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}],"id":633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":632,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:2","typeDescriptions":{}}},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"documentation":{"id":637,"nodeType":"StructuredDocumentation","src":"1183:631:2","text":" @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade."},"functionSelector":"ad3cb1cc","id":640,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:2","nodeType":"VariableDeclaration","scope":798,"src":"1819:58:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":638,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"documentation":{"id":641,"nodeType":"StructuredDocumentation","src":"1884:65:2","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","id":643,"name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:2","nodeType":"ErrorDefinition","parameters":{"id":642,"nodeType":"ParameterList","parameters":[],"src":"1987:2:2"},"src":"1954:36:2"},{"documentation":{"id":644,"nodeType":"StructuredDocumentation","src":"1996:68:2","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","id":648,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:2","nodeType":"ErrorDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":646,"mutability":"mutable","name":"slot","nameLocation":"2112:4:2","nodeType":"VariableDeclaration","scope":648,"src":"2104:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:2"},"src":"2069:49:2"},{"body":{"id":655,"nodeType":"Block","src":"2643:41:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":651,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":730,"src":"2653:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2653:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":653,"nodeType":"ExpressionStatement","src":"2653:13:2"},{"id":654,"nodeType":"PlaceholderStatement","src":"2676:1:2"}]},"documentation":{"id":649,"nodeType":"StructuredDocumentation","src":"2124:493:2","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":656,"name":"onlyProxy","nameLocation":"2631:9:2","nodeType":"ModifierDefinition","parameters":{"id":650,"nodeType":"ParameterList","parameters":[],"src":"2640:2:2"},"src":"2622:62:2","virtual":false,"visibility":"internal"},{"body":{"id":663,"nodeType":"Block","src":"2914:48:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":659,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"2924:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2924:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":661,"nodeType":"ExpressionStatement","src":"2924:20:2"},{"id":662,"nodeType":"PlaceholderStatement","src":"2954:1:2"}]},"documentation":{"id":657,"nodeType":"StructuredDocumentation","src":"2690:195:2","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":664,"name":"notDelegated","nameLocation":"2899:12:2","nodeType":"ModifierDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[],"src":"2911:2:2"},"src":"2890:72:2","virtual":false,"visibility":"internal"},{"body":{"id":669,"nodeType":"Block","src":"3028:7:2","statements":[]},"id":670,"implemented":true,"kind":"function","modifiers":[{"id":667,"kind":"modifierInvocation","modifierName":{"id":666,"name":"onlyInitializing","nameLocations":["3011:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3011:16:2"},"nodeType":"ModifierInvocation","src":"3011:16:2"}],"name":"__UUPSUpgradeable_init","nameLocation":"2977:22:2","nodeType":"FunctionDefinition","parameters":{"id":665,"nodeType":"ParameterList","parameters":[],"src":"2999:2:2"},"returnParameters":{"id":668,"nodeType":"ParameterList","parameters":[],"src":"3028:0:2"},"scope":798,"src":"2968:67:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":675,"nodeType":"Block","src":"3111:7:2","statements":[]},"id":676,"implemented":true,"kind":"function","modifiers":[{"id":673,"kind":"modifierInvocation","modifierName":{"id":672,"name":"onlyInitializing","nameLocations":["3094:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3094:16:2"},"nodeType":"ModifierInvocation","src":"3094:16:2"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3050:32:2","nodeType":"FunctionDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[],"src":"3082:2:2"},"returnParameters":{"id":674,"nodeType":"ParameterList","parameters":[],"src":"3111:0:2"},"scope":798,"src":"3041:77:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1124],"body":{"id":687,"nodeType":"Block","src":"3783:56:2","statements":[{"expression":{"expression":{"id":684,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1428,"src":"3800:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1428_$","typeString":"type(library ERC1967Utils)"}},"id":685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3813:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1155,"src":"3800:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":683,"id":686,"nodeType":"Return","src":"3793:39:2"}]},"documentation":{"id":677,"nodeType":"StructuredDocumentation","src":"3123:577:2","text":" @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":688,"implemented":true,"kind":"function","modifiers":[{"id":680,"kind":"modifierInvocation","modifierName":{"id":679,"name":"notDelegated","nameLocations":["3752:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":664,"src":"3752:12:2"},"nodeType":"ModifierInvocation","src":"3752:12:2"}],"name":"proxiableUUID","nameLocation":"3714:13:2","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[],"src":"3727:2:2"},"returnParameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":688,"src":"3774:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":681,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3774:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3773:9:2"},"scope":798,"src":"3705:134:2","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":707,"nodeType":"Block","src":"4263:109:2","statements":[{"expression":{"arguments":[{"id":699,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4291:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":698,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"4273:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4273:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":701,"nodeType":"ExpressionStatement","src":"4273:36:2"},{"expression":{"arguments":[{"id":703,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4341:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":704,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"4360:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":702,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"4319:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4319:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":706,"nodeType":"ExpressionStatement","src":"4319:46:2"}]},"documentation":{"id":689,"nodeType":"StructuredDocumentation","src":"3845:308:2","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":708,"implemented":true,"kind":"function","modifiers":[{"id":696,"kind":"modifierInvocation","modifierName":{"id":695,"name":"onlyProxy","nameLocations":["4253:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":656,"src":"4253:9:2"},"nodeType":"ModifierInvocation","src":"4253:9:2"}],"name":"upgradeToAndCall","nameLocation":"4167:16:2","nodeType":"FunctionDefinition","parameters":{"id":694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":691,"mutability":"mutable","name":"newImplementation","nameLocation":"4192:17:2","nodeType":"VariableDeclaration","scope":708,"src":"4184:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":690,"name":"address","nodeType":"ElementaryTypeName","src":"4184:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":693,"mutability":"mutable","name":"data","nameLocation":"4224:4:2","nodeType":"VariableDeclaration","scope":708,"src":"4211:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":692,"name":"bytes","nodeType":"ElementaryTypeName","src":"4211:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4183:46:2"},"returnParameters":{"id":697,"nodeType":"ParameterList","parameters":[],"src":"4263:0:2"},"scope":798,"src":"4158:214:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":729,"nodeType":"Block","src":"4644:267:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":714,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4679:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}],"id":713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4671:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":712,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:2","typeDescriptions":{}}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4671:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":716,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"4688:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4671:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":718,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1428,"src":"4749:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1428_$","typeString":"type(library ERC1967Utils)"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4762:17:2","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":1186,"src":"4749:30:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":721,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"4785:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4749:42:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4671:120:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":728,"nodeType":"IfStatement","src":"4654:251:2","trueBody":{"id":727,"nodeType":"Block","src":"4844:61:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":724,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"4865:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4865:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":726,"nodeType":"RevertStatement","src":"4858:36:2"}]}}]},"documentation":{"id":709,"nodeType":"StructuredDocumentation","src":"4378:216:2","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n See {_onlyProxy}."},"id":730,"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4608:11:2","nodeType":"FunctionDefinition","parameters":{"id":710,"nodeType":"ParameterList","parameters":[],"src":"4619:2:2"},"returnParameters":{"id":711,"nodeType":"ParameterList","parameters":[],"src":"4644:0:2"},"scope":798,"src":"4599:312:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":745,"nodeType":"Block","src":"5080:161:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":736,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5102:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}],"id":735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5094:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":734,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:2","typeDescriptions":{}}},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5094:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":738,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"5111:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5094:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":744,"nodeType":"IfStatement","src":"5090:145:2","trueBody":{"id":743,"nodeType":"Block","src":"5119:116:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":740,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"5195:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5195:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":742,"nodeType":"RevertStatement","src":"5188:36:2"}]}}]},"documentation":{"id":731,"nodeType":"StructuredDocumentation","src":"4917:106:2","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"id":746,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5037:18:2","nodeType":"FunctionDefinition","parameters":{"id":732,"nodeType":"ParameterList","parameters":[],"src":"5055:2:2"},"returnParameters":{"id":733,"nodeType":"ParameterList","parameters":[],"src":"5080:0:2"},"scope":798,"src":"5028:213:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":747,"nodeType":"StructuredDocumentation","src":"5247:372:2","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```"},"id":752,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5633:17:2","nodeType":"FunctionDefinition","parameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"newImplementation","nameLocation":"5659:17:2","nodeType":"VariableDeclaration","scope":752,"src":"5651:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":748,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:27:2"},"returnParameters":{"id":751,"nodeType":"ParameterList","parameters":[],"src":"5694:0:2"},"scope":798,"src":"5624:71:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":796,"nodeType":"Block","src":"6137:453:2","statements":[{"clauses":[{"block":{"id":785,"nodeType":"Block","src":"6227:212:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":768,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"6245:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":769,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1428,"src":"6253:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1428_$","typeString":"type(library ERC1967Utils)"}},"id":770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6266:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1155,"src":"6253:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6245:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":777,"nodeType":"IfStatement","src":"6241:120:2","trueBody":{"id":776,"nodeType":"Block","src":"6287:74:2","statements":[{"errorCall":{"arguments":[{"id":773,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"6341:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":772,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"6312:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6312:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":775,"nodeType":"RevertStatement","src":"6305:41:2"}]}},{"expression":{"arguments":[{"id":781,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6404:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":782,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"6423:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":778,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1428,"src":"6374:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1428_$","typeString":"type(library ERC1967Utils)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6387:16:2","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":1247,"src":"6374:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:54:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":784,"nodeType":"ExpressionStatement","src":"6374:54:2"}]},"errorName":"","id":786,"nodeType":"TryCatchClause","parameters":{"id":767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"slot","nameLocation":"6221:4:2","nodeType":"VariableDeclaration","scope":786,"src":"6213:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6213:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6212:14:2"},"src":"6204:235:2"},{"block":{"id":793,"nodeType":"Block","src":"6446:138:2","statements":[{"errorCall":{"arguments":[{"id":790,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6555:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":787,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1428,"src":"6513:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1428_$","typeString":"type(library ERC1967Utils)"}},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6526:28:2","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":1160,"src":"6513:41:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6513:60:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":792,"nodeType":"RevertStatement","src":"6506:67:2"}]},"errorName":"","id":794,"nodeType":"TryCatchClause","src":"6440:144:2"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":761,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6169:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":760,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"6151:17:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$1125_$","typeString":"type(contract IERC1822Proxiable)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$1125","typeString":"contract IERC1822Proxiable"}},"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6188:13:2","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":1124,"src":"6151:50:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:52:2","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":795,"nodeType":"TryStatement","src":"6147:437:2"}]},"documentation":{"id":753,"nodeType":"StructuredDocumentation","src":"5701:346:2","text":" @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC1967.\n Emits an {IERC1967-Upgraded} event."},"id":797,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6061:21:2","nodeType":"FunctionDefinition","parameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"mutability":"mutable","name":"newImplementation","nameLocation":"6091:17:2","nodeType":"VariableDeclaration","scope":797,"src":"6083:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"6083:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"data","nameLocation":"6123:4:2","nodeType":"VariableDeclaration","scope":797,"src":"6110:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":756,"name":"bytes","nodeType":"ElementaryTypeName","src":"6110:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6082:46:2"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"6137:0:2"},"scope":798,"src":"6052:538:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":799,"src":"986:5606:2","usedErrors":[379,382,643,648,1160,1173,1678,1681],"usedEvents":[387,1139]}],"src":"115:6478:2"},"id":2},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[844],"Initializable":[616]},"id":845,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":800,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:3"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":802,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":845,"sourceUnit":617,"src":"126:63:3","symbolAliases":[{"foreign":{"id":801,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"134:13:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":804,"name":"Initializable","nameLocations":["728:13:3"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"728:13:3"},"id":805,"nodeType":"InheritanceSpecifier","src":"728:13:3"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":803,"nodeType":"StructuredDocumentation","src":"191:496:3","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":844,"linearizedBaseContracts":[844,616],"name":"ContextUpgradeable","nameLocation":"706:18:3","nodeType":"ContractDefinition","nodes":[{"body":{"id":810,"nodeType":"Block","src":"800:7:3","statements":[]},"id":811,"implemented":true,"kind":"function","modifiers":[{"id":808,"kind":"modifierInvocation","modifierName":{"id":807,"name":"onlyInitializing","nameLocations":["783:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"783:16:3"},"nodeType":"ModifierInvocation","src":"783:16:3"}],"name":"__Context_init","nameLocation":"757:14:3","nodeType":"FunctionDefinition","parameters":{"id":806,"nodeType":"ParameterList","parameters":[],"src":"771:2:3"},"returnParameters":{"id":809,"nodeType":"ParameterList","parameters":[],"src":"800:0:3"},"scope":844,"src":"748:59:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":816,"nodeType":"Block","src":"875:7:3","statements":[]},"id":817,"implemented":true,"kind":"function","modifiers":[{"id":814,"kind":"modifierInvocation","modifierName":{"id":813,"name":"onlyInitializing","nameLocations":["858:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"858:16:3"},"nodeType":"ModifierInvocation","src":"858:16:3"}],"name":"__Context_init_unchained","nameLocation":"822:24:3","nodeType":"FunctionDefinition","parameters":{"id":812,"nodeType":"ParameterList","parameters":[],"src":"846:2:3"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[],"src":"875:0:3"},"scope":844,"src":"813:69:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":825,"nodeType":"Block","src":"949:34:3","statements":[{"expression":{"expression":{"id":822,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"966:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:6:3","memberName":"sender","nodeType":"MemberAccess","src":"966:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":821,"id":824,"nodeType":"Return","src":"959:17:3"}]},"id":826,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"896:10:3","nodeType":"FunctionDefinition","parameters":{"id":818,"nodeType":"ParameterList","parameters":[],"src":"906:2:3"},"returnParameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":826,"src":"940:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":819,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:9:3"},"scope":844,"src":"887:96:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":834,"nodeType":"Block","src":"1056:32:3","statements":[{"expression":{"expression":{"id":831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1073:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:4:3","memberName":"data","nodeType":"MemberAccess","src":"1073:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":830,"id":833,"nodeType":"Return","src":"1066:15:3"}]},"id":835,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"998:8:3","nodeType":"FunctionDefinition","parameters":{"id":827,"nodeType":"ParameterList","parameters":[],"src":"1006:2:3"},"returnParameters":{"id":830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":835,"src":"1040:14:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":828,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1039:16:3"},"scope":844,"src":"989:99:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":842,"nodeType":"Block","src":"1166:25:3","statements":[{"expression":{"hexValue":"30","id":840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":839,"id":841,"nodeType":"Return","src":"1176:8:3"}]},"id":843,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1103:20:3","nodeType":"FunctionDefinition","parameters":{"id":836,"nodeType":"ParameterList","parameters":[],"src":"1123:2:3"},"returnParameters":{"id":839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":843,"src":"1157:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":837,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:9:3"},"scope":844,"src":"1094:97:3","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":845,"src":"688:505:3","usedErrors":[379,382],"usedEvents":[387]}],"src":"101:1093:3"},"id":3},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","exportedSymbols":{"Initializable":[616],"ReentrancyGuardUpgradeable":[973]},"id":974,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":846,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":848,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":974,"sourceUnit":617,"src":"134:63:4","symbolAliases":[{"foreign":{"id":847,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"142:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":850,"name":"Initializable","nameLocations":["998:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"998:13:4"},"id":851,"nodeType":"InheritanceSpecifier","src":"998:13:4"}],"canonicalName":"ReentrancyGuardUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":849,"nodeType":"StructuredDocumentation","src":"199:750:4","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":973,"linearizedBaseContracts":[973,616],"name":"ReentrancyGuardUpgradeable","nameLocation":"968:26:4","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":854,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"1791:11:4","nodeType":"VariableDeclaration","scope":973,"src":"1766:40:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1766:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1805:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":857,"mutability":"constant","name":"ENTERED","nameLocation":"1837:7:4","nodeType":"VariableDeclaration","scope":973,"src":"1812:36:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":855,"name":"uint256","nodeType":"ElementaryTypeName","src":"1812:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1847:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"canonicalName":"ReentrancyGuardUpgradeable.ReentrancyGuardStorage","documentation":{"id":858,"nodeType":"StructuredDocumentation","src":"1855:73:4","text":"@custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard"},"id":861,"members":[{"constant":false,"id":860,"mutability":"mutable","name":"_status","nameLocation":"1981:7:4","nodeType":"VariableDeclaration","scope":861,"src":"1973:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":859,"name":"uint256","nodeType":"ElementaryTypeName","src":"1973:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ReentrancyGuardStorage","nameLocation":"1940:22:4","nodeType":"StructDefinition","scope":973,"src":"1933:62:4","visibility":"public"},{"constant":true,"id":864,"mutability":"constant","name":"ReentrancyGuardStorageLocation","nameLocation":"2145:30:4","nodeType":"VariableDeclaration","scope":973,"src":"2120:124:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":862,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2120:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2178:66:4","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"body":{"id":871,"nodeType":"Block","src":"2345:89:4","statements":[{"AST":{"nodeType":"YulBlock","src":"2364:64:4","statements":[{"nodeType":"YulAssignment","src":"2378:40:4","value":{"name":"ReentrancyGuardStorageLocation","nodeType":"YulIdentifier","src":"2388:30:4"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"2378:6:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":868,"isOffset":false,"isSlot":true,"src":"2378:6:4","suffix":"slot","valueSize":1},{"declaration":864,"isOffset":false,"isSlot":false,"src":"2388:30:4","valueSize":1}],"id":870,"nodeType":"InlineAssembly","src":"2355:73:4"}]},"id":872,"implemented":true,"kind":"function","modifiers":[],"name":"_getReentrancyGuardStorage","nameLocation":"2260:26:4","nodeType":"FunctionDefinition","parameters":{"id":865,"nodeType":"ParameterList","parameters":[],"src":"2286:2:4"},"returnParameters":{"id":869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":868,"mutability":"mutable","name":"$","nameLocation":"2342:1:4","nodeType":"VariableDeclaration","scope":872,"src":"2311:32:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":867,"nodeType":"UserDefinedTypeName","pathNode":{"id":866,"name":"ReentrancyGuardStorage","nameLocations":["2311:22:4"],"nodeType":"IdentifierPath","referencedDeclaration":861,"src":"2311:22:4"},"referencedDeclaration":861,"src":"2311:22:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"src":"2310:34:4"},"scope":973,"src":"2251:183:4","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":873,"nodeType":"StructuredDocumentation","src":"2440:52:4","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":875,"name":"ReentrancyGuardReentrantCall","nameLocation":"2503:28:4","nodeType":"ErrorDefinition","parameters":{"id":874,"nodeType":"ParameterList","parameters":[],"src":"2531:2:4"},"src":"2497:37:4"},{"body":{"id":883,"nodeType":"Block","src":"2600:51:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":880,"name":"__ReentrancyGuard_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"2610:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2610:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":882,"nodeType":"ExpressionStatement","src":"2610:34:4"}]},"id":884,"implemented":true,"kind":"function","modifiers":[{"id":878,"kind":"modifierInvocation","modifierName":{"id":877,"name":"onlyInitializing","nameLocations":["2583:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"2583:16:4"},"nodeType":"ModifierInvocation","src":"2583:16:4"}],"name":"__ReentrancyGuard_init","nameLocation":"2549:22:4","nodeType":"FunctionDefinition","parameters":{"id":876,"nodeType":"ParameterList","parameters":[],"src":"2571:2:4"},"returnParameters":{"id":879,"nodeType":"ParameterList","parameters":[],"src":"2600:0:4"},"scope":973,"src":"2540:111:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":901,"nodeType":"Block","src":"2727:113:4","statements":[{"assignments":[891],"declarations":[{"constant":false,"id":891,"mutability":"mutable","name":"$","nameLocation":"2768:1:4","nodeType":"VariableDeclaration","scope":901,"src":"2737:32:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":890,"nodeType":"UserDefinedTypeName","pathNode":{"id":889,"name":"ReentrancyGuardStorage","nameLocations":["2737:22:4"],"nodeType":"IdentifierPath","referencedDeclaration":861,"src":"2737:22:4"},"referencedDeclaration":861,"src":"2737:22:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":894,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":892,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":872,"src":"2772:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$861_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2737:63:4"},{"expression":{"id":899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":895,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"2810:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2812:7:4","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":860,"src":"2810:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":898,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"2822:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2810:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":900,"nodeType":"ExpressionStatement","src":"2810:23:4"}]},"id":902,"implemented":true,"kind":"function","modifiers":[{"id":887,"kind":"modifierInvocation","modifierName":{"id":886,"name":"onlyInitializing","nameLocations":["2710:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"2710:16:4"},"nodeType":"ModifierInvocation","src":"2710:16:4"}],"name":"__ReentrancyGuard_init_unchained","nameLocation":"2666:32:4","nodeType":"FunctionDefinition","parameters":{"id":885,"nodeType":"ParameterList","parameters":[],"src":"2698:2:4"},"returnParameters":{"id":888,"nodeType":"ParameterList","parameters":[],"src":"2727:0:4"},"scope":973,"src":"2657:183:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":912,"nodeType":"Block","src":"3241:79:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":905,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":938,"src":"3251:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3251:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":907,"nodeType":"ExpressionStatement","src":"3251:21:4"},{"id":908,"nodeType":"PlaceholderStatement","src":"3282:1:4"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":909,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"3293:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3293:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":911,"nodeType":"ExpressionStatement","src":"3293:20:4"}]},"documentation":{"id":903,"nodeType":"StructuredDocumentation","src":"2846:366:4","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":913,"name":"nonReentrant","nameLocation":"3226:12:4","nodeType":"ModifierDefinition","parameters":{"id":904,"nodeType":"ParameterList","parameters":[],"src":"3238:2:4"},"src":"3217:103:4","virtual":false,"visibility":"internal"},{"body":{"id":937,"nodeType":"Block","src":"3365:345:4","statements":[{"assignments":[918],"declarations":[{"constant":false,"id":918,"mutability":"mutable","name":"$","nameLocation":"3406:1:4","nodeType":"VariableDeclaration","scope":937,"src":"3375:32:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":917,"nodeType":"UserDefinedTypeName","pathNode":{"id":916,"name":"ReentrancyGuardStorage","nameLocations":["3375:22:4"],"nodeType":"IdentifierPath","referencedDeclaration":861,"src":"3375:22:4"},"referencedDeclaration":861,"src":"3375:22:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":921,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":919,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":872,"src":"3410:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$861_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3410:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3375:63:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":922,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":918,"src":"3526:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3528:7:4","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":860,"src":"3526:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":924,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"3539:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3526:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":930,"nodeType":"IfStatement","src":"3522:88:4","trueBody":{"id":929,"nodeType":"Block","src":"3548:62:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":926,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"3569:28:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3569:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":928,"nodeType":"RevertStatement","src":"3562:37:4"}]}},{"expression":{"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":931,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":918,"src":"3684:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3686:7:4","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":860,"src":"3684:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":934,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"3696:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3684:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":936,"nodeType":"ExpressionStatement","src":"3684:19:4"}]},"id":938,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"3335:19:4","nodeType":"FunctionDefinition","parameters":{"id":914,"nodeType":"ParameterList","parameters":[],"src":"3354:2:4"},"returnParameters":{"id":915,"nodeType":"ParameterList","parameters":[],"src":"3365:0:4"},"scope":973,"src":"3326:384:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":953,"nodeType":"Block","src":"3754:245:4","statements":[{"assignments":[943],"declarations":[{"constant":false,"id":943,"mutability":"mutable","name":"$","nameLocation":"3795:1:4","nodeType":"VariableDeclaration","scope":953,"src":"3764:32:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":942,"nodeType":"UserDefinedTypeName","pathNode":{"id":941,"name":"ReentrancyGuardStorage","nameLocations":["3764:22:4"],"nodeType":"IdentifierPath","referencedDeclaration":861,"src":"3764:22:4"},"referencedDeclaration":861,"src":"3764:22:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":946,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":944,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":872,"src":"3799:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$861_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3799:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3764:63:4"},{"expression":{"id":951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":947,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"3969:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3971:7:4","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":860,"src":"3969:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":950,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"3981:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3969:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":952,"nodeType":"ExpressionStatement","src":"3969:23:4"}]},"id":954,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"3725:18:4","nodeType":"FunctionDefinition","parameters":{"id":939,"nodeType":"ParameterList","parameters":[],"src":"3743:2:4"},"returnParameters":{"id":940,"nodeType":"ParameterList","parameters":[],"src":"3754:0:4"},"scope":973,"src":"3716:283:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":971,"nodeType":"Block","src":"4242:117:4","statements":[{"assignments":[962],"declarations":[{"constant":false,"id":962,"mutability":"mutable","name":"$","nameLocation":"4283:1:4","nodeType":"VariableDeclaration","scope":971,"src":"4252:32:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":961,"nodeType":"UserDefinedTypeName","pathNode":{"id":960,"name":"ReentrancyGuardStorage","nameLocations":["4252:22:4"],"nodeType":"IdentifierPath","referencedDeclaration":861,"src":"4252:22:4"},"referencedDeclaration":861,"src":"4252:22:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":965,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":963,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":872,"src":"4287:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$861_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4287:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4252:63:4"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":966,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"4332:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$861_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":967,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4334:7:4","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":860,"src":"4332:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":968,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"4345:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4332:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":959,"id":970,"nodeType":"Return","src":"4325:27:4"}]},"documentation":{"id":955,"nodeType":"StructuredDocumentation","src":"4005:168:4","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":972,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"4187:23:4","nodeType":"FunctionDefinition","parameters":{"id":956,"nodeType":"ParameterList","parameters":[],"src":"4210:2:4"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":972,"src":"4236:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":957,"name":"bool","nodeType":"ElementaryTypeName","src":"4236:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4235:6:4"},"scope":973,"src":"4178:181:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":974,"src":"950:3411:4","usedErrors":[379,382,875],"usedEvents":[387]}],"src":"109:4253:4"},"id":4},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[1013],"IERC165":[2040],"Initializable":[616]},"id":1014,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":975,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:5"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":977,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1014,"sourceUnit":2041,"src":"140:80:5","symbolAliases":[{"foreign":{"id":976,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2040,"src":"148:7:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":979,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1014,"sourceUnit":617,"src":"221:66:5","symbolAliases":[{"foreign":{"id":978,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"229:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":981,"name":"Initializable","nameLocations":["807:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"807:13:5"},"id":982,"nodeType":"InheritanceSpecifier","src":"807:13:5"},{"baseName":{"id":983,"name":"IERC165","nameLocations":["822:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":2040,"src":"822:7:5"},"id":984,"nodeType":"InheritanceSpecifier","src":"822:7:5"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":980,"nodeType":"StructuredDocumentation","src":"289:478:5","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":1013,"linearizedBaseContracts":[1013,2040,616],"name":"ERC165Upgradeable","nameLocation":"786:17:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":989,"nodeType":"Block","src":"887:7:5","statements":[]},"id":990,"implemented":true,"kind":"function","modifiers":[{"id":987,"kind":"modifierInvocation","modifierName":{"id":986,"name":"onlyInitializing","nameLocations":["870:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"870:16:5"},"nodeType":"ModifierInvocation","src":"870:16:5"}],"name":"__ERC165_init","nameLocation":"845:13:5","nodeType":"FunctionDefinition","parameters":{"id":985,"nodeType":"ParameterList","parameters":[],"src":"858:2:5"},"returnParameters":{"id":988,"nodeType":"ParameterList","parameters":[],"src":"887:0:5"},"scope":1013,"src":"836:58:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":995,"nodeType":"Block","src":"961:7:5","statements":[]},"id":996,"implemented":true,"kind":"function","modifiers":[{"id":993,"kind":"modifierInvocation","modifierName":{"id":992,"name":"onlyInitializing","nameLocations":["944:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"944:16:5"},"nodeType":"ModifierInvocation","src":"944:16:5"}],"name":"__ERC165_init_unchained","nameLocation":"909:23:5","nodeType":"FunctionDefinition","parameters":{"id":991,"nodeType":"ParameterList","parameters":[],"src":"932:2:5"},"returnParameters":{"id":994,"nodeType":"ParameterList","parameters":[],"src":"961:0:5"},"scope":1013,"src":"900:68:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2039],"body":{"id":1011,"nodeType":"Block","src":"1116:64:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1004,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":999,"src":"1133:11:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1006,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2040,"src":"1153:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2040_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2040_$","typeString":"type(contract IERC165)"}],"id":1005,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1148:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1148:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2040","typeString":"type(contract IERC165)"}},"id":1008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1162:11:5","memberName":"interfaceId","nodeType":"MemberAccess","src":"1148:25:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1133:40:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1003,"id":1010,"nodeType":"Return","src":"1126:47:5"}]},"documentation":{"id":997,"nodeType":"StructuredDocumentation","src":"973:56:5","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":1012,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1043:17:5","nodeType":"FunctionDefinition","parameters":{"id":1000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":999,"mutability":"mutable","name":"interfaceId","nameLocation":"1068:11:5","nodeType":"VariableDeclaration","scope":1012,"src":"1061:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":998,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1061:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1060:20:5"},"returnParameters":{"id":1003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1012,"src":"1110:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1001,"name":"bool","nodeType":"ElementaryTypeName","src":"1110:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1109:6:5"},"scope":1013,"src":"1034:146:5","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":1014,"src":"768:414:5","usedErrors":[379,382],"usedEvents":[387]}],"src":"114:1069:5"},"id":5},"@openzeppelin/contracts/access/IAccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[1096]},"id":1097,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1015,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":1016,"nodeType":"StructuredDocumentation","src":"135:89:6","text":" @dev External interface of AccessControl declared to support ERC165 detection."},"fullyImplemented":false,"id":1096,"linearizedBaseContracts":[1096],"name":"IAccessControl","nameLocation":"235:14:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1017,"nodeType":"StructuredDocumentation","src":"256:56:6","text":" @dev The `account` is missing a role."},"errorSelector":"e2517d3f","id":1023,"name":"AccessControlUnauthorizedAccount","nameLocation":"323:32:6","nodeType":"ErrorDefinition","parameters":{"id":1022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1019,"mutability":"mutable","name":"account","nameLocation":"364:7:6","nodeType":"VariableDeclaration","scope":1023,"src":"356:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1018,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1021,"mutability":"mutable","name":"neededRole","nameLocation":"381:10:6","nodeType":"VariableDeclaration","scope":1023,"src":"373:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1020,"name":"bytes32","nodeType":"ElementaryTypeName","src":"373:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"355:37:6"},"src":"317:76:6"},{"documentation":{"id":1024,"nodeType":"StructuredDocumentation","src":"399:148:6","text":" @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."},"errorSelector":"6697b232","id":1026,"name":"AccessControlBadConfirmation","nameLocation":"558:28:6","nodeType":"ErrorDefinition","parameters":{"id":1025,"nodeType":"ParameterList","parameters":[],"src":"586:2:6"},"src":"552:37:6"},{"anonymous":false,"documentation":{"id":1027,"nodeType":"StructuredDocumentation","src":"595:254:6","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this."},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":1035,"name":"RoleAdminChanged","nameLocation":"860:16:6","nodeType":"EventDefinition","parameters":{"id":1034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1029,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"893:4:6","nodeType":"VariableDeclaration","scope":1035,"src":"877:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1028,"name":"bytes32","nodeType":"ElementaryTypeName","src":"877:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1031,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"915:17:6","nodeType":"VariableDeclaration","scope":1035,"src":"899:33:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1030,"name":"bytes32","nodeType":"ElementaryTypeName","src":"899:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1033,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"950:12:6","nodeType":"VariableDeclaration","scope":1035,"src":"934:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1032,"name":"bytes32","nodeType":"ElementaryTypeName","src":"934:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"876:87:6"},"src":"854:110:6"},{"anonymous":false,"documentation":{"id":1036,"nodeType":"StructuredDocumentation","src":"970:212:6","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":1044,"name":"RoleGranted","nameLocation":"1193:11:6","nodeType":"EventDefinition","parameters":{"id":1043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1038,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1221:4:6","nodeType":"VariableDeclaration","scope":1044,"src":"1205:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1037,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1205:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1040,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1243:7:6","nodeType":"VariableDeclaration","scope":1044,"src":"1227:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1039,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1042,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1268:6:6","nodeType":"VariableDeclaration","scope":1044,"src":"1252:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1041,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1204:71:6"},"src":"1187:89:6"},{"anonymous":false,"documentation":{"id":1045,"nodeType":"StructuredDocumentation","src":"1282:275:6","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n   - if using `revokeRole`, it is the admin role bearer\n   - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":1053,"name":"RoleRevoked","nameLocation":"1568:11:6","nodeType":"EventDefinition","parameters":{"id":1052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1047,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1596:4:6","nodeType":"VariableDeclaration","scope":1053,"src":"1580:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1046,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1580:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1049,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1618:7:6","nodeType":"VariableDeclaration","scope":1053,"src":"1602:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1048,"name":"address","nodeType":"ElementaryTypeName","src":"1602:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1051,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1643:6:6","nodeType":"VariableDeclaration","scope":1053,"src":"1627:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1050,"name":"address","nodeType":"ElementaryTypeName","src":"1627:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1579:71:6"},"src":"1562:89:6"},{"documentation":{"id":1054,"nodeType":"StructuredDocumentation","src":"1657:76:6","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":1063,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1747:7:6","nodeType":"FunctionDefinition","parameters":{"id":1059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1056,"mutability":"mutable","name":"role","nameLocation":"1763:4:6","nodeType":"VariableDeclaration","scope":1063,"src":"1755:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1055,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1755:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1058,"mutability":"mutable","name":"account","nameLocation":"1777:7:6","nodeType":"VariableDeclaration","scope":1063,"src":"1769:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1057,"name":"address","nodeType":"ElementaryTypeName","src":"1769:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1754:31:6"},"returnParameters":{"id":1062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1063,"src":"1809:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1060,"name":"bool","nodeType":"ElementaryTypeName","src":"1809:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1808:6:6"},"scope":1096,"src":"1738:77:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1064,"nodeType":"StructuredDocumentation","src":"1821:184:6","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":1071,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"2019:12:6","nodeType":"FunctionDefinition","parameters":{"id":1067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1066,"mutability":"mutable","name":"role","nameLocation":"2040:4:6","nodeType":"VariableDeclaration","scope":1071,"src":"2032:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1065,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2032:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2031:14:6"},"returnParameters":{"id":1070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1069,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1071,"src":"2069:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1068,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2069:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2068:9:6"},"scope":1096,"src":"2010:68:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1072,"nodeType":"StructuredDocumentation","src":"2084:239:6","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":1079,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2337:9:6","nodeType":"FunctionDefinition","parameters":{"id":1077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1074,"mutability":"mutable","name":"role","nameLocation":"2355:4:6","nodeType":"VariableDeclaration","scope":1079,"src":"2347:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1073,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2347:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1076,"mutability":"mutable","name":"account","nameLocation":"2369:7:6","nodeType":"VariableDeclaration","scope":1079,"src":"2361:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1075,"name":"address","nodeType":"ElementaryTypeName","src":"2361:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2346:31:6"},"returnParameters":{"id":1078,"nodeType":"ParameterList","parameters":[],"src":"2386:0:6"},"scope":1096,"src":"2328:59:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1080,"nodeType":"StructuredDocumentation","src":"2393:223:6","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":1087,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2630:10:6","nodeType":"FunctionDefinition","parameters":{"id":1085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1082,"mutability":"mutable","name":"role","nameLocation":"2649:4:6","nodeType":"VariableDeclaration","scope":1087,"src":"2641:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1081,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2641:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1084,"mutability":"mutable","name":"account","nameLocation":"2663:7:6","nodeType":"VariableDeclaration","scope":1087,"src":"2655:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1083,"name":"address","nodeType":"ElementaryTypeName","src":"2655:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2640:31:6"},"returnParameters":{"id":1086,"nodeType":"ParameterList","parameters":[],"src":"2680:0:6"},"scope":1096,"src":"2621:60:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1088,"nodeType":"StructuredDocumentation","src":"2687:491:6","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`."},"functionSelector":"36568abe","id":1095,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"3192:12:6","nodeType":"FunctionDefinition","parameters":{"id":1093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1090,"mutability":"mutable","name":"role","nameLocation":"3213:4:6","nodeType":"VariableDeclaration","scope":1095,"src":"3205:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3205:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1092,"mutability":"mutable","name":"callerConfirmation","nameLocation":"3227:18:6","nodeType":"VariableDeclaration","scope":1095,"src":"3219:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1091,"name":"address","nodeType":"ElementaryTypeName","src":"3219:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3204:42:6"},"returnParameters":{"id":1094,"nodeType":"ParameterList","parameters":[],"src":"3255:0:6"},"scope":1096,"src":"3183:73:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1097,"src":"225:3033:6","usedErrors":[1023,1026],"usedEvents":[1035,1044,1053]}],"src":"109:3150:6"},"id":6},"@openzeppelin/contracts/interfaces/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","exportedSymbols":{"IERC165":[2040]},"id":1101,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1098,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:7"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","id":1100,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1101,"sourceUnit":2041,"src":"132:59:7","symbolAliases":[{"foreign":{"id":1099,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2040,"src":"140:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"106:86:7"},"id":7},"@openzeppelin/contracts/interfaces/IERC6372.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC6372.sol","exportedSymbols":{"IERC6372":[1115]},"id":1116,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1102,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6372","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1115,"linearizedBaseContracts":[1115],"name":"IERC6372","nameLocation":"143:8:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1103,"nodeType":"StructuredDocumentation","src":"158:133:8","text":" @dev Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting)."},"functionSelector":"91ddadf4","id":1108,"implemented":false,"kind":"function","modifiers":[],"name":"clock","nameLocation":"305:5:8","nodeType":"FunctionDefinition","parameters":{"id":1104,"nodeType":"ParameterList","parameters":[],"src":"310:2:8"},"returnParameters":{"id":1107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1108,"src":"336:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1105,"name":"uint48","nodeType":"ElementaryTypeName","src":"336:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"335:8:8"},"scope":1115,"src":"296:48:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1109,"nodeType":"StructuredDocumentation","src":"350:48:8","text":" @dev Description of the clock"},"functionSelector":"4bf5d7e9","id":1114,"implemented":false,"kind":"function","modifiers":[],"name":"CLOCK_MODE","nameLocation":"465:10:8","nodeType":"FunctionDefinition","parameters":{"id":1110,"nodeType":"ParameterList","parameters":[],"src":"475:2:8"},"returnParameters":{"id":1113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1114,"src":"501:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1111,"name":"string","nodeType":"ElementaryTypeName","src":"501:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"500:15:8"},"scope":1115,"src":"456:60:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1116,"src":"133:385:8","usedErrors":[],"usedEvents":[]}],"src":"107:412:8"},"id":8},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[1125]},"id":1126,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1117,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1118,"nodeType":"StructuredDocumentation","src":"139:203:9","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":1125,"linearizedBaseContracts":[1125],"name":"IERC1822Proxiable","nameLocation":"353:17:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1119,"nodeType":"StructuredDocumentation","src":"377:438:9","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":1124,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"829:13:9","nodeType":"FunctionDefinition","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[],"src":"842:2:9"},"returnParameters":{"id":1123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1124,"src":"868:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1121,"name":"bytes32","nodeType":"ElementaryTypeName","src":"868:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"867:9:9"},"scope":1125,"src":"820:57:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1126,"src":"343:536:9","usedErrors":[],"usedEvents":[]}],"src":"113:767:9"},"id":9},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[1918],"ERC1967Utils":[1428],"IBeacon":[1438],"StorageSlot":[2028]},"id":1429,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1127,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:10"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":1129,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1429,"sourceUnit":1439,"src":"140:46:10","symbolAliases":[{"foreign":{"id":1128,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"148:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1131,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1429,"sourceUnit":1919,"src":"187:48:10","symbolAliases":[{"foreign":{"id":1130,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"195:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":1133,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1429,"sourceUnit":2029,"src":"236:56:10","symbolAliases":[{"foreign":{"id":1132,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"244:11:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":1134,"nodeType":"StructuredDocumentation","src":"294:154:10","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots."},"fullyImplemented":true,"id":1428,"linearizedBaseContracts":[1428],"name":"ERC1967Utils","nameLocation":"457:12:10","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1135,"nodeType":"StructuredDocumentation","src":"660:68:10","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":1139,"name":"Upgraded","nameLocation":"739:8:10","nodeType":"EventDefinition","parameters":{"id":1138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1137,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"764:14:10","nodeType":"VariableDeclaration","scope":1139,"src":"748:30:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1136,"name":"address","nodeType":"ElementaryTypeName","src":"748:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"747:32:10"},"src":"733:47:10"},{"anonymous":false,"documentation":{"id":1140,"nodeType":"StructuredDocumentation","src":"786:67:10","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":1146,"name":"AdminChanged","nameLocation":"864:12:10","nodeType":"EventDefinition","parameters":{"id":1145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1142,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"885:13:10","nodeType":"VariableDeclaration","scope":1146,"src":"877:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1141,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1144,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"908:8:10","nodeType":"VariableDeclaration","scope":1146,"src":"900:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1143,"name":"address","nodeType":"ElementaryTypeName","src":"900:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"876:41:10"},"src":"858:60:10"},{"anonymous":false,"documentation":{"id":1147,"nodeType":"StructuredDocumentation","src":"924:59:10","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":1151,"name":"BeaconUpgraded","nameLocation":"994:14:10","nodeType":"EventDefinition","parameters":{"id":1150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1149,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"1025:6:10","nodeType":"VariableDeclaration","scope":1151,"src":"1009:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1148,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1008:24:10"},"src":"988:45:10"},{"constant":true,"documentation":{"id":1152,"nodeType":"StructuredDocumentation","src":"1039:170:10","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"id":1155,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"1305:19:10","nodeType":"VariableDeclaration","scope":1428,"src":"1279:114:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1153,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1279:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":1154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1327:66:10","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"documentation":{"id":1156,"nodeType":"StructuredDocumentation","src":"1400:69:10","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":1160,"name":"ERC1967InvalidImplementation","nameLocation":"1480:28:10","nodeType":"ErrorDefinition","parameters":{"id":1159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1158,"mutability":"mutable","name":"implementation","nameLocation":"1517:14:10","nodeType":"VariableDeclaration","scope":1160,"src":"1509:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1157,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1508:24:10"},"src":"1474:59:10"},{"documentation":{"id":1161,"nodeType":"StructuredDocumentation","src":"1539:60:10","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":1165,"name":"ERC1967InvalidAdmin","nameLocation":"1610:19:10","nodeType":"ErrorDefinition","parameters":{"id":1164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1163,"mutability":"mutable","name":"admin","nameLocation":"1638:5:10","nodeType":"VariableDeclaration","scope":1165,"src":"1630:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1162,"name":"address","nodeType":"ElementaryTypeName","src":"1630:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1629:15:10"},"src":"1604:41:10"},{"documentation":{"id":1166,"nodeType":"StructuredDocumentation","src":"1651:61:10","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":1170,"name":"ERC1967InvalidBeacon","nameLocation":"1723:20:10","nodeType":"ErrorDefinition","parameters":{"id":1169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1168,"mutability":"mutable","name":"beacon","nameLocation":"1752:6:10","nodeType":"VariableDeclaration","scope":1170,"src":"1744:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1167,"name":"address","nodeType":"ElementaryTypeName","src":"1744:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1743:16:10"},"src":"1717:43:10"},{"documentation":{"id":1171,"nodeType":"StructuredDocumentation","src":"1766:82:10","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":1173,"name":"ERC1967NonPayable","nameLocation":"1859:17:10","nodeType":"ErrorDefinition","parameters":{"id":1172,"nodeType":"ParameterList","parameters":[],"src":"1876:2:10"},"src":"1853:26:10"},{"body":{"id":1185,"nodeType":"Block","src":"2018:77:10","statements":[{"expression":{"expression":{"arguments":[{"id":1181,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1155,"src":"2062:19:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1179,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"2035:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2028_$","typeString":"type(library StorageSlot)"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2047:14:10","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1950,"src":"2035:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1924_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2035:47:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1924_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1183,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2083:5:10","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1923,"src":"2035:53:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1178,"id":1184,"nodeType":"Return","src":"2028:60:10"}]},"documentation":{"id":1174,"nodeType":"StructuredDocumentation","src":"1885:67:10","text":" @dev Returns the current implementation address."},"id":1186,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1966:17:10","nodeType":"FunctionDefinition","parameters":{"id":1175,"nodeType":"ParameterList","parameters":[],"src":"1983:2:10"},"returnParameters":{"id":1178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1186,"src":"2009:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1176,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2008:9:10"},"scope":1428,"src":"1957:138:10","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1212,"nodeType":"Block","src":"2249:218:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1192,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"2263:17:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2281:4:10","memberName":"code","nodeType":"MemberAccess","src":"2263:22:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2286:6:10","memberName":"length","nodeType":"MemberAccess","src":"2263:29:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2263:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1202,"nodeType":"IfStatement","src":"2259:119:10","trueBody":{"id":1201,"nodeType":"Block","src":"2299:79:10","statements":[{"errorCall":{"arguments":[{"id":1198,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"2349:17:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1197,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"2320:28:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2320:47:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1200,"nodeType":"RevertStatement","src":"2313:54:10"}]}},{"expression":{"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1206,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1155,"src":"2414:19:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1203,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"2387:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2028_$","typeString":"type(library StorageSlot)"}},"id":1205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2399:14:10","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1950,"src":"2387:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1924_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2387:47:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1924_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2435:5:10","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1923,"src":"2387:53:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1209,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"2443:17:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2387:73:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1211,"nodeType":"ExpressionStatement","src":"2387:73:10"}]},"documentation":{"id":1187,"nodeType":"StructuredDocumentation","src":"2101:80:10","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":1213,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"2195:18:10","nodeType":"FunctionDefinition","parameters":{"id":1190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1189,"mutability":"mutable","name":"newImplementation","nameLocation":"2222:17:10","nodeType":"VariableDeclaration","scope":1213,"src":"2214:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1188,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2213:27:10"},"returnParameters":{"id":1191,"nodeType":"ParameterList","parameters":[],"src":"2249:0:10"},"scope":1428,"src":"2186:281:10","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1246,"nodeType":"Block","src":"2860:254:10","statements":[{"expression":{"arguments":[{"id":1222,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"2889:17:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1221,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"2870:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2870:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1224,"nodeType":"ExpressionStatement","src":"2870:37:10"},{"eventCall":{"arguments":[{"id":1226,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"2931:17:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1225,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"2922:8:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2922:27:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1228,"nodeType":"EmitStatement","src":"2917:32:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1229,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1218,"src":"2964:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2969:6:10","memberName":"length","nodeType":"MemberAccess","src":"2964:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2978:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2964:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1244,"nodeType":"Block","src":"3065:43:10","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1241,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1427,"src":"3079:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3079:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1243,"nodeType":"ExpressionStatement","src":"3079:18:10"}]},"id":1245,"nodeType":"IfStatement","src":"2960:148:10","trueBody":{"id":1240,"nodeType":"Block","src":"2981:78:10","statements":[{"expression":{"arguments":[{"id":1236,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"3024:17:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1237,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1218,"src":"3043:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1233,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"2995:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1918_$","typeString":"type(library Address)"}},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3003:20:10","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1837,"src":"2995:28:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2995:53:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1239,"nodeType":"ExpressionStatement","src":"2995:53:10"}]}}]},"documentation":{"id":1214,"nodeType":"StructuredDocumentation","src":"2473:301:10","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"id":1247,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2788:16:10","nodeType":"FunctionDefinition","parameters":{"id":1219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1216,"mutability":"mutable","name":"newImplementation","nameLocation":"2813:17:10","nodeType":"VariableDeclaration","scope":1247,"src":"2805:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1215,"name":"address","nodeType":"ElementaryTypeName","src":"2805:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1218,"mutability":"mutable","name":"data","nameLocation":"2845:4:10","nodeType":"VariableDeclaration","scope":1247,"src":"2832:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1217,"name":"bytes","nodeType":"ElementaryTypeName","src":"2832:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2804:46:10"},"returnParameters":{"id":1220,"nodeType":"ParameterList","parameters":[],"src":"2860:0:10"},"scope":1428,"src":"2779:335:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1248,"nodeType":"StructuredDocumentation","src":"3120:145:10","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"id":1251,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"3361:10:10","nodeType":"VariableDeclaration","scope":1428,"src":"3335:105:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1249,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3335:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":1250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3374:66:10","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":1263,"nodeType":"Block","src":"3844:68:10","statements":[{"expression":{"expression":{"arguments":[{"id":1259,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1251,"src":"3888:10:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1257,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"3861:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2028_$","typeString":"type(library StorageSlot)"}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3873:14:10","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1950,"src":"3861:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1924_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3861:38:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1924_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3900:5:10","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1923,"src":"3861:44:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1256,"id":1262,"nodeType":"Return","src":"3854:51:10"}]},"documentation":{"id":1252,"nodeType":"StructuredDocumentation","src":"3447:340:10","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":1264,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3801:8:10","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[],"src":"3809:2:10"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1264,"src":"3835:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1254,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3834:9:10"},"scope":1428,"src":"3792:120:10","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1294,"nodeType":"Block","src":"4039:172:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1270,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1267,"src":"4053:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4073:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4065:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1271,"name":"address","nodeType":"ElementaryTypeName","src":"4065:7:10","typeDescriptions":{}}},"id":1274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4053:22:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1284,"nodeType":"IfStatement","src":"4049:91:10","trueBody":{"id":1283,"nodeType":"Block","src":"4077:63:10","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4126:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4118:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1277,"name":"address","nodeType":"ElementaryTypeName","src":"4118:7:10","typeDescriptions":{}}},"id":1280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1276,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"4098:19:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4098:31:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1282,"nodeType":"RevertStatement","src":"4091:38:10"}]}},{"expression":{"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1288,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1251,"src":"4176:10:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1285,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"4149:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2028_$","typeString":"type(library StorageSlot)"}},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4161:14:10","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1950,"src":"4149:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1924_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4149:38:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1924_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4188:5:10","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1923,"src":"4149:44:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1291,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1267,"src":"4196:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4149:55:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1293,"nodeType":"ExpressionStatement","src":"4149:55:10"}]},"documentation":{"id":1265,"nodeType":"StructuredDocumentation","src":"3918:71:10","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":1295,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4003:9:10","nodeType":"FunctionDefinition","parameters":{"id":1268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1267,"mutability":"mutable","name":"newAdmin","nameLocation":"4021:8:10","nodeType":"VariableDeclaration","scope":1295,"src":"4013:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1266,"name":"address","nodeType":"ElementaryTypeName","src":"4013:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4012:18:10"},"returnParameters":{"id":1269,"nodeType":"ParameterList","parameters":[],"src":"4039:0:10"},"scope":1428,"src":"3994:217:10","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1311,"nodeType":"Block","src":"4379:85:10","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1302,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1264,"src":"4407:8:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4407:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1304,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"4419:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1301,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"4394:12:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4394:34:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1306,"nodeType":"EmitStatement","src":"4389:39:10"},{"expression":{"arguments":[{"id":1308,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"4448:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1307,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"4438:9:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:19:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1310,"nodeType":"ExpressionStatement","src":"4438:19:10"}]},"documentation":{"id":1296,"nodeType":"StructuredDocumentation","src":"4217:109:10","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":1312,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"4340:11:10","nodeType":"FunctionDefinition","parameters":{"id":1299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1298,"mutability":"mutable","name":"newAdmin","nameLocation":"4360:8:10","nodeType":"VariableDeclaration","scope":1312,"src":"4352:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1297,"name":"address","nodeType":"ElementaryTypeName","src":"4352:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4351:18:10"},"returnParameters":{"id":1300,"nodeType":"ParameterList","parameters":[],"src":"4379:0:10"},"scope":1428,"src":"4331:133:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1313,"nodeType":"StructuredDocumentation","src":"4470:201:10","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"id":1316,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4767:11:10","nodeType":"VariableDeclaration","scope":1428,"src":"4741:106:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1314,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4741:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":1315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4781:66:10","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":1328,"nodeType":"Block","src":"4963:69:10","statements":[{"expression":{"expression":{"arguments":[{"id":1324,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"5007:11:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1322,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"4980:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2028_$","typeString":"type(library StorageSlot)"}},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4992:14:10","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1950,"src":"4980:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1924_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:39:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1924_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5020:5:10","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1923,"src":"4980:45:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1321,"id":1327,"nodeType":"Return","src":"4973:52:10"}]},"documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"4854:51:10","text":" @dev Returns the current beacon."},"id":1329,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4919:9:10","nodeType":"FunctionDefinition","parameters":{"id":1318,"nodeType":"ParameterList","parameters":[],"src":"4928:2:10"},"returnParameters":{"id":1321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1329,"src":"4954:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1319,"name":"address","nodeType":"ElementaryTypeName","src":"4954:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4953:9:10"},"scope":1428,"src":"4910:122:10","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1374,"nodeType":"Block","src":"5161:390:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1335,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"5175:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5185:4:10","memberName":"code","nodeType":"MemberAccess","src":"5175:14:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5190:6:10","memberName":"length","nodeType":"MemberAccess","src":"5175:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5200:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5175:26:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1345,"nodeType":"IfStatement","src":"5171:95:10","trueBody":{"id":1344,"nodeType":"Block","src":"5203:63:10","statements":[{"errorCall":{"arguments":[{"id":1341,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"5245:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1340,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"5224:20:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5224:31:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1343,"nodeType":"RevertStatement","src":"5217:38:10"}]}},{"expression":{"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1349,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"5303:11:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1346,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"5276:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2028_$","typeString":"type(library StorageSlot)"}},"id":1348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5288:14:10","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1950,"src":"5276:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1924_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5276:39:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1924_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5316:5:10","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1923,"src":"5276:45:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1352,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"5324:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5276:57:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1354,"nodeType":"ExpressionStatement","src":"5276:57:10"},{"assignments":[1356],"declarations":[{"constant":false,"id":1356,"mutability":"mutable","name":"beaconImplementation","nameLocation":"5352:20:10","nodeType":"VariableDeclaration","scope":1374,"src":"5344:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1355,"name":"address","nodeType":"ElementaryTypeName","src":"5344:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1362,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1358,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"5383:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1357,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"5375:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1438_$","typeString":"type(contract IBeacon)"}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1438","typeString":"contract IBeacon"}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5394:14:10","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1437,"src":"5375:33:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:35:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5344:66:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1363,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"5424:20:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5445:4:10","memberName":"code","nodeType":"MemberAccess","src":"5424:25:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5450:6:10","memberName":"length","nodeType":"MemberAccess","src":"5424:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5460:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5424:37:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1373,"nodeType":"IfStatement","src":"5420:125:10","trueBody":{"id":1372,"nodeType":"Block","src":"5463:82:10","statements":[{"errorCall":{"arguments":[{"id":1369,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1356,"src":"5513:20:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1368,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"5484:28:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5484:50:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1371,"nodeType":"RevertStatement","src":"5477:57:10"}]}}]},"documentation":{"id":1330,"nodeType":"StructuredDocumentation","src":"5038:71:10","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":1375,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5123:10:10","nodeType":"FunctionDefinition","parameters":{"id":1333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1332,"mutability":"mutable","name":"newBeacon","nameLocation":"5142:9:10","nodeType":"VariableDeclaration","scope":1375,"src":"5134:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1331,"name":"address","nodeType":"ElementaryTypeName","src":"5134:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5133:19:10"},"returnParameters":{"id":1334,"nodeType":"ParameterList","parameters":[],"src":"5161:0:10"},"scope":1428,"src":"5114:437:10","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1412,"nodeType":"Block","src":"6155:254:10","statements":[{"expression":{"arguments":[{"id":1384,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1378,"src":"6176:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1383,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1375,"src":"6165:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6165:21:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1386,"nodeType":"ExpressionStatement","src":"6165:21:10"},{"eventCall":{"arguments":[{"id":1388,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1378,"src":"6216:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1387,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"6201:14:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6201:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1390,"nodeType":"EmitStatement","src":"6196:30:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1391,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1380,"src":"6241:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6246:6:10","memberName":"length","nodeType":"MemberAccess","src":"6241:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6255:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6241:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1410,"nodeType":"Block","src":"6360:43:10","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1407,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1427,"src":"6374:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1409,"nodeType":"ExpressionStatement","src":"6374:18:10"}]},"id":1411,"nodeType":"IfStatement","src":"6237:166:10","trueBody":{"id":1406,"nodeType":"Block","src":"6258:96:10","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1399,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1378,"src":"6309:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1398,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"6301:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1438_$","typeString":"type(contract IBeacon)"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1438","typeString":"contract IBeacon"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6320:14:10","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1437,"src":"6301:33:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:35:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1403,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1380,"src":"6338:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1395,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"6272:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1918_$","typeString":"type(library Address)"}},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6280:20:10","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1837,"src":"6272:28:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6272:71:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1405,"nodeType":"ExpressionStatement","src":"6272:71:10"}]}}]},"documentation":{"id":1376,"nodeType":"StructuredDocumentation","src":"5557:514:10","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"id":1413,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"6085:22:10","nodeType":"FunctionDefinition","parameters":{"id":1381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1378,"mutability":"mutable","name":"newBeacon","nameLocation":"6116:9:10","nodeType":"VariableDeclaration","scope":1413,"src":"6108:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1377,"name":"address","nodeType":"ElementaryTypeName","src":"6108:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1380,"mutability":"mutable","name":"data","nameLocation":"6140:4:10","nodeType":"VariableDeclaration","scope":1413,"src":"6127:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1379,"name":"bytes","nodeType":"ElementaryTypeName","src":"6127:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6107:38:10"},"returnParameters":{"id":1382,"nodeType":"ParameterList","parameters":[],"src":"6155:0:10"},"scope":1428,"src":"6076:333:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1426,"nodeType":"Block","src":"6634:86:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1417,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6648:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6652:5:10","memberName":"value","nodeType":"MemberAccess","src":"6648:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6660:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6648:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1425,"nodeType":"IfStatement","src":"6644:70:10","trueBody":{"id":1424,"nodeType":"Block","src":"6663:51:10","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1421,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"6684:17:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6684:19:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1423,"nodeType":"RevertStatement","src":"6677:26:10"}]}}]},"documentation":{"id":1414,"nodeType":"StructuredDocumentation","src":"6415:178:10","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"id":1427,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6607:16:10","nodeType":"FunctionDefinition","parameters":{"id":1415,"nodeType":"ParameterList","parameters":[],"src":"6623:2:10"},"returnParameters":{"id":1416,"nodeType":"ParameterList","parameters":[],"src":"6634:0:10"},"scope":1428,"src":"6598:122:10","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1429,"src":"449:6273:10","usedErrors":[1160,1165,1170,1173],"usedEvents":[1139,1146,1151]}],"src":"114:6609:10"},"id":10},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[1438]},"id":1439,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1430,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":1431,"nodeType":"StructuredDocumentation","src":"134:79:11","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":1438,"linearizedBaseContracts":[1438],"name":"IBeacon","nameLocation":"224:7:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1432,"nodeType":"StructuredDocumentation","src":"238:168:11","text":" @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."},"functionSelector":"5c60da1b","id":1437,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"420:14:11","nodeType":"FunctionDefinition","parameters":{"id":1433,"nodeType":"ParameterList","parameters":[],"src":"434:2:11"},"returnParameters":{"id":1436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1437,"src":"460:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1434,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"459:9:11"},"scope":1438,"src":"411:58:11","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1439,"src":"214:257:11","usedErrors":[],"usedEvents":[]}],"src":"108:364:11"},"id":11},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[1516]},"id":1517,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1440,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":1441,"nodeType":"StructuredDocumentation","src":"132:70:12","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":1516,"linearizedBaseContracts":[1516],"name":"IERC20","nameLocation":"213:6:12","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1442,"nodeType":"StructuredDocumentation","src":"226:158:12","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1450,"name":"Transfer","nameLocation":"395:8:12","nodeType":"EventDefinition","parameters":{"id":1449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1444,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"420:4:12","nodeType":"VariableDeclaration","scope":1450,"src":"404:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1443,"name":"address","nodeType":"ElementaryTypeName","src":"404:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1446,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"442:2:12","nodeType":"VariableDeclaration","scope":1450,"src":"426:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1445,"name":"address","nodeType":"ElementaryTypeName","src":"426:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1448,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"454:5:12","nodeType":"VariableDeclaration","scope":1450,"src":"446:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1447,"name":"uint256","nodeType":"ElementaryTypeName","src":"446:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"403:57:12"},"src":"389:72:12"},{"anonymous":false,"documentation":{"id":1451,"nodeType":"StructuredDocumentation","src":"467:148:12","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1459,"name":"Approval","nameLocation":"626:8:12","nodeType":"EventDefinition","parameters":{"id":1458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1453,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"651:5:12","nodeType":"VariableDeclaration","scope":1459,"src":"635:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1452,"name":"address","nodeType":"ElementaryTypeName","src":"635:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1455,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"674:7:12","nodeType":"VariableDeclaration","scope":1459,"src":"658:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1454,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1457,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"691:5:12","nodeType":"VariableDeclaration","scope":1459,"src":"683:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1456,"name":"uint256","nodeType":"ElementaryTypeName","src":"683:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"634:63:12"},"src":"620:78:12"},{"documentation":{"id":1460,"nodeType":"StructuredDocumentation","src":"704:65:12","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":1465,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:12","nodeType":"FunctionDefinition","parameters":{"id":1461,"nodeType":"ParameterList","parameters":[],"src":"794:2:12"},"returnParameters":{"id":1464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1465,"src":"820:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1462,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:12"},"scope":1516,"src":"774:55:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1466,"nodeType":"StructuredDocumentation","src":"835:71:12","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":1473,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"920:9:12","nodeType":"FunctionDefinition","parameters":{"id":1469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1468,"mutability":"mutable","name":"account","nameLocation":"938:7:12","nodeType":"VariableDeclaration","scope":1473,"src":"930:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1467,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"929:17:12"},"returnParameters":{"id":1472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1471,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1473,"src":"970:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1470,"name":"uint256","nodeType":"ElementaryTypeName","src":"970:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"969:9:12"},"scope":1516,"src":"911:68:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1474,"nodeType":"StructuredDocumentation","src":"985:213:12","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":1483,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1212:8:12","nodeType":"FunctionDefinition","parameters":{"id":1479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1476,"mutability":"mutable","name":"to","nameLocation":"1229:2:12","nodeType":"VariableDeclaration","scope":1483,"src":"1221:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1475,"name":"address","nodeType":"ElementaryTypeName","src":"1221:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1478,"mutability":"mutable","name":"value","nameLocation":"1241:5:12","nodeType":"VariableDeclaration","scope":1483,"src":"1233:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1477,"name":"uint256","nodeType":"ElementaryTypeName","src":"1233:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:27:12"},"returnParameters":{"id":1482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1483,"src":"1266:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1480,"name":"bool","nodeType":"ElementaryTypeName","src":"1266:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1265:6:12"},"scope":1516,"src":"1203:69:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1484,"nodeType":"StructuredDocumentation","src":"1278:264:12","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":1493,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1556:9:12","nodeType":"FunctionDefinition","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1486,"mutability":"mutable","name":"owner","nameLocation":"1574:5:12","nodeType":"VariableDeclaration","scope":1493,"src":"1566:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1485,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1488,"mutability":"mutable","name":"spender","nameLocation":"1589:7:12","nodeType":"VariableDeclaration","scope":1493,"src":"1581:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"1581:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1565:32:12"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1493,"src":"1621:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1490,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1620:9:12"},"scope":1516,"src":"1547:83:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1494,"nodeType":"StructuredDocumentation","src":"1636:667:12","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":1503,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2317:7:12","nodeType":"FunctionDefinition","parameters":{"id":1499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1496,"mutability":"mutable","name":"spender","nameLocation":"2333:7:12","nodeType":"VariableDeclaration","scope":1503,"src":"2325:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1495,"name":"address","nodeType":"ElementaryTypeName","src":"2325:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1498,"mutability":"mutable","name":"value","nameLocation":"2350:5:12","nodeType":"VariableDeclaration","scope":1503,"src":"2342:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2324:32:12"},"returnParameters":{"id":1502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1501,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1503,"src":"2375:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1500,"name":"bool","nodeType":"ElementaryTypeName","src":"2375:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2374:6:12"},"scope":1516,"src":"2308:73:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1504,"nodeType":"StructuredDocumentation","src":"2387:297:12","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":1515,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2698:12:12","nodeType":"FunctionDefinition","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1506,"mutability":"mutable","name":"from","nameLocation":"2719:4:12","nodeType":"VariableDeclaration","scope":1515,"src":"2711:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1505,"name":"address","nodeType":"ElementaryTypeName","src":"2711:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1508,"mutability":"mutable","name":"to","nameLocation":"2733:2:12","nodeType":"VariableDeclaration","scope":1515,"src":"2725:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1507,"name":"address","nodeType":"ElementaryTypeName","src":"2725:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"value","nameLocation":"2745:5:12","nodeType":"VariableDeclaration","scope":1515,"src":"2737:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1509,"name":"uint256","nodeType":"ElementaryTypeName","src":"2737:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2710:41:12"},"returnParameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1515,"src":"2770:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1512,"name":"bool","nodeType":"ElementaryTypeName","src":"2770:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2769:6:12"},"scope":1516,"src":"2689:87:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1517,"src":"203:2575:12","usedErrors":[],"usedEvents":[1450,1459]}],"src":"106:2673:12"},"id":12},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[2040],"IERC721":[1633]},"id":1634,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1518,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:13"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":1520,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1634,"sourceUnit":2041,"src":"134:62:13","symbolAliases":[{"foreign":{"id":1519,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2040,"src":"142:7:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1522,"name":"IERC165","nameLocations":["287:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2040,"src":"287:7:13"},"id":1523,"nodeType":"InheritanceSpecifier","src":"287:7:13"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1521,"nodeType":"StructuredDocumentation","src":"198:67:13","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":1633,"linearizedBaseContracts":[1633,2040],"name":"IERC721","nameLocation":"276:7:13","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1524,"nodeType":"StructuredDocumentation","src":"301:88:13","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1532,"name":"Transfer","nameLocation":"400:8:13","nodeType":"EventDefinition","parameters":{"id":1531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1526,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"425:4:13","nodeType":"VariableDeclaration","scope":1532,"src":"409:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1525,"name":"address","nodeType":"ElementaryTypeName","src":"409:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1528,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"447:2:13","nodeType":"VariableDeclaration","scope":1532,"src":"431:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1527,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1530,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"467:7:13","nodeType":"VariableDeclaration","scope":1532,"src":"451:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1529,"name":"uint256","nodeType":"ElementaryTypeName","src":"451:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"408:67:13"},"src":"394:82:13"},{"anonymous":false,"documentation":{"id":1533,"nodeType":"StructuredDocumentation","src":"482:94:13","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1541,"name":"Approval","nameLocation":"587:8:13","nodeType":"EventDefinition","parameters":{"id":1540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1535,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"612:5:13","nodeType":"VariableDeclaration","scope":1541,"src":"596:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1534,"name":"address","nodeType":"ElementaryTypeName","src":"596:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1537,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"635:8:13","nodeType":"VariableDeclaration","scope":1541,"src":"619:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1536,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1539,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"661:7:13","nodeType":"VariableDeclaration","scope":1541,"src":"645:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1538,"name":"uint256","nodeType":"ElementaryTypeName","src":"645:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"595:74:13"},"src":"581:89:13"},{"anonymous":false,"documentation":{"id":1542,"nodeType":"StructuredDocumentation","src":"676:117:13","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":1550,"name":"ApprovalForAll","nameLocation":"804:14:13","nodeType":"EventDefinition","parameters":{"id":1549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1544,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"835:5:13","nodeType":"VariableDeclaration","scope":1550,"src":"819:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1543,"name":"address","nodeType":"ElementaryTypeName","src":"819:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1546,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"858:8:13","nodeType":"VariableDeclaration","scope":1550,"src":"842:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1545,"name":"address","nodeType":"ElementaryTypeName","src":"842:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1548,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"873:8:13","nodeType":"VariableDeclaration","scope":1550,"src":"868:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1547,"name":"bool","nodeType":"ElementaryTypeName","src":"868:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"818:64:13"},"src":"798:85:13"},{"documentation":{"id":1551,"nodeType":"StructuredDocumentation","src":"889:76:13","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":1558,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"979:9:13","nodeType":"FunctionDefinition","parameters":{"id":1554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1553,"mutability":"mutable","name":"owner","nameLocation":"997:5:13","nodeType":"VariableDeclaration","scope":1558,"src":"989:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1552,"name":"address","nodeType":"ElementaryTypeName","src":"989:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"988:15:13"},"returnParameters":{"id":1557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1556,"mutability":"mutable","name":"balance","nameLocation":"1035:7:13","nodeType":"VariableDeclaration","scope":1558,"src":"1027:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1555,"name":"uint256","nodeType":"ElementaryTypeName","src":"1027:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1026:17:13"},"scope":1633,"src":"970:74:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1559,"nodeType":"StructuredDocumentation","src":"1050:131:13","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":1566,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1195:7:13","nodeType":"FunctionDefinition","parameters":{"id":1562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1561,"mutability":"mutable","name":"tokenId","nameLocation":"1211:7:13","nodeType":"VariableDeclaration","scope":1566,"src":"1203:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1560,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1202:17:13"},"returnParameters":{"id":1565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1564,"mutability":"mutable","name":"owner","nameLocation":"1251:5:13","nodeType":"VariableDeclaration","scope":1566,"src":"1243:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1563,"name":"address","nodeType":"ElementaryTypeName","src":"1243:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1242:15:13"},"scope":1633,"src":"1186:72:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1567,"nodeType":"StructuredDocumentation","src":"1264:565:13","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n   a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":1578,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1843:16:13","nodeType":"FunctionDefinition","parameters":{"id":1576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1569,"mutability":"mutable","name":"from","nameLocation":"1868:4:13","nodeType":"VariableDeclaration","scope":1578,"src":"1860:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1568,"name":"address","nodeType":"ElementaryTypeName","src":"1860:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1571,"mutability":"mutable","name":"to","nameLocation":"1882:2:13","nodeType":"VariableDeclaration","scope":1578,"src":"1874:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1570,"name":"address","nodeType":"ElementaryTypeName","src":"1874:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1573,"mutability":"mutable","name":"tokenId","nameLocation":"1894:7:13","nodeType":"VariableDeclaration","scope":1578,"src":"1886:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1572,"name":"uint256","nodeType":"ElementaryTypeName","src":"1886:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1575,"mutability":"mutable","name":"data","nameLocation":"1918:4:13","nodeType":"VariableDeclaration","scope":1578,"src":"1903:19:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1574,"name":"bytes","nodeType":"ElementaryTypeName","src":"1903:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1859:64:13"},"returnParameters":{"id":1577,"nodeType":"ParameterList","parameters":[],"src":"1932:0:13"},"scope":1633,"src":"1834:99:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1579,"nodeType":"StructuredDocumentation","src":"1939:705:13","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n   {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n   a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":1588,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2658:16:13","nodeType":"FunctionDefinition","parameters":{"id":1586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1581,"mutability":"mutable","name":"from","nameLocation":"2683:4:13","nodeType":"VariableDeclaration","scope":1588,"src":"2675:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1580,"name":"address","nodeType":"ElementaryTypeName","src":"2675:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"to","nameLocation":"2697:2:13","nodeType":"VariableDeclaration","scope":1588,"src":"2689:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1582,"name":"address","nodeType":"ElementaryTypeName","src":"2689:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1585,"mutability":"mutable","name":"tokenId","nameLocation":"2709:7:13","nodeType":"VariableDeclaration","scope":1588,"src":"2701:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1584,"name":"uint256","nodeType":"ElementaryTypeName","src":"2701:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2674:43:13"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[],"src":"2726:0:13"},"scope":1633,"src":"2649:78:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1589,"nodeType":"StructuredDocumentation","src":"2733:732:13","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":1598,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3479:12:13","nodeType":"FunctionDefinition","parameters":{"id":1596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1591,"mutability":"mutable","name":"from","nameLocation":"3500:4:13","nodeType":"VariableDeclaration","scope":1598,"src":"3492:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1590,"name":"address","nodeType":"ElementaryTypeName","src":"3492:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1593,"mutability":"mutable","name":"to","nameLocation":"3514:2:13","nodeType":"VariableDeclaration","scope":1598,"src":"3506:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1592,"name":"address","nodeType":"ElementaryTypeName","src":"3506:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1595,"mutability":"mutable","name":"tokenId","nameLocation":"3526:7:13","nodeType":"VariableDeclaration","scope":1598,"src":"3518:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1594,"name":"uint256","nodeType":"ElementaryTypeName","src":"3518:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:43:13"},"returnParameters":{"id":1597,"nodeType":"ParameterList","parameters":[],"src":"3543:0:13"},"scope":1633,"src":"3470:74:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1599,"nodeType":"StructuredDocumentation","src":"3550:452:13","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":1606,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4016:7:13","nodeType":"FunctionDefinition","parameters":{"id":1604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1601,"mutability":"mutable","name":"to","nameLocation":"4032:2:13","nodeType":"VariableDeclaration","scope":1606,"src":"4024:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1600,"name":"address","nodeType":"ElementaryTypeName","src":"4024:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1603,"mutability":"mutable","name":"tokenId","nameLocation":"4044:7:13","nodeType":"VariableDeclaration","scope":1606,"src":"4036:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1602,"name":"uint256","nodeType":"ElementaryTypeName","src":"4036:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4023:29:13"},"returnParameters":{"id":1605,"nodeType":"ParameterList","parameters":[],"src":"4061:0:13"},"scope":1633,"src":"4007:55:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1607,"nodeType":"StructuredDocumentation","src":"4068:315:13","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":1614,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4397:17:13","nodeType":"FunctionDefinition","parameters":{"id":1612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1609,"mutability":"mutable","name":"operator","nameLocation":"4423:8:13","nodeType":"VariableDeclaration","scope":1614,"src":"4415:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1608,"name":"address","nodeType":"ElementaryTypeName","src":"4415:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1611,"mutability":"mutable","name":"approved","nameLocation":"4438:8:13","nodeType":"VariableDeclaration","scope":1614,"src":"4433:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1610,"name":"bool","nodeType":"ElementaryTypeName","src":"4433:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4414:33:13"},"returnParameters":{"id":1613,"nodeType":"ParameterList","parameters":[],"src":"4456:0:13"},"scope":1633,"src":"4388:69:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1615,"nodeType":"StructuredDocumentation","src":"4463:139:13","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":1622,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4616:11:13","nodeType":"FunctionDefinition","parameters":{"id":1618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1617,"mutability":"mutable","name":"tokenId","nameLocation":"4636:7:13","nodeType":"VariableDeclaration","scope":1622,"src":"4628:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1616,"name":"uint256","nodeType":"ElementaryTypeName","src":"4628:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4627:17:13"},"returnParameters":{"id":1621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1620,"mutability":"mutable","name":"operator","nameLocation":"4676:8:13","nodeType":"VariableDeclaration","scope":1622,"src":"4668:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1619,"name":"address","nodeType":"ElementaryTypeName","src":"4668:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4667:18:13"},"scope":1633,"src":"4607:79:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1623,"nodeType":"StructuredDocumentation","src":"4692:138:13","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":1632,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4844:16:13","nodeType":"FunctionDefinition","parameters":{"id":1628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1625,"mutability":"mutable","name":"owner","nameLocation":"4869:5:13","nodeType":"VariableDeclaration","scope":1632,"src":"4861:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1624,"name":"address","nodeType":"ElementaryTypeName","src":"4861:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1627,"mutability":"mutable","name":"operator","nameLocation":"4884:8:13","nodeType":"VariableDeclaration","scope":1632,"src":"4876:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1626,"name":"address","nodeType":"ElementaryTypeName","src":"4876:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4860:33:13"},"returnParameters":{"id":1631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1630,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1632,"src":"4917:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1629,"name":"bool","nodeType":"ElementaryTypeName","src":"4917:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4916:6:13"},"scope":1633,"src":"4835:88:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1634,"src":"266:4659:13","usedErrors":[],"usedEvents":[1532,1541,1550]}],"src":"108:4818:13"},"id":13},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","exportedSymbols":{"IERC721":[1633],"IERC721Enumerable":[1665]},"id":1666,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1635,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"129:24:14"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":1637,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1666,"sourceUnit":1634,"src":"155:39:14","symbolAliases":[{"foreign":{"id":1636,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1633,"src":"163:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1639,"name":"IERC721","nameLocations":["364:7:14"],"nodeType":"IdentifierPath","referencedDeclaration":1633,"src":"364:7:14"},"id":1640,"nodeType":"InheritanceSpecifier","src":"364:7:14"}],"canonicalName":"IERC721Enumerable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1638,"nodeType":"StructuredDocumentation","src":"196:136:14","text":" @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":1665,"linearizedBaseContracts":[1665,1633,2040],"name":"IERC721Enumerable","nameLocation":"343:17:14","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1641,"nodeType":"StructuredDocumentation","src":"378:82:14","text":" @dev Returns the total amount of tokens stored by the contract."},"functionSelector":"18160ddd","id":1646,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"474:11:14","nodeType":"FunctionDefinition","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[],"src":"485:2:14"},"returnParameters":{"id":1645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1644,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1646,"src":"511:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1643,"name":"uint256","nodeType":"ElementaryTypeName","src":"511:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"510:9:14"},"scope":1665,"src":"465:55:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1647,"nodeType":"StructuredDocumentation","src":"526:171:14","text":" @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"functionSelector":"2f745c59","id":1656,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"711:19:14","nodeType":"FunctionDefinition","parameters":{"id":1652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1649,"mutability":"mutable","name":"owner","nameLocation":"739:5:14","nodeType":"VariableDeclaration","scope":1656,"src":"731:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1648,"name":"address","nodeType":"ElementaryTypeName","src":"731:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1651,"mutability":"mutable","name":"index","nameLocation":"754:5:14","nodeType":"VariableDeclaration","scope":1656,"src":"746:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1650,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"730:30:14"},"returnParameters":{"id":1655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1656,"src":"784:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1653,"name":"uint256","nodeType":"ElementaryTypeName","src":"784:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"783:9:14"},"scope":1665,"src":"702:91:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1657,"nodeType":"StructuredDocumentation","src":"799:164:14","text":" @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens."},"functionSelector":"4f6ccce7","id":1664,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"977:12:14","nodeType":"FunctionDefinition","parameters":{"id":1660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1659,"mutability":"mutable","name":"index","nameLocation":"998:5:14","nodeType":"VariableDeclaration","scope":1664,"src":"990:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1658,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"989:15:14"},"returnParameters":{"id":1663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1664,"src":"1028:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1661,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1027:9:14"},"scope":1665,"src":"968:69:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1666,"src":"333:706:14","usedErrors":[],"usedEvents":[1532,1541,1550]}],"src":"129:911:14"},"id":14},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[1918]},"id":1919,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1667,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:15"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1668,"nodeType":"StructuredDocumentation","src":"127:67:15","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1918,"linearizedBaseContracts":[1918],"name":"Address","nameLocation":"203:7:15","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1669,"nodeType":"StructuredDocumentation","src":"217:94:15","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cd786059","id":1673,"name":"AddressInsufficientBalance","nameLocation":"322:26:15","nodeType":"ErrorDefinition","parameters":{"id":1672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"account","nameLocation":"357:7:15","nodeType":"VariableDeclaration","scope":1673,"src":"349:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"348:17:15"},"src":"316:50:15"},{"documentation":{"id":1674,"nodeType":"StructuredDocumentation","src":"372:75:15","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":1678,"name":"AddressEmptyCode","nameLocation":"458:16:15","nodeType":"ErrorDefinition","parameters":{"id":1677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1676,"mutability":"mutable","name":"target","nameLocation":"483:6:15","nodeType":"VariableDeclaration","scope":1678,"src":"475:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1675,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"474:16:15"},"src":"452:39:15"},{"documentation":{"id":1679,"nodeType":"StructuredDocumentation","src":"497:89:15","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"1425ea42","id":1681,"name":"FailedInnerCall","nameLocation":"597:15:15","nodeType":"ErrorDefinition","parameters":{"id":1680,"nodeType":"ParameterList","parameters":[],"src":"612:2:15"},"src":"591:24:15"},{"body":{"id":1721,"nodeType":"Block","src":"1602:260:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1691,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1624:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1918","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1918","typeString":"library Address"}],"id":1690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1616:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1689,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:15","typeDescriptions":{}}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1630:7:15","memberName":"balance","nodeType":"MemberAccess","src":"1616:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1694,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1686,"src":"1640:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1616:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1704,"nodeType":"IfStatement","src":"1612:109:15","trueBody":{"id":1703,"nodeType":"Block","src":"1648:73:15","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1699,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1704:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1918","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1918","typeString":"library Address"}],"id":1698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1696:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1697,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:15","typeDescriptions":{}}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1696:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1696,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"1669:26:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1669:41:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1702,"nodeType":"RevertStatement","src":"1662:48:15"}]}},{"assignments":[1706,null],"declarations":[{"constant":false,"id":1706,"mutability":"mutable","name":"success","nameLocation":"1737:7:15","nodeType":"VariableDeclaration","scope":1721,"src":"1732:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1705,"name":"bool","nodeType":"ElementaryTypeName","src":"1732:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1713,"initialValue":{"arguments":[{"hexValue":"","id":1711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1780:2:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":1707,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1684,"src":"1750:9:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1760:4:15","memberName":"call","nodeType":"MemberAccess","src":"1750:14:15","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1709,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1686,"src":"1772:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1750:29:15","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1750:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1731:52:15"},{"condition":{"id":1715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1797:8:15","subExpression":{"id":1714,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"1798:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1720,"nodeType":"IfStatement","src":"1793:63:15","trueBody":{"id":1719,"nodeType":"Block","src":"1807:49:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1716,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"1828:15:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1828:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1718,"nodeType":"RevertStatement","src":"1821:24:15"}]}}]},"documentation":{"id":1682,"nodeType":"StructuredDocumentation","src":"621:905:15","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":1722,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1540:9:15","nodeType":"FunctionDefinition","parameters":{"id":1687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1684,"mutability":"mutable","name":"recipient","nameLocation":"1566:9:15","nodeType":"VariableDeclaration","scope":1722,"src":"1550:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1683,"name":"address","nodeType":"ElementaryTypeName","src":"1550:15:15","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1686,"mutability":"mutable","name":"amount","nameLocation":"1585:6:15","nodeType":"VariableDeclaration","scope":1722,"src":"1577:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1685,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:43:15"},"returnParameters":{"id":1688,"nodeType":"ParameterList","parameters":[],"src":"1602:0:15"},"scope":1918,"src":"1531:331:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1738,"nodeType":"Block","src":"2794:62:15","statements":[{"expression":{"arguments":[{"id":1733,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1725,"src":"2833:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1734,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"2841:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2847:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1732,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"2811:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1731,"id":1737,"nodeType":"Return","src":"2804:45:15"}]},"documentation":{"id":1723,"nodeType":"StructuredDocumentation","src":"1868:832:15","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."},"id":1739,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2714:12:15","nodeType":"FunctionDefinition","parameters":{"id":1728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1725,"mutability":"mutable","name":"target","nameLocation":"2735:6:15","nodeType":"VariableDeclaration","scope":1739,"src":"2727:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1724,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1727,"mutability":"mutable","name":"data","nameLocation":"2756:4:15","nodeType":"VariableDeclaration","scope":1739,"src":"2743:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1726,"name":"bytes","nodeType":"ElementaryTypeName","src":"2743:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2726:35:15"},"returnParameters":{"id":1731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1739,"src":"2780:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1729,"name":"bytes","nodeType":"ElementaryTypeName","src":"2780:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2779:14:15"},"scope":1918,"src":"2705:151:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1784,"nodeType":"Block","src":"3293:279:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1753,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3315:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1918","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1918","typeString":"library Address"}],"id":1752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3307:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1751,"name":"address","nodeType":"ElementaryTypeName","src":"3307:7:15","typeDescriptions":{}}},"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3307:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3321:7:15","memberName":"balance","nodeType":"MemberAccess","src":"3307:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1756,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1746,"src":"3331:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3307:29:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1766,"nodeType":"IfStatement","src":"3303:108:15","trueBody":{"id":1765,"nodeType":"Block","src":"3338:73:15","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1761,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3394:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1918","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1918","typeString":"library Address"}],"id":1760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3386:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1759,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:15","typeDescriptions":{}}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3386:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1758,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"3359:26:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:41:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1764,"nodeType":"RevertStatement","src":"3352:48:15"}]}},{"assignments":[1768,1770],"declarations":[{"constant":false,"id":1768,"mutability":"mutable","name":"success","nameLocation":"3426:7:15","nodeType":"VariableDeclaration","scope":1784,"src":"3421:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1767,"name":"bool","nodeType":"ElementaryTypeName","src":"3421:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1770,"mutability":"mutable","name":"returndata","nameLocation":"3448:10:15","nodeType":"VariableDeclaration","scope":1784,"src":"3435:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1769,"name":"bytes","nodeType":"ElementaryTypeName","src":"3435:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1777,"initialValue":{"arguments":[{"id":1775,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1744,"src":"3488:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1771,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1742,"src":"3462:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3469:4:15","memberName":"call","nodeType":"MemberAccess","src":"3462:11:15","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1773,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1746,"src":"3481:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3462:25:15","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3420:73:15"},{"expression":{"arguments":[{"id":1779,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1742,"src":"3537:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1780,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1768,"src":"3545:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1781,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1770,"src":"3554:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1778,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"3510:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":1782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3510:55:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1750,"id":1783,"nodeType":"Return","src":"3503:62:15"}]},"documentation":{"id":1740,"nodeType":"StructuredDocumentation","src":"2862:313:15","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."},"id":1785,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"3189:21:15","nodeType":"FunctionDefinition","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1742,"mutability":"mutable","name":"target","nameLocation":"3219:6:15","nodeType":"VariableDeclaration","scope":1785,"src":"3211:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1741,"name":"address","nodeType":"ElementaryTypeName","src":"3211:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1744,"mutability":"mutable","name":"data","nameLocation":"3240:4:15","nodeType":"VariableDeclaration","scope":1785,"src":"3227:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1743,"name":"bytes","nodeType":"ElementaryTypeName","src":"3227:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1746,"mutability":"mutable","name":"value","nameLocation":"3254:5:15","nodeType":"VariableDeclaration","scope":1785,"src":"3246:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1745,"name":"uint256","nodeType":"ElementaryTypeName","src":"3246:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3210:50:15"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1785,"src":"3279:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1748,"name":"bytes","nodeType":"ElementaryTypeName","src":"3279:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3278:14:15"},"scope":1918,"src":"3180:392:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1810,"nodeType":"Block","src":"3811:154:15","statements":[{"assignments":[1796,1798],"declarations":[{"constant":false,"id":1796,"mutability":"mutable","name":"success","nameLocation":"3827:7:15","nodeType":"VariableDeclaration","scope":1810,"src":"3822:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1795,"name":"bool","nodeType":"ElementaryTypeName","src":"3822:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1798,"mutability":"mutable","name":"returndata","nameLocation":"3849:10:15","nodeType":"VariableDeclaration","scope":1810,"src":"3836:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1797,"name":"bytes","nodeType":"ElementaryTypeName","src":"3836:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1803,"initialValue":{"arguments":[{"id":1801,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"3881:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1799,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1788,"src":"3863:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:10:15","memberName":"staticcall","nodeType":"MemberAccess","src":"3863:17:15","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3863:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3821:65:15"},{"expression":{"arguments":[{"id":1805,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1788,"src":"3930:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1806,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1796,"src":"3938:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1807,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"3947:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1804,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"3903:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":1808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3903:55:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1794,"id":1809,"nodeType":"Return","src":"3896:62:15"}]},"documentation":{"id":1786,"nodeType":"StructuredDocumentation","src":"3578:128:15","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":1811,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3720:18:15","nodeType":"FunctionDefinition","parameters":{"id":1791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1788,"mutability":"mutable","name":"target","nameLocation":"3747:6:15","nodeType":"VariableDeclaration","scope":1811,"src":"3739:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1787,"name":"address","nodeType":"ElementaryTypeName","src":"3739:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1790,"mutability":"mutable","name":"data","nameLocation":"3768:4:15","nodeType":"VariableDeclaration","scope":1811,"src":"3755:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1789,"name":"bytes","nodeType":"ElementaryTypeName","src":"3755:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3738:35:15"},"returnParameters":{"id":1794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1811,"src":"3797:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1792,"name":"bytes","nodeType":"ElementaryTypeName","src":"3797:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3796:14:15"},"scope":1918,"src":"3711:254:15","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1836,"nodeType":"Block","src":"4203:156:15","statements":[{"assignments":[1822,1824],"declarations":[{"constant":false,"id":1822,"mutability":"mutable","name":"success","nameLocation":"4219:7:15","nodeType":"VariableDeclaration","scope":1836,"src":"4214:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1821,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1824,"mutability":"mutable","name":"returndata","nameLocation":"4241:10:15","nodeType":"VariableDeclaration","scope":1836,"src":"4228:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1823,"name":"bytes","nodeType":"ElementaryTypeName","src":"4228:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1829,"initialValue":{"arguments":[{"id":1827,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"4275:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1825,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"4255:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4262:12:15","memberName":"delegatecall","nodeType":"MemberAccess","src":"4255:19:15","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4255:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4213:67:15"},{"expression":{"arguments":[{"id":1831,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1814,"src":"4324:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1832,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1822,"src":"4332:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1833,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1824,"src":"4341:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1830,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"4297:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4297:55:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1820,"id":1835,"nodeType":"Return","src":"4290:62:15"}]},"documentation":{"id":1812,"nodeType":"StructuredDocumentation","src":"3971:130:15","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":1837,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"4115:20:15","nodeType":"FunctionDefinition","parameters":{"id":1817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1814,"mutability":"mutable","name":"target","nameLocation":"4144:6:15","nodeType":"VariableDeclaration","scope":1837,"src":"4136:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1813,"name":"address","nodeType":"ElementaryTypeName","src":"4136:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1816,"mutability":"mutable","name":"data","nameLocation":"4165:4:15","nodeType":"VariableDeclaration","scope":1837,"src":"4152:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1815,"name":"bytes","nodeType":"ElementaryTypeName","src":"4152:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4135:35:15"},"returnParameters":{"id":1820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1819,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1837,"src":"4189:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1818,"name":"bytes","nodeType":"ElementaryTypeName","src":"4189:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4188:14:15"},"scope":1918,"src":"4106:253:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1876,"nodeType":"Block","src":"4783:424:15","statements":[{"condition":{"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4797:8:15","subExpression":{"id":1849,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1842,"src":"4798:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1874,"nodeType":"Block","src":"4857:344:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1856,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"5045:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:6:15","memberName":"length","nodeType":"MemberAccess","src":"5045:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5066:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5045:22:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1860,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"5071:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5078:4:15","memberName":"code","nodeType":"MemberAccess","src":"5071:11:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5083:6:15","memberName":"length","nodeType":"MemberAccess","src":"5071:18:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5093:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5071:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5045:49:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1871,"nodeType":"IfStatement","src":"5041:119:15","trueBody":{"id":1870,"nodeType":"Block","src":"5096:64:15","statements":[{"errorCall":{"arguments":[{"id":1867,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"5138:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1866,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1678,"src":"5121:16:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1869,"nodeType":"RevertStatement","src":"5114:31:15"}]}},{"expression":{"id":1872,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"5180:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1848,"id":1873,"nodeType":"Return","src":"5173:17:15"}]},"id":1875,"nodeType":"IfStatement","src":"4793:408:15","trueBody":{"id":1855,"nodeType":"Block","src":"4807:44:15","statements":[{"expression":{"arguments":[{"id":1852,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"4829:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1851,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"4821:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4821:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1854,"nodeType":"ExpressionStatement","src":"4821:19:15"}]}}]},"documentation":{"id":1838,"nodeType":"StructuredDocumentation","src":"4365:255:15","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call."},"id":1877,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4634:26:15","nodeType":"FunctionDefinition","parameters":{"id":1845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1840,"mutability":"mutable","name":"target","nameLocation":"4678:6:15","nodeType":"VariableDeclaration","scope":1877,"src":"4670:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1839,"name":"address","nodeType":"ElementaryTypeName","src":"4670:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1842,"mutability":"mutable","name":"success","nameLocation":"4699:7:15","nodeType":"VariableDeclaration","scope":1877,"src":"4694:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1841,"name":"bool","nodeType":"ElementaryTypeName","src":"4694:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1844,"mutability":"mutable","name":"returndata","nameLocation":"4729:10:15","nodeType":"VariableDeclaration","scope":1877,"src":"4716:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1843,"name":"bytes","nodeType":"ElementaryTypeName","src":"4716:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4660:85:15"},"returnParameters":{"id":1848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1847,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1877,"src":"4769:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1846,"name":"bytes","nodeType":"ElementaryTypeName","src":"4769:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4768:14:15"},"scope":1918,"src":"4625:582:15","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1898,"nodeType":"Block","src":"5509:122:15","statements":[{"condition":{"id":1888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5523:8:15","subExpression":{"id":1887,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1880,"src":"5524:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1896,"nodeType":"Block","src":"5583:42:15","statements":[{"expression":{"id":1894,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"5604:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1886,"id":1895,"nodeType":"Return","src":"5597:17:15"}]},"id":1897,"nodeType":"IfStatement","src":"5519:106:15","trueBody":{"id":1893,"nodeType":"Block","src":"5533:44:15","statements":[{"expression":{"arguments":[{"id":1890,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"5555:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1889,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"5547:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5547:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1892,"nodeType":"ExpressionStatement","src":"5547:19:15"}]}}]},"documentation":{"id":1878,"nodeType":"StructuredDocumentation","src":"5213:189:15","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error."},"id":1899,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5416:16:15","nodeType":"FunctionDefinition","parameters":{"id":1883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1880,"mutability":"mutable","name":"success","nameLocation":"5438:7:15","nodeType":"VariableDeclaration","scope":1899,"src":"5433:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1879,"name":"bool","nodeType":"ElementaryTypeName","src":"5433:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1882,"mutability":"mutable","name":"returndata","nameLocation":"5460:10:15","nodeType":"VariableDeclaration","scope":1899,"src":"5447:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1881,"name":"bytes","nodeType":"ElementaryTypeName","src":"5447:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5432:39:15"},"returnParameters":{"id":1886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1899,"src":"5495:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1884,"name":"bytes","nodeType":"ElementaryTypeName","src":"5495:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5494:14:15"},"scope":1918,"src":"5407:224:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1916,"nodeType":"Block","src":"5798:461:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1905,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1902,"src":"5874:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5885:6:15","memberName":"length","nodeType":"MemberAccess","src":"5874:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5894:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5874:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1914,"nodeType":"Block","src":"6204:49:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1911,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"6225:15:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6225:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1913,"nodeType":"RevertStatement","src":"6218:24:15"}]},"id":1915,"nodeType":"IfStatement","src":"5870:383:15","trueBody":{"id":1910,"nodeType":"Block","src":"5897:301:15","statements":[{"AST":{"nodeType":"YulBlock","src":"6055:133:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6073:40:15","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"6102:10:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6096:5:15"},"nodeType":"YulFunctionCall","src":"6096:17:15"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"6077:15:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6141:2:15","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"6145:10:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6137:3:15"},"nodeType":"YulFunctionCall","src":"6137:19:15"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"6158:15:15"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6130:6:15"},"nodeType":"YulFunctionCall","src":"6130:44:15"},"nodeType":"YulExpressionStatement","src":"6130:44:15"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1902,"isOffset":false,"isSlot":false,"src":"6102:10:15","valueSize":1},{"declaration":1902,"isOffset":false,"isSlot":false,"src":"6145:10:15","valueSize":1}],"id":1909,"nodeType":"InlineAssembly","src":"6046:142:15"}]}}]},"documentation":{"id":1900,"nodeType":"StructuredDocumentation","src":"5637:101:15","text":" @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}."},"id":1917,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5752:7:15","nodeType":"FunctionDefinition","parameters":{"id":1903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1902,"mutability":"mutable","name":"returndata","nameLocation":"5773:10:15","nodeType":"VariableDeclaration","scope":1917,"src":"5760:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1901,"name":"bytes","nodeType":"ElementaryTypeName","src":"5760:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5759:25:15"},"returnParameters":{"id":1904,"nodeType":"ParameterList","parameters":[],"src":"5798:0:15"},"scope":1918,"src":"5743:516:15","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1919,"src":"195:6066:15","usedErrors":[1673,1678,1681],"usedEvents":[]}],"src":"101:6161:15"},"id":15},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[2028]},"id":2029,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1920,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:16"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":1921,"nodeType":"StructuredDocumentation","src":"219:1025:16","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(newImplementation.code.length > 0);\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```"},"fullyImplemented":true,"id":2028,"linearizedBaseContracts":[2028],"name":"StorageSlot","nameLocation":"1253:11:16","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":1924,"members":[{"constant":false,"id":1923,"mutability":"mutable","name":"value","nameLocation":"1308:5:16","nodeType":"VariableDeclaration","scope":1924,"src":"1300:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1922,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1278:11:16","nodeType":"StructDefinition","scope":2028,"src":"1271:49:16","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":1927,"members":[{"constant":false,"id":1926,"mutability":"mutable","name":"value","nameLocation":"1360:5:16","nodeType":"VariableDeclaration","scope":1927,"src":"1355:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1925,"name":"bool","nodeType":"ElementaryTypeName","src":"1355:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1333:11:16","nodeType":"StructDefinition","scope":2028,"src":"1326:46:16","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":1930,"members":[{"constant":false,"id":1929,"mutability":"mutable","name":"value","nameLocation":"1415:5:16","nodeType":"VariableDeclaration","scope":1930,"src":"1407:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1928,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1407:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1385:11:16","nodeType":"StructDefinition","scope":2028,"src":"1378:49:16","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":1933,"members":[{"constant":false,"id":1932,"mutability":"mutable","name":"value","nameLocation":"1470:5:16","nodeType":"VariableDeclaration","scope":1933,"src":"1462:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1440:11:16","nodeType":"StructDefinition","scope":2028,"src":"1433:49:16","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":1936,"members":[{"constant":false,"id":1935,"mutability":"mutable","name":"value","nameLocation":"1523:5:16","nodeType":"VariableDeclaration","scope":1936,"src":"1516:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1934,"name":"string","nodeType":"ElementaryTypeName","src":"1516:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1495:10:16","nodeType":"StructDefinition","scope":2028,"src":"1488:47:16","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":1939,"members":[{"constant":false,"id":1938,"mutability":"mutable","name":"value","nameLocation":"1574:5:16","nodeType":"VariableDeclaration","scope":1939,"src":"1568:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1937,"name":"bytes","nodeType":"ElementaryTypeName","src":"1568:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1548:9:16","nodeType":"StructDefinition","scope":2028,"src":"1541:45:16","visibility":"public"},{"body":{"id":1949,"nodeType":"Block","src":"1768:106:16","statements":[{"AST":{"nodeType":"YulBlock","src":"1830:38:16","statements":[{"nodeType":"YulAssignment","src":"1844:14:16","value":{"name":"slot","nodeType":"YulIdentifier","src":"1854:4:16"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"1844:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1946,"isOffset":false,"isSlot":true,"src":"1844:6:16","suffix":"slot","valueSize":1},{"declaration":1942,"isOffset":false,"isSlot":false,"src":"1854:4:16","valueSize":1}],"id":1948,"nodeType":"InlineAssembly","src":"1821:47:16"}]},"documentation":{"id":1940,"nodeType":"StructuredDocumentation","src":"1592:87:16","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":1950,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1693:14:16","nodeType":"FunctionDefinition","parameters":{"id":1943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1942,"mutability":"mutable","name":"slot","nameLocation":"1716:4:16","nodeType":"VariableDeclaration","scope":1950,"src":"1708:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1941,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1708:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1707:14:16"},"returnParameters":{"id":1947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1946,"mutability":"mutable","name":"r","nameLocation":"1765:1:16","nodeType":"VariableDeclaration","scope":1950,"src":"1745:21:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1924_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":1945,"nodeType":"UserDefinedTypeName","pathNode":{"id":1944,"name":"AddressSlot","nameLocations":["1745:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":1924,"src":"1745:11:16"},"referencedDeclaration":1924,"src":"1745:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1924_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1744:23:16"},"scope":2028,"src":"1684:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1960,"nodeType":"Block","src":"2056:106:16","statements":[{"AST":{"nodeType":"YulBlock","src":"2118:38:16","statements":[{"nodeType":"YulAssignment","src":"2132:14:16","value":{"name":"slot","nodeType":"YulIdentifier","src":"2142:4:16"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2132:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1957,"isOffset":false,"isSlot":true,"src":"2132:6:16","suffix":"slot","valueSize":1},{"declaration":1953,"isOffset":false,"isSlot":false,"src":"2142:4:16","valueSize":1}],"id":1959,"nodeType":"InlineAssembly","src":"2109:47:16"}]},"documentation":{"id":1951,"nodeType":"StructuredDocumentation","src":"1880:87:16","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":1961,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"1981:14:16","nodeType":"FunctionDefinition","parameters":{"id":1954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1953,"mutability":"mutable","name":"slot","nameLocation":"2004:4:16","nodeType":"VariableDeclaration","scope":1961,"src":"1996:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1952,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1996:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1995:14:16"},"returnParameters":{"id":1958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1957,"mutability":"mutable","name":"r","nameLocation":"2053:1:16","nodeType":"VariableDeclaration","scope":1961,"src":"2033:21:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1927_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":1956,"nodeType":"UserDefinedTypeName","pathNode":{"id":1955,"name":"BooleanSlot","nameLocations":["2033:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":1927,"src":"2033:11:16"},"referencedDeclaration":1927,"src":"2033:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1927_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2032:23:16"},"scope":2028,"src":"1972:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1971,"nodeType":"Block","src":"2344:106:16","statements":[{"AST":{"nodeType":"YulBlock","src":"2406:38:16","statements":[{"nodeType":"YulAssignment","src":"2420:14:16","value":{"name":"slot","nodeType":"YulIdentifier","src":"2430:4:16"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2420:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1968,"isOffset":false,"isSlot":true,"src":"2420:6:16","suffix":"slot","valueSize":1},{"declaration":1964,"isOffset":false,"isSlot":false,"src":"2430:4:16","valueSize":1}],"id":1970,"nodeType":"InlineAssembly","src":"2397:47:16"}]},"documentation":{"id":1962,"nodeType":"StructuredDocumentation","src":"2168:87:16","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":1972,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2269:14:16","nodeType":"FunctionDefinition","parameters":{"id":1965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1964,"mutability":"mutable","name":"slot","nameLocation":"2292:4:16","nodeType":"VariableDeclaration","scope":1972,"src":"2284:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1963,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2284:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2283:14:16"},"returnParameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"r","nameLocation":"2341:1:16","nodeType":"VariableDeclaration","scope":1972,"src":"2321:21:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1930_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":1967,"nodeType":"UserDefinedTypeName","pathNode":{"id":1966,"name":"Bytes32Slot","nameLocations":["2321:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":1930,"src":"2321:11:16"},"referencedDeclaration":1930,"src":"2321:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1930_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2320:23:16"},"scope":2028,"src":"2260:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1982,"nodeType":"Block","src":"2632:106:16","statements":[{"AST":{"nodeType":"YulBlock","src":"2694:38:16","statements":[{"nodeType":"YulAssignment","src":"2708:14:16","value":{"name":"slot","nodeType":"YulIdentifier","src":"2718:4:16"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2708:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1979,"isOffset":false,"isSlot":true,"src":"2708:6:16","suffix":"slot","valueSize":1},{"declaration":1975,"isOffset":false,"isSlot":false,"src":"2718:4:16","valueSize":1}],"id":1981,"nodeType":"InlineAssembly","src":"2685:47:16"}]},"documentation":{"id":1973,"nodeType":"StructuredDocumentation","src":"2456:87:16","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":1983,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2557:14:16","nodeType":"FunctionDefinition","parameters":{"id":1976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1975,"mutability":"mutable","name":"slot","nameLocation":"2580:4:16","nodeType":"VariableDeclaration","scope":1983,"src":"2572:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1974,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2572:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2571:14:16"},"returnParameters":{"id":1980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1979,"mutability":"mutable","name":"r","nameLocation":"2629:1:16","nodeType":"VariableDeclaration","scope":1983,"src":"2609:21:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1933_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":1978,"nodeType":"UserDefinedTypeName","pathNode":{"id":1977,"name":"Uint256Slot","nameLocations":["2609:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":1933,"src":"2609:11:16"},"referencedDeclaration":1933,"src":"2609:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1933_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2608:23:16"},"scope":2028,"src":"2548:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1993,"nodeType":"Block","src":"2917:106:16","statements":[{"AST":{"nodeType":"YulBlock","src":"2979:38:16","statements":[{"nodeType":"YulAssignment","src":"2993:14:16","value":{"name":"slot","nodeType":"YulIdentifier","src":"3003:4:16"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2993:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1990,"isOffset":false,"isSlot":true,"src":"2993:6:16","suffix":"slot","valueSize":1},{"declaration":1986,"isOffset":false,"isSlot":false,"src":"3003:4:16","valueSize":1}],"id":1992,"nodeType":"InlineAssembly","src":"2970:47:16"}]},"documentation":{"id":1984,"nodeType":"StructuredDocumentation","src":"2744:86:16","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":1994,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"2844:13:16","nodeType":"FunctionDefinition","parameters":{"id":1987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1986,"mutability":"mutable","name":"slot","nameLocation":"2866:4:16","nodeType":"VariableDeclaration","scope":1994,"src":"2858:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1985,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2858:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2857:14:16"},"returnParameters":{"id":1991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1990,"mutability":"mutable","name":"r","nameLocation":"2914:1:16","nodeType":"VariableDeclaration","scope":1994,"src":"2895:20:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1936_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":1989,"nodeType":"UserDefinedTypeName","pathNode":{"id":1988,"name":"StringSlot","nameLocations":["2895:10:16"],"nodeType":"IdentifierPath","referencedDeclaration":1936,"src":"2895:10:16"},"referencedDeclaration":1936,"src":"2895:10:16","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1936_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"2894:22:16"},"scope":2028,"src":"2835:188:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2004,"nodeType":"Block","src":"3225:112:16","statements":[{"AST":{"nodeType":"YulBlock","src":"3287:44:16","statements":[{"nodeType":"YulAssignment","src":"3301:20:16","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3311:10:16"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3301:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2001,"isOffset":false,"isSlot":true,"src":"3301:6:16","suffix":"slot","valueSize":1},{"declaration":1997,"isOffset":false,"isSlot":true,"src":"3311:10:16","suffix":"slot","valueSize":1}],"id":2003,"nodeType":"InlineAssembly","src":"3278:53:16"}]},"documentation":{"id":1995,"nodeType":"StructuredDocumentation","src":"3029:101:16","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":2005,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3144:13:16","nodeType":"FunctionDefinition","parameters":{"id":1998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1997,"mutability":"mutable","name":"store","nameLocation":"3173:5:16","nodeType":"VariableDeclaration","scope":2005,"src":"3158:20:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1996,"name":"string","nodeType":"ElementaryTypeName","src":"3158:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3157:22:16"},"returnParameters":{"id":2002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"r","nameLocation":"3222:1:16","nodeType":"VariableDeclaration","scope":2005,"src":"3203:20:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1936_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2000,"nodeType":"UserDefinedTypeName","pathNode":{"id":1999,"name":"StringSlot","nameLocations":["3203:10:16"],"nodeType":"IdentifierPath","referencedDeclaration":1936,"src":"3203:10:16"},"referencedDeclaration":1936,"src":"3203:10:16","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1936_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3202:22:16"},"scope":2028,"src":"3135:202:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2015,"nodeType":"Block","src":"3513:106:16","statements":[{"AST":{"nodeType":"YulBlock","src":"3575:38:16","statements":[{"nodeType":"YulAssignment","src":"3589:14:16","value":{"name":"slot","nodeType":"YulIdentifier","src":"3599:4:16"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3589:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2012,"isOffset":false,"isSlot":true,"src":"3589:6:16","suffix":"slot","valueSize":1},{"declaration":2008,"isOffset":false,"isSlot":false,"src":"3599:4:16","valueSize":1}],"id":2014,"nodeType":"InlineAssembly","src":"3566:47:16"}]},"documentation":{"id":2006,"nodeType":"StructuredDocumentation","src":"3343:85:16","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":2016,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3442:12:16","nodeType":"FunctionDefinition","parameters":{"id":2009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2008,"mutability":"mutable","name":"slot","nameLocation":"3463:4:16","nodeType":"VariableDeclaration","scope":2016,"src":"3455:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2007,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3455:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3454:14:16"},"returnParameters":{"id":2013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2012,"mutability":"mutable","name":"r","nameLocation":"3510:1:16","nodeType":"VariableDeclaration","scope":2016,"src":"3492:19:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1939_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2011,"nodeType":"UserDefinedTypeName","pathNode":{"id":2010,"name":"BytesSlot","nameLocations":["3492:9:16"],"nodeType":"IdentifierPath","referencedDeclaration":1939,"src":"3492:9:16"},"referencedDeclaration":1939,"src":"3492:9:16","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1939_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3491:21:16"},"scope":2028,"src":"3433:186:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2026,"nodeType":"Block","src":"3816:112:16","statements":[{"AST":{"nodeType":"YulBlock","src":"3878:44:16","statements":[{"nodeType":"YulAssignment","src":"3892:20:16","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3902:10:16"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3892:6:16"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2023,"isOffset":false,"isSlot":true,"src":"3892:6:16","suffix":"slot","valueSize":1},{"declaration":2019,"isOffset":false,"isSlot":true,"src":"3902:10:16","suffix":"slot","valueSize":1}],"id":2025,"nodeType":"InlineAssembly","src":"3869:53:16"}]},"documentation":{"id":2017,"nodeType":"StructuredDocumentation","src":"3625:99:16","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2027,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3738:12:16","nodeType":"FunctionDefinition","parameters":{"id":2020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2019,"mutability":"mutable","name":"store","nameLocation":"3765:5:16","nodeType":"VariableDeclaration","scope":2027,"src":"3751:19:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2018,"name":"bytes","nodeType":"ElementaryTypeName","src":"3751:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3750:21:16"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2023,"mutability":"mutable","name":"r","nameLocation":"3813:1:16","nodeType":"VariableDeclaration","scope":2027,"src":"3795:19:16","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1939_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2022,"nodeType":"UserDefinedTypeName","pathNode":{"id":2021,"name":"BytesSlot","nameLocations":["3795:9:16"],"nodeType":"IdentifierPath","referencedDeclaration":1939,"src":"3795:9:16"},"referencedDeclaration":1939,"src":"3795:9:16","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1939_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3794:21:16"},"scope":2028,"src":"3729:199:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2029,"src":"1245:2685:16","usedErrors":[],"usedEvents":[]}],"src":"193:3738:16"},"id":16},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2040]},"id":2041,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2030,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2031,"nodeType":"StructuredDocumentation","src":"141:279:17","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":2040,"linearizedBaseContracts":[2040],"name":"IERC165","nameLocation":"431:7:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2032,"nodeType":"StructuredDocumentation","src":"445:340:17","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":2039,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"799:17:17","nodeType":"FunctionDefinition","parameters":{"id":2035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2034,"mutability":"mutable","name":"interfaceId","nameLocation":"824:11:17","nodeType":"VariableDeclaration","scope":2039,"src":"817:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2033,"name":"bytes4","nodeType":"ElementaryTypeName","src":"817:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"816:20:17"},"returnParameters":{"id":2038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2037,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2039,"src":"860:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2036,"name":"bool","nodeType":"ElementaryTypeName","src":"860:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"859:6:17"},"scope":2040,"src":"790:76:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2041,"src":"421:447:17","usedErrors":[],"usedEvents":[]}],"src":"115:754:17"},"id":17},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[3094]},"id":3095,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2042,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:18"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":2043,"nodeType":"StructuredDocumentation","src":"129:73:18","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3094,"linearizedBaseContracts":[3094],"name":"Math","nameLocation":"211:4:18","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2044,"nodeType":"StructuredDocumentation","src":"222:50:18","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","id":2046,"name":"MathOverflowedMulDiv","nameLocation":"283:20:18","nodeType":"ErrorDefinition","parameters":{"id":2045,"nodeType":"ParameterList","parameters":[],"src":"303:2:18"},"src":"277:29:18"},{"canonicalName":"Math.Rounding","id":2051,"members":[{"id":2047,"name":"Floor","nameLocation":"336:5:18","nodeType":"EnumValue","src":"336:5:18"},{"id":2048,"name":"Ceil","nameLocation":"379:4:18","nodeType":"EnumValue","src":"379:4:18"},{"id":2049,"name":"Trunc","nameLocation":"421:5:18","nodeType":"EnumValue","src":"421:5:18"},{"id":2050,"name":"Expand","nameLocation":"451:6:18","nodeType":"EnumValue","src":"451:6:18"}],"name":"Rounding","nameLocation":"317:8:18","nodeType":"EnumDefinition","src":"312:169:18"},{"body":{"id":2082,"nodeType":"Block","src":"661:140:18","statements":[{"id":2081,"nodeType":"UncheckedBlock","src":"671:124:18","statements":[{"assignments":[2064],"declarations":[{"constant":false,"id":2064,"mutability":"mutable","name":"c","nameLocation":"703:1:18","nodeType":"VariableDeclaration","scope":2081,"src":"695:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2063,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2068,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2065,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2054,"src":"707:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2066,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2056,"src":"711:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"707:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"695:17:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2069,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"730:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2070,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2054,"src":"734:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"730:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2076,"nodeType":"IfStatement","src":"726:28:18","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"745:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"752:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2074,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"744:10:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2062,"id":2075,"nodeType":"Return","src":"737:17:18"}},{"expression":{"components":[{"hexValue":"74727565","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"776:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2078,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"782:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2079,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"775:9:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2062,"id":2080,"nodeType":"Return","src":"768:16:18"}]}]},"documentation":{"id":2052,"nodeType":"StructuredDocumentation","src":"487:93:18","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"id":2083,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"594:6:18","nodeType":"FunctionDefinition","parameters":{"id":2057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2054,"mutability":"mutable","name":"a","nameLocation":"609:1:18","nodeType":"VariableDeclaration","scope":2083,"src":"601:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2053,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2056,"mutability":"mutable","name":"b","nameLocation":"620:1:18","nodeType":"VariableDeclaration","scope":2083,"src":"612:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2055,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:18"},"returnParameters":{"id":2062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2083,"src":"646:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2058,"name":"bool","nodeType":"ElementaryTypeName","src":"646:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2083,"src":"652:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2060,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:15:18"},"scope":3094,"src":"585:216:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2110,"nodeType":"Block","src":"984:113:18","statements":[{"id":2109,"nodeType":"UncheckedBlock","src":"994:97:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2095,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"1022:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2096,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"1026:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2102,"nodeType":"IfStatement","src":"1018:28:18","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1037:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2100,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1036:10:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2094,"id":2101,"nodeType":"Return","src":"1029:17:18"}},{"expression":{"components":[{"hexValue":"74727565","id":2103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1068:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2104,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2086,"src":"1074:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2105,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"1078:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2107,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:13:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2094,"id":2108,"nodeType":"Return","src":"1060:20:18"}]}]},"documentation":{"id":2084,"nodeType":"StructuredDocumentation","src":"807:96:18","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"id":2111,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"917:6:18","nodeType":"FunctionDefinition","parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2086,"mutability":"mutable","name":"a","nameLocation":"932:1:18","nodeType":"VariableDeclaration","scope":2111,"src":"924:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2088,"mutability":"mutable","name":"b","nameLocation":"943:1:18","nodeType":"VariableDeclaration","scope":2111,"src":"935:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2087,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:22:18"},"returnParameters":{"id":2094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2111,"src":"969:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2090,"name":"bool","nodeType":"ElementaryTypeName","src":"969:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2093,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2111,"src":"975:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2092,"name":"uint256","nodeType":"ElementaryTypeName","src":"975:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"968:15:18"},"scope":3094,"src":"908:189:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2152,"nodeType":"Block","src":"1283:417:18","statements":[{"id":2151,"nodeType":"UncheckedBlock","src":"1293:401:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2123,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"1551:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1556:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:6:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2130,"nodeType":"IfStatement","src":"1547:28:18","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":2126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1567:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":2127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1573:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2128,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1566:9:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2122,"id":2129,"nodeType":"Return","src":"1559:16:18"}},{"assignments":[2132],"declarations":[{"constant":false,"id":2132,"mutability":"mutable","name":"c","nameLocation":"1597:1:18","nodeType":"VariableDeclaration","scope":2151,"src":"1589:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2131,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2136,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2133,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"1601:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2134,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2116,"src":"1605:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1601:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1589:17:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2137,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2132,"src":"1624:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2138,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"1628:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2140,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2116,"src":"1633:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:10:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2146,"nodeType":"IfStatement","src":"1620:33:18","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1644:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1651:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2144,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1643:10:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2122,"id":2145,"nodeType":"Return","src":"1636:17:18"}},{"expression":{"components":[{"hexValue":"74727565","id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1675:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2148,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2132,"src":"1681:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2149,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1674:9:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2122,"id":2150,"nodeType":"Return","src":"1667:16:18"}]}]},"documentation":{"id":2112,"nodeType":"StructuredDocumentation","src":"1103:99:18","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"id":2153,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1216:6:18","nodeType":"FunctionDefinition","parameters":{"id":2117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2114,"mutability":"mutable","name":"a","nameLocation":"1231:1:18","nodeType":"VariableDeclaration","scope":2153,"src":"1223:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2113,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2116,"mutability":"mutable","name":"b","nameLocation":"1242:1:18","nodeType":"VariableDeclaration","scope":2153,"src":"1234:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2115,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:22:18"},"returnParameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2153,"src":"1268:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2118,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2153,"src":"1274:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1267:15:18"},"scope":3094,"src":"1207:493:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2180,"nodeType":"Block","src":"1887:114:18","statements":[{"id":2179,"nodeType":"UncheckedBlock","src":"1897:98:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2165,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"1925:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1925:6:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2172,"nodeType":"IfStatement","src":"1921:29:18","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1941:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1948:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2170,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1940:10:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2164,"id":2171,"nodeType":"Return","src":"1933:17:18"}},{"expression":{"components":[{"hexValue":"74727565","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2174,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2156,"src":"1978:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2175,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"1982:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1978:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2177,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1971:13:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2164,"id":2178,"nodeType":"Return","src":"1964:20:18"}]}]},"documentation":{"id":2154,"nodeType":"StructuredDocumentation","src":"1706:100:18","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"id":2181,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1820:6:18","nodeType":"FunctionDefinition","parameters":{"id":2159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2156,"mutability":"mutable","name":"a","nameLocation":"1835:1:18","nodeType":"VariableDeclaration","scope":2181,"src":"1827:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2155,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2158,"mutability":"mutable","name":"b","nameLocation":"1846:1:18","nodeType":"VariableDeclaration","scope":2181,"src":"1838:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2157,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:22:18"},"returnParameters":{"id":2164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2181,"src":"1872:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2160,"name":"bool","nodeType":"ElementaryTypeName","src":"1872:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2181,"src":"1878:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2162,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:15:18"},"scope":3094,"src":"1811:190:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2208,"nodeType":"Block","src":"2198:114:18","statements":[{"id":2207,"nodeType":"UncheckedBlock","src":"2208:98:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2193,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"2236:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:6:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2200,"nodeType":"IfStatement","src":"2232:29:18","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2252:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2251:10:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2192,"id":2199,"nodeType":"Return","src":"2244:17:18"}},{"expression":{"components":[{"hexValue":"74727565","id":2201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2202,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"2289:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":2203,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"2293:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2289:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2205,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2282:13:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2192,"id":2206,"nodeType":"Return","src":"2275:20:18"}]}]},"documentation":{"id":2182,"nodeType":"StructuredDocumentation","src":"2007:110:18","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"id":2209,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2131:6:18","nodeType":"FunctionDefinition","parameters":{"id":2187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2184,"mutability":"mutable","name":"a","nameLocation":"2146:1:18","nodeType":"VariableDeclaration","scope":2209,"src":"2138:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2183,"name":"uint256","nodeType":"ElementaryTypeName","src":"2138:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2186,"mutability":"mutable","name":"b","nameLocation":"2157:1:18","nodeType":"VariableDeclaration","scope":2209,"src":"2149:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2185,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2137:22:18"},"returnParameters":{"id":2192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2209,"src":"2183:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2188,"name":"bool","nodeType":"ElementaryTypeName","src":"2183:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2209,"src":"2189:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2190,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2182:15:18"},"scope":3094,"src":"2122:190:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2226,"nodeType":"Block","src":"2449:37:18","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2219,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2212,"src":"2466:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2220,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2214,"src":"2470:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2466:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2223,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2214,"src":"2478:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2466:13:18","trueExpression":{"id":2222,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2212,"src":"2474:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2218,"id":2225,"nodeType":"Return","src":"2459:20:18"}]},"documentation":{"id":2210,"nodeType":"StructuredDocumentation","src":"2318:59:18","text":" @dev Returns the largest of two numbers."},"id":2227,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"2391:3:18","nodeType":"FunctionDefinition","parameters":{"id":2215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2212,"mutability":"mutable","name":"a","nameLocation":"2403:1:18","nodeType":"VariableDeclaration","scope":2227,"src":"2395:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2211,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2214,"mutability":"mutable","name":"b","nameLocation":"2414:1:18","nodeType":"VariableDeclaration","scope":2227,"src":"2406:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2213,"name":"uint256","nodeType":"ElementaryTypeName","src":"2406:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:22:18"},"returnParameters":{"id":2218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2227,"src":"2440:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2216,"name":"uint256","nodeType":"ElementaryTypeName","src":"2440:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:9:18"},"scope":3094,"src":"2382:104:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2244,"nodeType":"Block","src":"2624:37:18","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2237,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"2641:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2238,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"2645:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2641:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2241,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"2653:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2641:13:18","trueExpression":{"id":2240,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"2649:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2236,"id":2243,"nodeType":"Return","src":"2634:20:18"}]},"documentation":{"id":2228,"nodeType":"StructuredDocumentation","src":"2492:60:18","text":" @dev Returns the smallest of two numbers."},"id":2245,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"2566:3:18","nodeType":"FunctionDefinition","parameters":{"id":2233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"a","nameLocation":"2578:1:18","nodeType":"VariableDeclaration","scope":2245,"src":"2570:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2229,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2232,"mutability":"mutable","name":"b","nameLocation":"2589:1:18","nodeType":"VariableDeclaration","scope":2245,"src":"2581:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2231,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2569:22:18"},"returnParameters":{"id":2236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2235,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2245,"src":"2615:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2234,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2614:9:18"},"scope":3094,"src":"2557:104:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2267,"nodeType":"Block","src":"2845:82:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2255,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2900:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2256,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2250,"src":"2904:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2900:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2258,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2899:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2259,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"2910:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2260,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2250,"src":"2914:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2910:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2262,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2909:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":2263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2919:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2909:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2899:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2254,"id":2266,"nodeType":"Return","src":"2892:28:18"}]},"documentation":{"id":2246,"nodeType":"StructuredDocumentation","src":"2667:102:18","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":2268,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"2783:7:18","nodeType":"FunctionDefinition","parameters":{"id":2251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2248,"mutability":"mutable","name":"a","nameLocation":"2799:1:18","nodeType":"VariableDeclaration","scope":2268,"src":"2791:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2247,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2250,"mutability":"mutable","name":"b","nameLocation":"2810:1:18","nodeType":"VariableDeclaration","scope":2268,"src":"2802:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2249,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2790:22:18"},"returnParameters":{"id":2254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2253,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2268,"src":"2836:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2252,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2835:9:18"},"scope":3094,"src":"2774:153:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2301,"nodeType":"Block","src":"3219:260:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2278,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"3233:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3238:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:6:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2286,"nodeType":"IfStatement","src":"3229:127:18","trueBody":{"id":2285,"nodeType":"Block","src":"3241:115:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2281,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"3340:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2282,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"3344:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3340:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2277,"id":2284,"nodeType":"Return","src":"3333:12:18"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2287,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"3444:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3444:6:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2291,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"3458:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3458:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2294,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3457:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2295,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"3467:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3457:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3457:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3444:28:18","trueExpression":{"hexValue":"30","id":2290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2277,"id":2300,"nodeType":"Return","src":"3437:35:18"}]},"documentation":{"id":2269,"nodeType":"StructuredDocumentation","src":"2933:210:18","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":2302,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"3157:7:18","nodeType":"FunctionDefinition","parameters":{"id":2274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2271,"mutability":"mutable","name":"a","nameLocation":"3173:1:18","nodeType":"VariableDeclaration","scope":2302,"src":"3165:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2270,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2273,"mutability":"mutable","name":"b","nameLocation":"3184:1:18","nodeType":"VariableDeclaration","scope":2302,"src":"3176:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2272,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3164:22:18"},"returnParameters":{"id":2277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2302,"src":"3210:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2275,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3209:9:18"},"scope":3094,"src":"3148:331:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2427,"nodeType":"Block","src":"3901:4018:18","statements":[{"id":2426,"nodeType":"UncheckedBlock","src":"3911:4002:18","statements":[{"assignments":[2315],"declarations":[{"constant":false,"id":2315,"mutability":"mutable","name":"prod0","nameLocation":"4240:5:18","nodeType":"VariableDeclaration","scope":2426,"src":"4232:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"4232:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2319,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2316,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2305,"src":"4248:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2317,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"4252:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4232:21:18"},{"assignments":[2321],"declarations":[{"constant":false,"id":2321,"mutability":"mutable","name":"prod1","nameLocation":"4320:5:18","nodeType":"VariableDeclaration","scope":2426,"src":"4312:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2320,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2322,"nodeType":"VariableDeclarationStatement","src":"4312:13:18"},{"AST":{"nodeType":"YulBlock","src":"4392:122:18","statements":[{"nodeType":"YulVariableDeclaration","src":"4410:30:18","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4427:1:18"},{"name":"y","nodeType":"YulIdentifier","src":"4430:1:18"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4437:1:18","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4433:3:18"},"nodeType":"YulFunctionCall","src":"4433:6:18"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"4420:6:18"},"nodeType":"YulFunctionCall","src":"4420:20:18"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"4414:2:18","type":""}]},{"nodeType":"YulAssignment","src":"4457:43:18","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"4474:2:18"},{"name":"prod0","nodeType":"YulIdentifier","src":"4478:5:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4470:3:18"},"nodeType":"YulFunctionCall","src":"4470:14:18"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"4489:2:18"},{"name":"prod0","nodeType":"YulIdentifier","src":"4493:5:18"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4486:2:18"},"nodeType":"YulFunctionCall","src":"4486:13:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4466:3:18"},"nodeType":"YulFunctionCall","src":"4466:34:18"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"4457:5:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2315,"isOffset":false,"isSlot":false,"src":"4478:5:18","valueSize":1},{"declaration":2315,"isOffset":false,"isSlot":false,"src":"4493:5:18","valueSize":1},{"declaration":2321,"isOffset":false,"isSlot":false,"src":"4457:5:18","valueSize":1},{"declaration":2305,"isOffset":false,"isSlot":false,"src":"4427:1:18","valueSize":1},{"declaration":2307,"isOffset":false,"isSlot":false,"src":"4430:1:18","valueSize":1}],"id":2323,"nodeType":"InlineAssembly","src":"4383:131:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2324,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"4595:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4595:10:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2332,"nodeType":"IfStatement","src":"4591:368:18","trueBody":{"id":2331,"nodeType":"Block","src":"4607:352:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2327,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"4925:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2328,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"4933:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2313,"id":2330,"nodeType":"Return","src":"4918:26:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2333,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"5065:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":2334,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"5080:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:20:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2340,"nodeType":"IfStatement","src":"5061:88:18","trueBody":{"id":2339,"nodeType":"Block","src":"5087:62:18","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2336,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2046,"src":"5112:20:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:22:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2338,"nodeType":"RevertStatement","src":"5105:29:18"}]}},{"assignments":[2342],"declarations":[{"constant":false,"id":2342,"mutability":"mutable","name":"remainder","nameLocation":"5412:9:18","nodeType":"VariableDeclaration","scope":2426,"src":"5404:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2341,"name":"uint256","nodeType":"ElementaryTypeName","src":"5404:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2343,"nodeType":"VariableDeclarationStatement","src":"5404:17:18"},{"AST":{"nodeType":"YulBlock","src":"5444:291:18","statements":[{"nodeType":"YulAssignment","src":"5513:38:18","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5533:1:18"},{"name":"y","nodeType":"YulIdentifier","src":"5536:1:18"},{"name":"denominator","nodeType":"YulIdentifier","src":"5539:11:18"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"5526:6:18"},"nodeType":"YulFunctionCall","src":"5526:25:18"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"5513:9:18"}]},{"nodeType":"YulAssignment","src":"5633:41:18","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"5646:5:18"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"5656:9:18"},{"name":"prod0","nodeType":"YulIdentifier","src":"5667:5:18"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5653:2:18"},"nodeType":"YulFunctionCall","src":"5653:20:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5642:3:18"},"nodeType":"YulFunctionCall","src":"5642:32:18"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"5633:5:18"}]},{"nodeType":"YulAssignment","src":"5691:30:18","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"5704:5:18"},{"name":"remainder","nodeType":"YulIdentifier","src":"5711:9:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5700:3:18"},"nodeType":"YulFunctionCall","src":"5700:21:18"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"5691:5:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2309,"isOffset":false,"isSlot":false,"src":"5539:11:18","valueSize":1},{"declaration":2315,"isOffset":false,"isSlot":false,"src":"5667:5:18","valueSize":1},{"declaration":2315,"isOffset":false,"isSlot":false,"src":"5691:5:18","valueSize":1},{"declaration":2315,"isOffset":false,"isSlot":false,"src":"5704:5:18","valueSize":1},{"declaration":2321,"isOffset":false,"isSlot":false,"src":"5633:5:18","valueSize":1},{"declaration":2321,"isOffset":false,"isSlot":false,"src":"5646:5:18","valueSize":1},{"declaration":2342,"isOffset":false,"isSlot":false,"src":"5513:9:18","valueSize":1},{"declaration":2342,"isOffset":false,"isSlot":false,"src":"5656:9:18","valueSize":1},{"declaration":2342,"isOffset":false,"isSlot":false,"src":"5711:9:18","valueSize":1},{"declaration":2305,"isOffset":false,"isSlot":false,"src":"5533:1:18","valueSize":1},{"declaration":2307,"isOffset":false,"isSlot":false,"src":"5536:1:18","valueSize":1}],"id":2344,"nodeType":"InlineAssembly","src":"5435:300:18"},{"assignments":[2346],"declarations":[{"constant":false,"id":2346,"mutability":"mutable","name":"twos","nameLocation":"5947:4:18","nodeType":"VariableDeclaration","scope":2426,"src":"5939:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2345,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2353,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2347,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"5954:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2349,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"5973:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5969:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2351,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5968:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5954:31:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5939:46:18"},{"AST":{"nodeType":"YulBlock","src":"6008:362:18","statements":[{"nodeType":"YulAssignment","src":"6073:37:18","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"6092:11:18"},{"name":"twos","nodeType":"YulIdentifier","src":"6105:4:18"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6088:3:18"},"nodeType":"YulFunctionCall","src":"6088:22:18"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"6073:11:18"}]},{"nodeType":"YulAssignment","src":"6177:25:18","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"6190:5:18"},{"name":"twos","nodeType":"YulIdentifier","src":"6197:4:18"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6186:3:18"},"nodeType":"YulFunctionCall","src":"6186:16:18"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"6177:5:18"}]},{"nodeType":"YulAssignment","src":"6317:39:18","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6337:1:18","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"6340:4:18"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6333:3:18"},"nodeType":"YulFunctionCall","src":"6333:12:18"},{"name":"twos","nodeType":"YulIdentifier","src":"6347:4:18"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6329:3:18"},"nodeType":"YulFunctionCall","src":"6329:23:18"},{"kind":"number","nodeType":"YulLiteral","src":"6354:1:18","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6325:3:18"},"nodeType":"YulFunctionCall","src":"6325:31:18"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"6317:4:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2309,"isOffset":false,"isSlot":false,"src":"6073:11:18","valueSize":1},{"declaration":2309,"isOffset":false,"isSlot":false,"src":"6092:11:18","valueSize":1},{"declaration":2315,"isOffset":false,"isSlot":false,"src":"6177:5:18","valueSize":1},{"declaration":2315,"isOffset":false,"isSlot":false,"src":"6190:5:18","valueSize":1},{"declaration":2346,"isOffset":false,"isSlot":false,"src":"6105:4:18","valueSize":1},{"declaration":2346,"isOffset":false,"isSlot":false,"src":"6197:4:18","valueSize":1},{"declaration":2346,"isOffset":false,"isSlot":false,"src":"6317:4:18","valueSize":1},{"declaration":2346,"isOffset":false,"isSlot":false,"src":"6340:4:18","valueSize":1},{"declaration":2346,"isOffset":false,"isSlot":false,"src":"6347:4:18","valueSize":1}],"id":2354,"nodeType":"InlineAssembly","src":"5999:371:18"},{"expression":{"id":2359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2355,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"6436:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2356,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"6445:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2357,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2346,"src":"6453:4:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6445:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6436:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2360,"nodeType":"ExpressionStatement","src":"6436:21:18"},{"assignments":[2362],"declarations":[{"constant":false,"id":2362,"mutability":"mutable","name":"inverse","nameLocation":"6783:7:18","nodeType":"VariableDeclaration","scope":2426,"src":"6775:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2361,"name":"uint256","nodeType":"ElementaryTypeName","src":"6775:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2369,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6794:1:18","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2364,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"6798:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6794:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2366,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6793:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6813:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6793:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6775:39:18"},{"expression":{"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2370,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7031:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2372,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"7046:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2373,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7060:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7046:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7042:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7031:36:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2377,"nodeType":"ExpressionStatement","src":"7031:36:18"},{"expression":{"id":2384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2378,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7100:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2380,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"7115:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2381,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7129:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7111:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7100:36:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2385,"nodeType":"ExpressionStatement","src":"7100:36:18"},{"expression":{"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2386,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7170:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7181:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2388,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"7185:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2389,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7199:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7185:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7181:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7170:36:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2393,"nodeType":"ExpressionStatement","src":"7170:36:18"},{"expression":{"id":2400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2394,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7240:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2396,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"7255:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2397,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7269:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7255:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7251:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7240:36:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2401,"nodeType":"ExpressionStatement","src":"7240:36:18"},{"expression":{"id":2408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2402,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7310:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2404,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"7325:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2405,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7339:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7325:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7321:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7310:36:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2409,"nodeType":"ExpressionStatement","src":"7310:36:18"},{"expression":{"id":2416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2410,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7381:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7392:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2412,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2309,"src":"7396:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2413,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7410:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7396:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7392:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7381:36:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2417,"nodeType":"ExpressionStatement","src":"7381:36:18"},{"expression":{"id":2422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2418,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"7851:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2419,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"7860:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2420,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"7868:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7860:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7851:24:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2423,"nodeType":"ExpressionStatement","src":"7851:24:18"},{"expression":{"id":2424,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"7896:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2313,"id":2425,"nodeType":"Return","src":"7889:13:18"}]}]},"documentation":{"id":2303,"nodeType":"StructuredDocumentation","src":"3485:313:18","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":2428,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"3812:6:18","nodeType":"FunctionDefinition","parameters":{"id":2310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2305,"mutability":"mutable","name":"x","nameLocation":"3827:1:18","nodeType":"VariableDeclaration","scope":2428,"src":"3819:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2304,"name":"uint256","nodeType":"ElementaryTypeName","src":"3819:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2307,"mutability":"mutable","name":"y","nameLocation":"3838:1:18","nodeType":"VariableDeclaration","scope":2428,"src":"3830:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"3830:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2309,"mutability":"mutable","name":"denominator","nameLocation":"3849:11:18","nodeType":"VariableDeclaration","scope":2428,"src":"3841:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2308,"name":"uint256","nodeType":"ElementaryTypeName","src":"3841:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3818:43:18"},"returnParameters":{"id":2313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2312,"mutability":"mutable","name":"result","nameLocation":"3893:6:18","nodeType":"VariableDeclaration","scope":2428,"src":"3885:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2311,"name":"uint256","nodeType":"ElementaryTypeName","src":"3885:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3884:16:18"},"scope":3094,"src":"3803:4116:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2470,"nodeType":"Block","src":"8161:192:18","statements":[{"assignments":[2444],"declarations":[{"constant":false,"id":2444,"mutability":"mutable","name":"result","nameLocation":"8179:6:18","nodeType":"VariableDeclaration","scope":2470,"src":"8171:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2443,"name":"uint256","nodeType":"ElementaryTypeName","src":"8171:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2450,"initialValue":{"arguments":[{"id":2446,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"8195:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2447,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"8198:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2448,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2435,"src":"8201:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2445,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[2428,2471],"referencedDeclaration":2428,"src":"8188:6:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8188:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8171:42:18"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2452,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"8244:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}],"id":2451,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"8227:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2051_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8227:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2455,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"8264:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2456,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"8267:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2457,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2435,"src":"8270:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2454,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"8257:6:18","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8285:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8257:29:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8227:59:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2467,"nodeType":"IfStatement","src":"8223:101:18","trueBody":{"id":2466,"nodeType":"Block","src":"8288:36:18","statements":[{"expression":{"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2462,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2444,"src":"8302:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8312:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2465,"nodeType":"ExpressionStatement","src":"8302:11:18"}]}},{"expression":{"id":2468,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2444,"src":"8340:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2442,"id":2469,"nodeType":"Return","src":"8333:13:18"}]},"documentation":{"id":2429,"nodeType":"StructuredDocumentation","src":"7925:121:18","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2471,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"8060:6:18","nodeType":"FunctionDefinition","parameters":{"id":2439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2431,"mutability":"mutable","name":"x","nameLocation":"8075:1:18","nodeType":"VariableDeclaration","scope":2471,"src":"8067:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"8067:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2433,"mutability":"mutable","name":"y","nameLocation":"8086:1:18","nodeType":"VariableDeclaration","scope":2471,"src":"8078:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2432,"name":"uint256","nodeType":"ElementaryTypeName","src":"8078:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2435,"mutability":"mutable","name":"denominator","nameLocation":"8097:11:18","nodeType":"VariableDeclaration","scope":2471,"src":"8089:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2434,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2438,"mutability":"mutable","name":"rounding","nameLocation":"8119:8:18","nodeType":"VariableDeclaration","scope":2471,"src":"8110:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"},"typeName":{"id":2437,"nodeType":"UserDefinedTypeName","pathNode":{"id":2436,"name":"Rounding","nameLocations":["8110:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":2051,"src":"8110:8:18"},"referencedDeclaration":2051,"src":"8110:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8066:62:18"},"returnParameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2471,"src":"8152:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"8152:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8151:9:18"},"scope":3094,"src":"8051:302:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2582,"nodeType":"Block","src":"8644:1585:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2479,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"8658:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8658:6:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2485,"nodeType":"IfStatement","src":"8654:45:18","trueBody":{"id":2484,"nodeType":"Block","src":"8666:33:18","statements":[{"expression":{"hexValue":"30","id":2482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2478,"id":2483,"nodeType":"Return","src":"8680:8:18"}]}},{"assignments":[2487],"declarations":[{"constant":false,"id":2487,"mutability":"mutable","name":"result","nameLocation":"9386:6:18","nodeType":"VariableDeclaration","scope":2582,"src":"9378:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2486,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2496,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9395:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2490,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"9406:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2489,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2750,2785],"referencedDeclaration":2750,"src":"9401:4:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9401:7:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9412:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9401:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2494,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9400:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9395:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9378:36:18"},{"id":2581,"nodeType":"UncheckedBlock","src":"9815:408:18","statements":[{"expression":{"id":2506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2497,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9839:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2498,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9849:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2499,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"9858:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2500,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9862:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9849:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2503,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9848:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9848:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:35:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2507,"nodeType":"ExpressionStatement","src":"9839:35:18"},{"expression":{"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2508,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9888:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2509,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9898:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2510,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"9907:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2511,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9911:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9907:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9898:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2514,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9897:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9922:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9897:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9888:35:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2518,"nodeType":"ExpressionStatement","src":"9888:35:18"},{"expression":{"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2519,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9937:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2520,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9947:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2521,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"9956:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2522,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9960:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9956:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9947:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2525,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9946:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9971:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9946:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9937:35:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2529,"nodeType":"ExpressionStatement","src":"9937:35:18"},{"expression":{"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2530,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9986:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2531,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"9996:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2532,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"10005:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2533,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10009:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10005:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9996:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2536,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9995:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10020:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9995:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9986:35:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2540,"nodeType":"ExpressionStatement","src":"9986:35:18"},{"expression":{"id":2550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2541,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10035:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2542,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10045:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2543,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"10054:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2544,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10058:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10054:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2547,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10044:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10069:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10044:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10035:35:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2551,"nodeType":"ExpressionStatement","src":"10035:35:18"},{"expression":{"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2552,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10084:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10094:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2554,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"10103:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2555,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10107:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10094:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2558,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10093:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10118:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10093:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10084:35:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2562,"nodeType":"ExpressionStatement","src":"10084:35:18"},{"expression":{"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2563,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10133:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2564,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10143:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2565,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"10152:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2566,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10156:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10152:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10143:19:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2569,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10142:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10142:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10133:35:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2573,"nodeType":"ExpressionStatement","src":"10133:35:18"},{"expression":{"arguments":[{"id":2575,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10193:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2576,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"10201:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2577,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"10205:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10201:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2574,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2245,"src":"10189:3:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10189:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2478,"id":2580,"nodeType":"Return","src":"10182:30:18"}]}]},"documentation":{"id":2472,"nodeType":"StructuredDocumentation","src":"8359:223:18","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":2583,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:18","nodeType":"FunctionDefinition","parameters":{"id":2475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2474,"mutability":"mutable","name":"a","nameLocation":"8609:1:18","nodeType":"VariableDeclaration","scope":2583,"src":"8601:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2473,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8600:11:18"},"returnParameters":{"id":2478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2583,"src":"8635:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2476,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8634:9:18"},"scope":3094,"src":"8587:1642:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2617,"nodeType":"Block","src":"10405:164:18","statements":[{"id":2616,"nodeType":"UncheckedBlock","src":"10415:148:18","statements":[{"assignments":[2595],"declarations":[{"constant":false,"id":2595,"mutability":"mutable","name":"result","nameLocation":"10447:6:18","nodeType":"VariableDeclaration","scope":2616,"src":"10439:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2594,"name":"uint256","nodeType":"ElementaryTypeName","src":"10439:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2599,"initialValue":{"arguments":[{"id":2597,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"10461:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2596,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2583,2618],"referencedDeclaration":2583,"src":"10456:4:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10456:7:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10439:24:18"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2600,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"10484:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2602,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"10511:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}],"id":2601,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"10494:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2051_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10494:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2604,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"10524:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2605,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"10533:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2607,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"10542:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10494:49:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10494:57:18","trueExpression":{"hexValue":"31","id":2610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10546:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2613,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10493:59:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10484:68:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2593,"id":2615,"nodeType":"Return","src":"10477:75:18"}]}]},"documentation":{"id":2584,"nodeType":"StructuredDocumentation","src":"10235:89:18","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":2618,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"10338:4:18","nodeType":"FunctionDefinition","parameters":{"id":2590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2586,"mutability":"mutable","name":"a","nameLocation":"10351:1:18","nodeType":"VariableDeclaration","scope":2618,"src":"10343:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2585,"name":"uint256","nodeType":"ElementaryTypeName","src":"10343:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2589,"mutability":"mutable","name":"rounding","nameLocation":"10363:8:18","nodeType":"VariableDeclaration","scope":2618,"src":"10354:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"},"typeName":{"id":2588,"nodeType":"UserDefinedTypeName","pathNode":{"id":2587,"name":"Rounding","nameLocations":["10354:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":2051,"src":"10354:8:18"},"referencedDeclaration":2051,"src":"10354:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10342:30:18"},"returnParameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2618,"src":"10396:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10395:9:18"},"scope":3094,"src":"10329:240:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2749,"nodeType":"Block","src":"10760:922:18","statements":[{"assignments":[2627],"declarations":[{"constant":false,"id":2627,"mutability":"mutable","name":"result","nameLocation":"10778:6:18","nodeType":"VariableDeclaration","scope":2749,"src":"10770:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2626,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2629,"initialValue":{"hexValue":"30","id":2628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10770:18:18"},{"id":2746,"nodeType":"UncheckedBlock","src":"10798:855:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2630,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"10826:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10835:3:18","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10826:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10826:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2644,"nodeType":"IfStatement","src":"10822:99:18","trueBody":{"id":2643,"nodeType":"Block","src":"10844:77:18","statements":[{"expression":{"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2635,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"10862:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10872:3:18","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10862:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2638,"nodeType":"ExpressionStatement","src":"10862:13:18"},{"expression":{"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2639,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"10893:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:3:18","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10893:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2642,"nodeType":"ExpressionStatement","src":"10893:13:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2645,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"10938:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10938:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10952:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10938:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2659,"nodeType":"IfStatement","src":"10934:96:18","trueBody":{"id":2658,"nodeType":"Block","src":"10955:75:18","statements":[{"expression":{"id":2652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2650,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"10973:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10983:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10973:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2653,"nodeType":"ExpressionStatement","src":"10973:12:18"},{"expression":{"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2654,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"11003:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11013:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11003:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2657,"nodeType":"ExpressionStatement","src":"11003:12:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11047:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11056:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11047:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11061:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11047:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2674,"nodeType":"IfStatement","src":"11043:96:18","trueBody":{"id":2673,"nodeType":"Block","src":"11064:75:18","statements":[{"expression":{"id":2667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2665,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11082:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11092:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11082:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2668,"nodeType":"ExpressionStatement","src":"11082:12:18"},{"expression":{"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2669,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"11112:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11112:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2672,"nodeType":"ExpressionStatement","src":"11112:12:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2675,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11156:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11156:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11170:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11156:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2689,"nodeType":"IfStatement","src":"11152:96:18","trueBody":{"id":2688,"nodeType":"Block","src":"11173:75:18","statements":[{"expression":{"id":2682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11191:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11191:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2683,"nodeType":"ExpressionStatement","src":"11191:12:18"},{"expression":{"id":2686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2684,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"11221:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11231:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11221:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2687,"nodeType":"ExpressionStatement","src":"11221:12:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2690,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11265:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11274:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11265:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11278:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11265:14:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2704,"nodeType":"IfStatement","src":"11261:93:18","trueBody":{"id":2703,"nodeType":"Block","src":"11281:73:18","statements":[{"expression":{"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2695,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11299:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11309:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11299:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2698,"nodeType":"ExpressionStatement","src":"11299:11:18"},{"expression":{"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2699,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"11328:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11338:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11328:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2702,"nodeType":"ExpressionStatement","src":"11328:11:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2705,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11371:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11380:1:18","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11371:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11384:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11371:14:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2719,"nodeType":"IfStatement","src":"11367:93:18","trueBody":{"id":2718,"nodeType":"Block","src":"11387:73:18","statements":[{"expression":{"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2710,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11405:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11415:1:18","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11405:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2713,"nodeType":"ExpressionStatement","src":"11405:11:18"},{"expression":{"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2714,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"11434:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11444:1:18","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11434:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2717,"nodeType":"ExpressionStatement","src":"11434:11:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2720,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11477:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11486:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11477:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11490:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11477:14:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2734,"nodeType":"IfStatement","src":"11473:93:18","trueBody":{"id":2733,"nodeType":"Block","src":"11493:73:18","statements":[{"expression":{"id":2727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2725,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11511:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":2726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11521:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11511:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2728,"nodeType":"ExpressionStatement","src":"11511:11:18"},{"expression":{"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"11540:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11550:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11540:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2732,"nodeType":"ExpressionStatement","src":"11540:11:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2735,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"11583:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11592:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11583:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11596:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11583:14:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2745,"nodeType":"IfStatement","src":"11579:64:18","trueBody":{"id":2744,"nodeType":"Block","src":"11599:44:18","statements":[{"expression":{"id":2742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"11617:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11627:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11617:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2743,"nodeType":"ExpressionStatement","src":"11617:11:18"}]}}]},{"expression":{"id":2747,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"11669:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2625,"id":2748,"nodeType":"Return","src":"11662:13:18"}]},"documentation":{"id":2619,"nodeType":"StructuredDocumentation","src":"10575:119:18","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":2750,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"10708:4:18","nodeType":"FunctionDefinition","parameters":{"id":2622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2621,"mutability":"mutable","name":"value","nameLocation":"10721:5:18","nodeType":"VariableDeclaration","scope":2750,"src":"10713:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2620,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10712:15:18"},"returnParameters":{"id":2625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2624,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2750,"src":"10751:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2623,"name":"uint256","nodeType":"ElementaryTypeName","src":"10751:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10750:9:18"},"scope":3094,"src":"10699:983:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2784,"nodeType":"Block","src":"11915:168:18","statements":[{"id":2783,"nodeType":"UncheckedBlock","src":"11925:152:18","statements":[{"assignments":[2762],"declarations":[{"constant":false,"id":2762,"mutability":"mutable","name":"result","nameLocation":"11957:6:18","nodeType":"VariableDeclaration","scope":2783,"src":"11949:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2761,"name":"uint256","nodeType":"ElementaryTypeName","src":"11949:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2766,"initialValue":{"arguments":[{"id":2764,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"11971:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2763,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2750,2785],"referencedDeclaration":2750,"src":"11966:4:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11966:11:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11949:28:18"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2767,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"11998:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2769,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2756,"src":"12025:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}],"id":2768,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"12008:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2051_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12008:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2772,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"12043:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2774,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"12052:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12008:49:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12064:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12008:57:18","trueExpression":{"hexValue":"31","id":2777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12060:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2780,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12007:59:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11998:68:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2760,"id":2782,"nodeType":"Return","src":"11991:75:18"}]}]},"documentation":{"id":2751,"nodeType":"StructuredDocumentation","src":"11688:142:18","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2785,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"11844:4:18","nodeType":"FunctionDefinition","parameters":{"id":2757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2753,"mutability":"mutable","name":"value","nameLocation":"11857:5:18","nodeType":"VariableDeclaration","scope":2785,"src":"11849:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2752,"name":"uint256","nodeType":"ElementaryTypeName","src":"11849:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2756,"mutability":"mutable","name":"rounding","nameLocation":"11873:8:18","nodeType":"VariableDeclaration","scope":2785,"src":"11864:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"},"typeName":{"id":2755,"nodeType":"UserDefinedTypeName","pathNode":{"id":2754,"name":"Rounding","nameLocations":["11864:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":2051,"src":"11864:8:18"},"referencedDeclaration":2051,"src":"11864:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11848:34:18"},"returnParameters":{"id":2760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2785,"src":"11906:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2758,"name":"uint256","nodeType":"ElementaryTypeName","src":"11906:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11905:9:18"},"scope":3094,"src":"11835:248:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2913,"nodeType":"Block","src":"12276:854:18","statements":[{"assignments":[2794],"declarations":[{"constant":false,"id":2794,"mutability":"mutable","name":"result","nameLocation":"12294:6:18","nodeType":"VariableDeclaration","scope":2913,"src":"12286:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2793,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2796,"initialValue":{"hexValue":"30","id":2795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12303:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12286:18:18"},{"id":2910,"nodeType":"UncheckedBlock","src":"12314:787:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2797,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12342:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12351:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12357:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12351:8:18","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12342:17:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2813,"nodeType":"IfStatement","src":"12338:103:18","trueBody":{"id":2812,"nodeType":"Block","src":"12361:80:18","statements":[{"expression":{"id":2806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2802,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12379:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2805,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12388:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12394:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12388:8:18","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12379:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2807,"nodeType":"ExpressionStatement","src":"12379:17:18"},{"expression":{"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2808,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"12414:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12424:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12414:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2811,"nodeType":"ExpressionStatement","src":"12414:12:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2814,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12458:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12467:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12473:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12467:8:18","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12458:17:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2830,"nodeType":"IfStatement","src":"12454:103:18","trueBody":{"id":2829,"nodeType":"Block","src":"12477:80:18","statements":[{"expression":{"id":2823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12495:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12504:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12510:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12504:8:18","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12495:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2824,"nodeType":"ExpressionStatement","src":"12495:17:18"},{"expression":{"id":2827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2825,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"12530:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12540:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12530:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2828,"nodeType":"ExpressionStatement","src":"12530:12:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2831,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12574:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12589:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12583:8:18","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12574:17:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2847,"nodeType":"IfStatement","src":"12570:103:18","trueBody":{"id":2846,"nodeType":"Block","src":"12593:80:18","statements":[{"expression":{"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2836,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12611:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12620:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12620:8:18","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12611:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2841,"nodeType":"ExpressionStatement","src":"12611:17:18"},{"expression":{"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2842,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"12646:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12646:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2845,"nodeType":"ExpressionStatement","src":"12646:12:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2848,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12690:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12699:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12705:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12699:7:18","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12690:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2864,"nodeType":"IfStatement","src":"12686:100:18","trueBody":{"id":2863,"nodeType":"Block","src":"12708:78:18","statements":[{"expression":{"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2853,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12726:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12735:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12735:7:18","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12726:16:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2858,"nodeType":"ExpressionStatement","src":"12726:16:18"},{"expression":{"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2859,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"12760:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12760:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2862,"nodeType":"ExpressionStatement","src":"12760:11:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2865,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12803:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12812:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12818:1:18","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12812:7:18","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12803:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2881,"nodeType":"IfStatement","src":"12799:100:18","trueBody":{"id":2880,"nodeType":"Block","src":"12821:78:18","statements":[{"expression":{"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2870,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12839:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12854:1:18","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12848:7:18","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12839:16:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2875,"nodeType":"ExpressionStatement","src":"12839:16:18"},{"expression":{"id":2878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2876,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"12873:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12883:1:18","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12873:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2879,"nodeType":"ExpressionStatement","src":"12873:11:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12916:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12931:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12925:7:18","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12916:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2898,"nodeType":"IfStatement","src":"12912:100:18","trueBody":{"id":2897,"nodeType":"Block","src":"12934:78:18","statements":[{"expression":{"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2887,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"12952:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12961:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12967:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12961:7:18","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12952:16:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2892,"nodeType":"ExpressionStatement","src":"12952:16:18"},{"expression":{"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2893,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"12986:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12996:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12986:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2896,"nodeType":"ExpressionStatement","src":"12986:11:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2899,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"13029:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13038:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13044:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13038:7:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"13029:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2909,"nodeType":"IfStatement","src":"13025:66:18","trueBody":{"id":2908,"nodeType":"Block","src":"13047:44:18","statements":[{"expression":{"id":2906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2904,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"13065:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13075:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13065:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2907,"nodeType":"ExpressionStatement","src":"13065:11:18"}]}}]},{"expression":{"id":2911,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"13117:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2792,"id":2912,"nodeType":"Return","src":"13110:13:18"}]},"documentation":{"id":2786,"nodeType":"StructuredDocumentation","src":"12089:120:18","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":2914,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"12223:5:18","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2788,"mutability":"mutable","name":"value","nameLocation":"12237:5:18","nodeType":"VariableDeclaration","scope":2914,"src":"12229:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2787,"name":"uint256","nodeType":"ElementaryTypeName","src":"12229:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12228:15:18"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2914,"src":"12267:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2790,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12266:9:18"},"scope":3094,"src":"12214:916:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2948,"nodeType":"Block","src":"13365:170:18","statements":[{"id":2947,"nodeType":"UncheckedBlock","src":"13375:154:18","statements":[{"assignments":[2926],"declarations":[{"constant":false,"id":2926,"mutability":"mutable","name":"result","nameLocation":"13407:6:18","nodeType":"VariableDeclaration","scope":2947,"src":"13399:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2925,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2930,"initialValue":{"arguments":[{"id":2928,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"13422:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2927,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2914,2949],"referencedDeclaration":2914,"src":"13416:5:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:12:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13399:29:18"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2931,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2926,"src":"13449:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2933,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2920,"src":"13476:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}],"id":2932,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"13459:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2051_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13489:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2936,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2926,"src":"13495:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2938,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"13504:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:20:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13459:50:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13459:58:18","trueExpression":{"hexValue":"31","id":2941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13512:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2944,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13458:60:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13449:69:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2924,"id":2946,"nodeType":"Return","src":"13442:76:18"}]}]},"documentation":{"id":2915,"nodeType":"StructuredDocumentation","src":"13136:143:18","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2949,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"13293:5:18","nodeType":"FunctionDefinition","parameters":{"id":2921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2917,"mutability":"mutable","name":"value","nameLocation":"13307:5:18","nodeType":"VariableDeclaration","scope":2949,"src":"13299:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2916,"name":"uint256","nodeType":"ElementaryTypeName","src":"13299:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2920,"mutability":"mutable","name":"rounding","nameLocation":"13323:8:18","nodeType":"VariableDeclaration","scope":2949,"src":"13314:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"},"typeName":{"id":2919,"nodeType":"UserDefinedTypeName","pathNode":{"id":2918,"name":"Rounding","nameLocations":["13314:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":2051,"src":"13314:8:18"},"referencedDeclaration":2051,"src":"13314:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"13298:34:18"},"returnParameters":{"id":2924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2923,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2949,"src":"13356:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2922,"name":"uint256","nodeType":"ElementaryTypeName","src":"13356:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13355:9:18"},"scope":3094,"src":"13284:251:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3035,"nodeType":"Block","src":"13855:600:18","statements":[{"assignments":[2958],"declarations":[{"constant":false,"id":2958,"mutability":"mutable","name":"result","nameLocation":"13873:6:18","nodeType":"VariableDeclaration","scope":3035,"src":"13865:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2957,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2960,"initialValue":{"hexValue":"30","id":2959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13882:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13865:18:18"},{"id":3032,"nodeType":"UncheckedBlock","src":"13893:533:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2961,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"13921:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13930:3:18","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13921:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13936:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13921:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2975,"nodeType":"IfStatement","src":"13917:98:18","trueBody":{"id":2974,"nodeType":"Block","src":"13939:76:18","statements":[{"expression":{"id":2968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2966,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"13957:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13967:3:18","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13957:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2969,"nodeType":"ExpressionStatement","src":"13957:13:18"},{"expression":{"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2970,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"13988:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13988:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2973,"nodeType":"ExpressionStatement","src":"13988:12:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2976,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"14032:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14032:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14046:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14032:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2990,"nodeType":"IfStatement","src":"14028:95:18","trueBody":{"id":2989,"nodeType":"Block","src":"14049:74:18","statements":[{"expression":{"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2981,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"14067:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14077:2:18","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14067:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2984,"nodeType":"ExpressionStatement","src":"14067:12:18"},{"expression":{"id":2987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2985,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"14097:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14107:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14097:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2988,"nodeType":"ExpressionStatement","src":"14097:11:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2991,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"14140:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14149:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14140:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14154:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14140:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3005,"nodeType":"IfStatement","src":"14136:95:18","trueBody":{"id":3004,"nodeType":"Block","src":"14157:74:18","statements":[{"expression":{"id":2998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"14175:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14185:2:18","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14175:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2999,"nodeType":"ExpressionStatement","src":"14175:12:18"},{"expression":{"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3000,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"14205:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14215:1:18","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14205:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3003,"nodeType":"ExpressionStatement","src":"14205:11:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3006,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"14248:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14257:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14248:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14262:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14248:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3020,"nodeType":"IfStatement","src":"14244:95:18","trueBody":{"id":3019,"nodeType":"Block","src":"14265:74:18","statements":[{"expression":{"id":3013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3011,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"14283:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14293:2:18","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14283:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3014,"nodeType":"ExpressionStatement","src":"14283:12:18"},{"expression":{"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3015,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"14313:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14323:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14313:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3018,"nodeType":"ExpressionStatement","src":"14313:11:18"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3021,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"14356:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14365:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14356:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14369:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14356:14:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3031,"nodeType":"IfStatement","src":"14352:64:18","trueBody":{"id":3030,"nodeType":"Block","src":"14372:44:18","statements":[{"expression":{"id":3028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3026,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"14390:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14400:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14390:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3029,"nodeType":"ExpressionStatement","src":"14390:11:18"}]}}]},{"expression":{"id":3033,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2958,"src":"14442:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2956,"id":3034,"nodeType":"Return","src":"14435:13:18"}]},"documentation":{"id":2950,"nodeType":"StructuredDocumentation","src":"13541:246:18","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":3036,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"13801:6:18","nodeType":"FunctionDefinition","parameters":{"id":2953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2952,"mutability":"mutable","name":"value","nameLocation":"13816:5:18","nodeType":"VariableDeclaration","scope":3036,"src":"13808:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2951,"name":"uint256","nodeType":"ElementaryTypeName","src":"13808:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13807:15:18"},"returnParameters":{"id":2956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3036,"src":"13846:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2954,"name":"uint256","nodeType":"ElementaryTypeName","src":"13846:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13845:9:18"},"scope":3094,"src":"13792:663:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3073,"nodeType":"Block","src":"14692:177:18","statements":[{"id":3072,"nodeType":"UncheckedBlock","src":"14702:161:18","statements":[{"assignments":[3048],"declarations":[{"constant":false,"id":3048,"mutability":"mutable","name":"result","nameLocation":"14734:6:18","nodeType":"VariableDeclaration","scope":3072,"src":"14726:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3047,"name":"uint256","nodeType":"ElementaryTypeName","src":"14726:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3052,"initialValue":{"arguments":[{"id":3050,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3039,"src":"14750:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3049,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[3036,3074],"referencedDeclaration":3036,"src":"14743:6:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14743:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14726:30:18"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3053,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3048,"src":"14777:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3055,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3042,"src":"14804:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}],"id":3054,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"14787:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2051_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14787:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14817:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3058,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3048,"src":"14823:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":3059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14833:1:18","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"14823:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3061,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14822:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:18:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3063,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3039,"src":"14838:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:26:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14787:56:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14850:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14787:64:18","trueExpression":{"hexValue":"31","id":3066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14846:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14786:66:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14777:75:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3046,"id":3071,"nodeType":"Return","src":"14770:82:18"}]}]},"documentation":{"id":3037,"nodeType":"StructuredDocumentation","src":"14461:144:18","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3074,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"14619:6:18","nodeType":"FunctionDefinition","parameters":{"id":3043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3039,"mutability":"mutable","name":"value","nameLocation":"14634:5:18","nodeType":"VariableDeclaration","scope":3074,"src":"14626:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3038,"name":"uint256","nodeType":"ElementaryTypeName","src":"14626:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3042,"mutability":"mutable","name":"rounding","nameLocation":"14650:8:18","nodeType":"VariableDeclaration","scope":3074,"src":"14641:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"},"typeName":{"id":3041,"nodeType":"UserDefinedTypeName","pathNode":{"id":3040,"name":"Rounding","nameLocations":["14641:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":2051,"src":"14641:8:18"},"referencedDeclaration":2051,"src":"14641:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"14625:34:18"},"returnParameters":{"id":3046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3074,"src":"14683:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3044,"name":"uint256","nodeType":"ElementaryTypeName","src":"14683:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14682:9:18"},"scope":3094,"src":"14610:259:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3092,"nodeType":"Block","src":"15067:48:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3085,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3078,"src":"15090:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}],"id":3084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15084:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3083,"name":"uint8","nodeType":"ElementaryTypeName","src":"15084:5:18","typeDescriptions":{}}},"id":3086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15084:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":3087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15102:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15084:19:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15107:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15084:24:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3082,"id":3091,"nodeType":"Return","src":"15077:31:18"}]},"documentation":{"id":3075,"nodeType":"StructuredDocumentation","src":"14875:113:18","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":3093,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"15002:16:18","nodeType":"FunctionDefinition","parameters":{"id":3079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3078,"mutability":"mutable","name":"rounding","nameLocation":"15028:8:18","nodeType":"VariableDeclaration","scope":3093,"src":"15019:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"},"typeName":{"id":3077,"nodeType":"UserDefinedTypeName","pathNode":{"id":3076,"name":"Rounding","nameLocations":["15019:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":2051,"src":"15019:8:18"},"referencedDeclaration":2051,"src":"15019:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2051","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15018:19:18"},"returnParameters":{"id":3082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3093,"src":"15061:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3080,"name":"bool","nodeType":"ElementaryTypeName","src":"15061:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15060:6:18"},"scope":3094,"src":"14993:122:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3095,"src":"203:14914:18","usedErrors":[2046],"usedEvents":[]}],"src":"103:15015:18"},"id":18},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[4849]},"id":4850,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3096,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:19"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":3097,"nodeType":"StructuredDocumentation","src":"218:545:19","text":" @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":4849,"linearizedBaseContracts":[4849],"name":"SafeCast","nameLocation":"772:8:19","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3098,"nodeType":"StructuredDocumentation","src":"787:68:19","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":3104,"name":"SafeCastOverflowedUintDowncast","nameLocation":"866:30:19","nodeType":"ErrorDefinition","parameters":{"id":3103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3100,"mutability":"mutable","name":"bits","nameLocation":"903:4:19","nodeType":"VariableDeclaration","scope":3104,"src":"897:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3099,"name":"uint8","nodeType":"ElementaryTypeName","src":"897:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3102,"mutability":"mutable","name":"value","nameLocation":"917:5:19","nodeType":"VariableDeclaration","scope":3104,"src":"909:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3101,"name":"uint256","nodeType":"ElementaryTypeName","src":"909:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"896:27:19"},"src":"860:64:19"},{"documentation":{"id":3105,"nodeType":"StructuredDocumentation","src":"930:75:19","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":3109,"name":"SafeCastOverflowedIntToUint","nameLocation":"1016:27:19","nodeType":"ErrorDefinition","parameters":{"id":3108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3107,"mutability":"mutable","name":"value","nameLocation":"1051:5:19","nodeType":"VariableDeclaration","scope":3109,"src":"1044:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3106,"name":"int256","nodeType":"ElementaryTypeName","src":"1044:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1043:14:19"},"src":"1010:48:19"},{"documentation":{"id":3110,"nodeType":"StructuredDocumentation","src":"1064:67:19","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":3116,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1142:29:19","nodeType":"ErrorDefinition","parameters":{"id":3115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3112,"mutability":"mutable","name":"bits","nameLocation":"1178:4:19","nodeType":"VariableDeclaration","scope":3116,"src":"1172:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3111,"name":"uint8","nodeType":"ElementaryTypeName","src":"1172:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3114,"mutability":"mutable","name":"value","nameLocation":"1191:5:19","nodeType":"VariableDeclaration","scope":3116,"src":"1184:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3113,"name":"int256","nodeType":"ElementaryTypeName","src":"1184:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1171:26:19"},"src":"1136:62:19"},{"documentation":{"id":3117,"nodeType":"StructuredDocumentation","src":"1204:75:19","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":3121,"name":"SafeCastOverflowedUintToInt","nameLocation":"1290:27:19","nodeType":"ErrorDefinition","parameters":{"id":3120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3119,"mutability":"mutable","name":"value","nameLocation":"1326:5:19","nodeType":"VariableDeclaration","scope":3121,"src":"1318:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1318:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1317:15:19"},"src":"1284:49:19"},{"body":{"id":3148,"nodeType":"Block","src":"1690:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3129,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"1704:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1717:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3131,"name":"uint248","nodeType":"ElementaryTypeName","src":"1717:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":3130,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1712:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1712:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":3134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1726:3:19","memberName":"max","nodeType":"MemberAccess","src":"1712:17:19","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1704:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3142,"nodeType":"IfStatement","src":"1700:105:19","trueBody":{"id":3141,"nodeType":"Block","src":"1731:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":3137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1783:3:19","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":3138,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"1788:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3136,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"1752:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1752:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3140,"nodeType":"RevertStatement","src":"1745:49:19"}]}},{"expression":{"arguments":[{"id":3145,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"1829:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1821:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3143,"name":"uint248","nodeType":"ElementaryTypeName","src":"1821:7:19","typeDescriptions":{}}},"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1821:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":3128,"id":3147,"nodeType":"Return","src":"1814:21:19"}]},"documentation":{"id":3122,"nodeType":"StructuredDocumentation","src":"1339:280:19","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":3149,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1633:9:19","nodeType":"FunctionDefinition","parameters":{"id":3125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3124,"mutability":"mutable","name":"value","nameLocation":"1651:5:19","nodeType":"VariableDeclaration","scope":3149,"src":"1643:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3123,"name":"uint256","nodeType":"ElementaryTypeName","src":"1643:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1642:15:19"},"returnParameters":{"id":3128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3149,"src":"1681:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":3126,"name":"uint248","nodeType":"ElementaryTypeName","src":"1681:7:19","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1680:9:19"},"scope":4849,"src":"1624:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3176,"nodeType":"Block","src":"2199:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3157,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"2213:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2226:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3159,"name":"uint240","nodeType":"ElementaryTypeName","src":"2226:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":3158,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2221:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2221:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":3162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2235:3:19","memberName":"max","nodeType":"MemberAccess","src":"2221:17:19","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2213:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3170,"nodeType":"IfStatement","src":"2209:105:19","trueBody":{"id":3169,"nodeType":"Block","src":"2240:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":3165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2292:3:19","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":3166,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"2297:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3164,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"2261:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2261:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3168,"nodeType":"RevertStatement","src":"2254:49:19"}]}},{"expression":{"arguments":[{"id":3173,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3152,"src":"2338:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2330:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3171,"name":"uint240","nodeType":"ElementaryTypeName","src":"2330:7:19","typeDescriptions":{}}},"id":3174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2330:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":3156,"id":3175,"nodeType":"Return","src":"2323:21:19"}]},"documentation":{"id":3150,"nodeType":"StructuredDocumentation","src":"1848:280:19","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":3177,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2142:9:19","nodeType":"FunctionDefinition","parameters":{"id":3153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3152,"mutability":"mutable","name":"value","nameLocation":"2160:5:19","nodeType":"VariableDeclaration","scope":3177,"src":"2152:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3151,"name":"uint256","nodeType":"ElementaryTypeName","src":"2152:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2151:15:19"},"returnParameters":{"id":3156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3177,"src":"2190:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":3154,"name":"uint240","nodeType":"ElementaryTypeName","src":"2190:7:19","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2189:9:19"},"scope":4849,"src":"2133:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3204,"nodeType":"Block","src":"2708:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3180,"src":"2722:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2735:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3187,"name":"uint232","nodeType":"ElementaryTypeName","src":"2735:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":3186,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2730:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2730:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":3190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2744:3:19","memberName":"max","nodeType":"MemberAccess","src":"2730:17:19","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2722:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3198,"nodeType":"IfStatement","src":"2718:105:19","trueBody":{"id":3197,"nodeType":"Block","src":"2749:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":3193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2801:3:19","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":3194,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3180,"src":"2806:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3192,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"2770:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2770:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3196,"nodeType":"RevertStatement","src":"2763:49:19"}]}},{"expression":{"arguments":[{"id":3201,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3180,"src":"2847:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3200,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2839:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3199,"name":"uint232","nodeType":"ElementaryTypeName","src":"2839:7:19","typeDescriptions":{}}},"id":3202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2839:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":3184,"id":3203,"nodeType":"Return","src":"2832:21:19"}]},"documentation":{"id":3178,"nodeType":"StructuredDocumentation","src":"2357:280:19","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":3205,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2651:9:19","nodeType":"FunctionDefinition","parameters":{"id":3181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3180,"mutability":"mutable","name":"value","nameLocation":"2669:5:19","nodeType":"VariableDeclaration","scope":3205,"src":"2661:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3179,"name":"uint256","nodeType":"ElementaryTypeName","src":"2661:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2660:15:19"},"returnParameters":{"id":3184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3183,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3205,"src":"2699:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":3182,"name":"uint232","nodeType":"ElementaryTypeName","src":"2699:7:19","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2698:9:19"},"scope":4849,"src":"2642:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3232,"nodeType":"Block","src":"3217:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3213,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"3231:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3244:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3215,"name":"uint224","nodeType":"ElementaryTypeName","src":"3244:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":3214,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3239:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3239:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":3218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3253:3:19","memberName":"max","nodeType":"MemberAccess","src":"3239:17:19","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3231:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3226,"nodeType":"IfStatement","src":"3227:105:19","trueBody":{"id":3225,"nodeType":"Block","src":"3258:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":3221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3310:3:19","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":3222,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"3315:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3220,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"3279:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3279:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3224,"nodeType":"RevertStatement","src":"3272:49:19"}]}},{"expression":{"arguments":[{"id":3229,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"3356:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3348:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3227,"name":"uint224","nodeType":"ElementaryTypeName","src":"3348:7:19","typeDescriptions":{}}},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3348:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":3212,"id":3231,"nodeType":"Return","src":"3341:21:19"}]},"documentation":{"id":3206,"nodeType":"StructuredDocumentation","src":"2866:280:19","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":3233,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3160:9:19","nodeType":"FunctionDefinition","parameters":{"id":3209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3208,"mutability":"mutable","name":"value","nameLocation":"3178:5:19","nodeType":"VariableDeclaration","scope":3233,"src":"3170:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3207,"name":"uint256","nodeType":"ElementaryTypeName","src":"3170:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3169:15:19"},"returnParameters":{"id":3212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3233,"src":"3208:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":3210,"name":"uint224","nodeType":"ElementaryTypeName","src":"3208:7:19","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3207:9:19"},"scope":4849,"src":"3151:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3260,"nodeType":"Block","src":"3726:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3241,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"3740:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3753:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3243,"name":"uint216","nodeType":"ElementaryTypeName","src":"3753:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":3242,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3748:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3748:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":3246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3762:3:19","memberName":"max","nodeType":"MemberAccess","src":"3748:17:19","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3740:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3254,"nodeType":"IfStatement","src":"3736:105:19","trueBody":{"id":3253,"nodeType":"Block","src":"3767:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":3249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3819:3:19","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":3250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"3824:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3248,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"3788:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3788:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3252,"nodeType":"RevertStatement","src":"3781:49:19"}]}},{"expression":{"arguments":[{"id":3257,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"3865:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3857:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3255,"name":"uint216","nodeType":"ElementaryTypeName","src":"3857:7:19","typeDescriptions":{}}},"id":3258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3857:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":3240,"id":3259,"nodeType":"Return","src":"3850:21:19"}]},"documentation":{"id":3234,"nodeType":"StructuredDocumentation","src":"3375:280:19","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":3261,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3669:9:19","nodeType":"FunctionDefinition","parameters":{"id":3237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3236,"mutability":"mutable","name":"value","nameLocation":"3687:5:19","nodeType":"VariableDeclaration","scope":3261,"src":"3679:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3235,"name":"uint256","nodeType":"ElementaryTypeName","src":"3679:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3678:15:19"},"returnParameters":{"id":3240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3261,"src":"3717:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":3238,"name":"uint216","nodeType":"ElementaryTypeName","src":"3717:7:19","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3716:9:19"},"scope":4849,"src":"3660:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3288,"nodeType":"Block","src":"4235:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3269,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"4249:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4262:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3271,"name":"uint208","nodeType":"ElementaryTypeName","src":"4262:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":3270,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4257:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4257:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":3274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4271:3:19","memberName":"max","nodeType":"MemberAccess","src":"4257:17:19","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4249:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3282,"nodeType":"IfStatement","src":"4245:105:19","trueBody":{"id":3281,"nodeType":"Block","src":"4276:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":3277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4328:3:19","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":3278,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"4333:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3276,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"4297:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4297:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3280,"nodeType":"RevertStatement","src":"4290:49:19"}]}},{"expression":{"arguments":[{"id":3285,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"4374:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4366:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3283,"name":"uint208","nodeType":"ElementaryTypeName","src":"4366:7:19","typeDescriptions":{}}},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4366:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":3268,"id":3287,"nodeType":"Return","src":"4359:21:19"}]},"documentation":{"id":3262,"nodeType":"StructuredDocumentation","src":"3884:280:19","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":3289,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4178:9:19","nodeType":"FunctionDefinition","parameters":{"id":3265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3264,"mutability":"mutable","name":"value","nameLocation":"4196:5:19","nodeType":"VariableDeclaration","scope":3289,"src":"4188:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3263,"name":"uint256","nodeType":"ElementaryTypeName","src":"4188:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4187:15:19"},"returnParameters":{"id":3268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3289,"src":"4226:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":3266,"name":"uint208","nodeType":"ElementaryTypeName","src":"4226:7:19","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4225:9:19"},"scope":4849,"src":"4169:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3316,"nodeType":"Block","src":"4744:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3297,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"4758:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4771:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3299,"name":"uint200","nodeType":"ElementaryTypeName","src":"4771:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":3298,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4766:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4766:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":3302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4780:3:19","memberName":"max","nodeType":"MemberAccess","src":"4766:17:19","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4758:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3310,"nodeType":"IfStatement","src":"4754:105:19","trueBody":{"id":3309,"nodeType":"Block","src":"4785:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":3305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4837:3:19","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":3306,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"4842:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3304,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"4806:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4806:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3308,"nodeType":"RevertStatement","src":"4799:49:19"}]}},{"expression":{"arguments":[{"id":3313,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"4883:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4875:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3311,"name":"uint200","nodeType":"ElementaryTypeName","src":"4875:7:19","typeDescriptions":{}}},"id":3314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4875:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":3296,"id":3315,"nodeType":"Return","src":"4868:21:19"}]},"documentation":{"id":3290,"nodeType":"StructuredDocumentation","src":"4393:280:19","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":3317,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4687:9:19","nodeType":"FunctionDefinition","parameters":{"id":3293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3292,"mutability":"mutable","name":"value","nameLocation":"4705:5:19","nodeType":"VariableDeclaration","scope":3317,"src":"4697:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3291,"name":"uint256","nodeType":"ElementaryTypeName","src":"4697:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4696:15:19"},"returnParameters":{"id":3296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3295,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3317,"src":"4735:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":3294,"name":"uint200","nodeType":"ElementaryTypeName","src":"4735:7:19","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4734:9:19"},"scope":4849,"src":"4678:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3344,"nodeType":"Block","src":"5253:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3325,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3320,"src":"5267:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5280:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3327,"name":"uint192","nodeType":"ElementaryTypeName","src":"5280:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":3326,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5275:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5275:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":3330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5289:3:19","memberName":"max","nodeType":"MemberAccess","src":"5275:17:19","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5267:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3338,"nodeType":"IfStatement","src":"5263:105:19","trueBody":{"id":3337,"nodeType":"Block","src":"5294:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":3333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5346:3:19","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":3334,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3320,"src":"5351:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3332,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"5315:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5315:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3336,"nodeType":"RevertStatement","src":"5308:49:19"}]}},{"expression":{"arguments":[{"id":3341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3320,"src":"5392:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5384:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3339,"name":"uint192","nodeType":"ElementaryTypeName","src":"5384:7:19","typeDescriptions":{}}},"id":3342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5384:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":3324,"id":3343,"nodeType":"Return","src":"5377:21:19"}]},"documentation":{"id":3318,"nodeType":"StructuredDocumentation","src":"4902:280:19","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":3345,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5196:9:19","nodeType":"FunctionDefinition","parameters":{"id":3321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3320,"mutability":"mutable","name":"value","nameLocation":"5214:5:19","nodeType":"VariableDeclaration","scope":3345,"src":"5206:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3319,"name":"uint256","nodeType":"ElementaryTypeName","src":"5206:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5205:15:19"},"returnParameters":{"id":3324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3345,"src":"5244:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":3322,"name":"uint192","nodeType":"ElementaryTypeName","src":"5244:7:19","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5243:9:19"},"scope":4849,"src":"5187:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3372,"nodeType":"Block","src":"5762:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3353,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3348,"src":"5776:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5789:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3355,"name":"uint184","nodeType":"ElementaryTypeName","src":"5789:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":3354,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5784:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":3358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5798:3:19","memberName":"max","nodeType":"MemberAccess","src":"5784:17:19","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5776:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3366,"nodeType":"IfStatement","src":"5772:105:19","trueBody":{"id":3365,"nodeType":"Block","src":"5803:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":3361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5855:3:19","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":3362,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3348,"src":"5860:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3360,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"5824:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5824:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3364,"nodeType":"RevertStatement","src":"5817:49:19"}]}},{"expression":{"arguments":[{"id":3369,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3348,"src":"5901:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5893:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3367,"name":"uint184","nodeType":"ElementaryTypeName","src":"5893:7:19","typeDescriptions":{}}},"id":3370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5893:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":3352,"id":3371,"nodeType":"Return","src":"5886:21:19"}]},"documentation":{"id":3346,"nodeType":"StructuredDocumentation","src":"5411:280:19","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":3373,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5705:9:19","nodeType":"FunctionDefinition","parameters":{"id":3349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3348,"mutability":"mutable","name":"value","nameLocation":"5723:5:19","nodeType":"VariableDeclaration","scope":3373,"src":"5715:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3347,"name":"uint256","nodeType":"ElementaryTypeName","src":"5715:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5714:15:19"},"returnParameters":{"id":3352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3373,"src":"5753:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":3350,"name":"uint184","nodeType":"ElementaryTypeName","src":"5753:7:19","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5752:9:19"},"scope":4849,"src":"5696:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3400,"nodeType":"Block","src":"6271:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3376,"src":"6285:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6298:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3383,"name":"uint176","nodeType":"ElementaryTypeName","src":"6298:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":3382,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6293:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6293:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":3386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6307:3:19","memberName":"max","nodeType":"MemberAccess","src":"6293:17:19","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6285:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3394,"nodeType":"IfStatement","src":"6281:105:19","trueBody":{"id":3393,"nodeType":"Block","src":"6312:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":3389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6364:3:19","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":3390,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3376,"src":"6369:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3388,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"6333:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6333:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3392,"nodeType":"RevertStatement","src":"6326:49:19"}]}},{"expression":{"arguments":[{"id":3397,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3376,"src":"6410:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6402:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3395,"name":"uint176","nodeType":"ElementaryTypeName","src":"6402:7:19","typeDescriptions":{}}},"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6402:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":3380,"id":3399,"nodeType":"Return","src":"6395:21:19"}]},"documentation":{"id":3374,"nodeType":"StructuredDocumentation","src":"5920:280:19","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":3401,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6214:9:19","nodeType":"FunctionDefinition","parameters":{"id":3377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3376,"mutability":"mutable","name":"value","nameLocation":"6232:5:19","nodeType":"VariableDeclaration","scope":3401,"src":"6224:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3375,"name":"uint256","nodeType":"ElementaryTypeName","src":"6224:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6223:15:19"},"returnParameters":{"id":3380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3379,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3401,"src":"6262:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":3378,"name":"uint176","nodeType":"ElementaryTypeName","src":"6262:7:19","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6261:9:19"},"scope":4849,"src":"6205:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3428,"nodeType":"Block","src":"6780:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"6794:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6807:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3411,"name":"uint168","nodeType":"ElementaryTypeName","src":"6807:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":3410,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6802:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6802:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":3414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6816:3:19","memberName":"max","nodeType":"MemberAccess","src":"6802:17:19","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6794:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3422,"nodeType":"IfStatement","src":"6790:105:19","trueBody":{"id":3421,"nodeType":"Block","src":"6821:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":3417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6873:3:19","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":3418,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"6878:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3416,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"6842:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6842:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3420,"nodeType":"RevertStatement","src":"6835:49:19"}]}},{"expression":{"arguments":[{"id":3425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"6919:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6911:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3423,"name":"uint168","nodeType":"ElementaryTypeName","src":"6911:7:19","typeDescriptions":{}}},"id":3426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6911:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":3408,"id":3427,"nodeType":"Return","src":"6904:21:19"}]},"documentation":{"id":3402,"nodeType":"StructuredDocumentation","src":"6429:280:19","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":3429,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6723:9:19","nodeType":"FunctionDefinition","parameters":{"id":3405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3404,"mutability":"mutable","name":"value","nameLocation":"6741:5:19","nodeType":"VariableDeclaration","scope":3429,"src":"6733:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3403,"name":"uint256","nodeType":"ElementaryTypeName","src":"6733:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6732:15:19"},"returnParameters":{"id":3408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3429,"src":"6771:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":3406,"name":"uint168","nodeType":"ElementaryTypeName","src":"6771:7:19","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6770:9:19"},"scope":4849,"src":"6714:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3456,"nodeType":"Block","src":"7289:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"7303:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7316:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3439,"name":"uint160","nodeType":"ElementaryTypeName","src":"7316:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":3438,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7311:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7311:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":3442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7325:3:19","memberName":"max","nodeType":"MemberAccess","src":"7311:17:19","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7303:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3450,"nodeType":"IfStatement","src":"7299:105:19","trueBody":{"id":3449,"nodeType":"Block","src":"7330:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":3445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7382:3:19","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":3446,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"7387:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3444,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"7351:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7351:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3448,"nodeType":"RevertStatement","src":"7344:49:19"}]}},{"expression":{"arguments":[{"id":3453,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"7428:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7420:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3451,"name":"uint160","nodeType":"ElementaryTypeName","src":"7420:7:19","typeDescriptions":{}}},"id":3454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7420:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":3436,"id":3455,"nodeType":"Return","src":"7413:21:19"}]},"documentation":{"id":3430,"nodeType":"StructuredDocumentation","src":"6938:280:19","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":3457,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7232:9:19","nodeType":"FunctionDefinition","parameters":{"id":3433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3432,"mutability":"mutable","name":"value","nameLocation":"7250:5:19","nodeType":"VariableDeclaration","scope":3457,"src":"7242:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3431,"name":"uint256","nodeType":"ElementaryTypeName","src":"7242:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7241:15:19"},"returnParameters":{"id":3436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3457,"src":"7280:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3434,"name":"uint160","nodeType":"ElementaryTypeName","src":"7280:7:19","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7279:9:19"},"scope":4849,"src":"7223:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3484,"nodeType":"Block","src":"7798:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3465,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"7812:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7825:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":3467,"name":"uint152","nodeType":"ElementaryTypeName","src":"7825:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":3466,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7820:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7820:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":3470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7834:3:19","memberName":"max","nodeType":"MemberAccess","src":"7820:17:19","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7812:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3478,"nodeType":"IfStatement","src":"7808:105:19","trueBody":{"id":3477,"nodeType":"Block","src":"7839:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":3473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7891:3:19","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":3474,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"7896:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3472,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"7860:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7860:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3476,"nodeType":"RevertStatement","src":"7853:49:19"}]}},{"expression":{"arguments":[{"id":3481,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"7937:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7929:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":3479,"name":"uint152","nodeType":"ElementaryTypeName","src":"7929:7:19","typeDescriptions":{}}},"id":3482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7929:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":3464,"id":3483,"nodeType":"Return","src":"7922:21:19"}]},"documentation":{"id":3458,"nodeType":"StructuredDocumentation","src":"7447:280:19","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":3485,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7741:9:19","nodeType":"FunctionDefinition","parameters":{"id":3461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3460,"mutability":"mutable","name":"value","nameLocation":"7759:5:19","nodeType":"VariableDeclaration","scope":3485,"src":"7751:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3459,"name":"uint256","nodeType":"ElementaryTypeName","src":"7751:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7750:15:19"},"returnParameters":{"id":3464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3485,"src":"7789:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":3462,"name":"uint152","nodeType":"ElementaryTypeName","src":"7789:7:19","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7788:9:19"},"scope":4849,"src":"7732:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3512,"nodeType":"Block","src":"8307:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"8321:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8334:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":3495,"name":"uint144","nodeType":"ElementaryTypeName","src":"8334:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":3494,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8329:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8329:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":3498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8343:3:19","memberName":"max","nodeType":"MemberAccess","src":"8329:17:19","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8321:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3506,"nodeType":"IfStatement","src":"8317:105:19","trueBody":{"id":3505,"nodeType":"Block","src":"8348:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":3501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8400:3:19","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":3502,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"8405:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3500,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"8369:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8369:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3504,"nodeType":"RevertStatement","src":"8362:49:19"}]}},{"expression":{"arguments":[{"id":3509,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"8446:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8438:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":3507,"name":"uint144","nodeType":"ElementaryTypeName","src":"8438:7:19","typeDescriptions":{}}},"id":3510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8438:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":3492,"id":3511,"nodeType":"Return","src":"8431:21:19"}]},"documentation":{"id":3486,"nodeType":"StructuredDocumentation","src":"7956:280:19","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":3513,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8250:9:19","nodeType":"FunctionDefinition","parameters":{"id":3489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3488,"mutability":"mutable","name":"value","nameLocation":"8268:5:19","nodeType":"VariableDeclaration","scope":3513,"src":"8260:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3487,"name":"uint256","nodeType":"ElementaryTypeName","src":"8260:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8259:15:19"},"returnParameters":{"id":3492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3513,"src":"8298:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":3490,"name":"uint144","nodeType":"ElementaryTypeName","src":"8298:7:19","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8297:9:19"},"scope":4849,"src":"8241:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3540,"nodeType":"Block","src":"8816:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3521,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3516,"src":"8830:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3524,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8843:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":3523,"name":"uint136","nodeType":"ElementaryTypeName","src":"8843:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":3522,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8838:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8838:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":3526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8852:3:19","memberName":"max","nodeType":"MemberAccess","src":"8838:17:19","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8830:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3534,"nodeType":"IfStatement","src":"8826:105:19","trueBody":{"id":3533,"nodeType":"Block","src":"8857:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":3529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8909:3:19","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":3530,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3516,"src":"8914:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3528,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"8878:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8878:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3532,"nodeType":"RevertStatement","src":"8871:49:19"}]}},{"expression":{"arguments":[{"id":3537,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3516,"src":"8955:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8947:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":3535,"name":"uint136","nodeType":"ElementaryTypeName","src":"8947:7:19","typeDescriptions":{}}},"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8947:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":3520,"id":3539,"nodeType":"Return","src":"8940:21:19"}]},"documentation":{"id":3514,"nodeType":"StructuredDocumentation","src":"8465:280:19","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":3541,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8759:9:19","nodeType":"FunctionDefinition","parameters":{"id":3517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3516,"mutability":"mutable","name":"value","nameLocation":"8777:5:19","nodeType":"VariableDeclaration","scope":3541,"src":"8769:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3515,"name":"uint256","nodeType":"ElementaryTypeName","src":"8769:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8768:15:19"},"returnParameters":{"id":3520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3541,"src":"8807:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":3518,"name":"uint136","nodeType":"ElementaryTypeName","src":"8807:7:19","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8806:9:19"},"scope":4849,"src":"8750:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3568,"nodeType":"Block","src":"9325:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"9339:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9352:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":3551,"name":"uint128","nodeType":"ElementaryTypeName","src":"9352:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":3550,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9347:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9347:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":3554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9361:3:19","memberName":"max","nodeType":"MemberAccess","src":"9347:17:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9339:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3562,"nodeType":"IfStatement","src":"9335:105:19","trueBody":{"id":3561,"nodeType":"Block","src":"9366:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":3557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9418:3:19","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":3558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"9423:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3556,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"9387:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9387:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3560,"nodeType":"RevertStatement","src":"9380:49:19"}]}},{"expression":{"arguments":[{"id":3565,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"9464:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9456:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":3563,"name":"uint128","nodeType":"ElementaryTypeName","src":"9456:7:19","typeDescriptions":{}}},"id":3566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9456:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":3548,"id":3567,"nodeType":"Return","src":"9449:21:19"}]},"documentation":{"id":3542,"nodeType":"StructuredDocumentation","src":"8974:280:19","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":3569,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9268:9:19","nodeType":"FunctionDefinition","parameters":{"id":3545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3544,"mutability":"mutable","name":"value","nameLocation":"9286:5:19","nodeType":"VariableDeclaration","scope":3569,"src":"9278:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3543,"name":"uint256","nodeType":"ElementaryTypeName","src":"9278:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9277:15:19"},"returnParameters":{"id":3548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3547,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3569,"src":"9316:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3546,"name":"uint128","nodeType":"ElementaryTypeName","src":"9316:7:19","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9315:9:19"},"scope":4849,"src":"9259:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3596,"nodeType":"Block","src":"9834:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3577,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"9848:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9861:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":3579,"name":"uint120","nodeType":"ElementaryTypeName","src":"9861:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":3578,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9856:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9856:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":3582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9870:3:19","memberName":"max","nodeType":"MemberAccess","src":"9856:17:19","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9848:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3590,"nodeType":"IfStatement","src":"9844:105:19","trueBody":{"id":3589,"nodeType":"Block","src":"9875:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":3585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9927:3:19","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":3586,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"9932:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3584,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"9896:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9896:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3588,"nodeType":"RevertStatement","src":"9889:49:19"}]}},{"expression":{"arguments":[{"id":3593,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"9973:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9965:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":3591,"name":"uint120","nodeType":"ElementaryTypeName","src":"9965:7:19","typeDescriptions":{}}},"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9965:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":3576,"id":3595,"nodeType":"Return","src":"9958:21:19"}]},"documentation":{"id":3570,"nodeType":"StructuredDocumentation","src":"9483:280:19","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":3597,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9777:9:19","nodeType":"FunctionDefinition","parameters":{"id":3573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3572,"mutability":"mutable","name":"value","nameLocation":"9795:5:19","nodeType":"VariableDeclaration","scope":3597,"src":"9787:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3571,"name":"uint256","nodeType":"ElementaryTypeName","src":"9787:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9786:15:19"},"returnParameters":{"id":3576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3597,"src":"9825:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":3574,"name":"uint120","nodeType":"ElementaryTypeName","src":"9825:7:19","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9824:9:19"},"scope":4849,"src":"9768:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3624,"nodeType":"Block","src":"10343:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3605,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3600,"src":"10357:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10370:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":3607,"name":"uint112","nodeType":"ElementaryTypeName","src":"10370:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":3606,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10365:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10365:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":3610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10379:3:19","memberName":"max","nodeType":"MemberAccess","src":"10365:17:19","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10357:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3618,"nodeType":"IfStatement","src":"10353:105:19","trueBody":{"id":3617,"nodeType":"Block","src":"10384:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":3613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10436:3:19","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":3614,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3600,"src":"10441:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3612,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"10405:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10405:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3616,"nodeType":"RevertStatement","src":"10398:49:19"}]}},{"expression":{"arguments":[{"id":3621,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3600,"src":"10482:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10474:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":3619,"name":"uint112","nodeType":"ElementaryTypeName","src":"10474:7:19","typeDescriptions":{}}},"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10474:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":3604,"id":3623,"nodeType":"Return","src":"10467:21:19"}]},"documentation":{"id":3598,"nodeType":"StructuredDocumentation","src":"9992:280:19","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":3625,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10286:9:19","nodeType":"FunctionDefinition","parameters":{"id":3601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3600,"mutability":"mutable","name":"value","nameLocation":"10304:5:19","nodeType":"VariableDeclaration","scope":3625,"src":"10296:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3599,"name":"uint256","nodeType":"ElementaryTypeName","src":"10296:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10295:15:19"},"returnParameters":{"id":3604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3625,"src":"10334:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":3602,"name":"uint112","nodeType":"ElementaryTypeName","src":"10334:7:19","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10333:9:19"},"scope":4849,"src":"10277:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3652,"nodeType":"Block","src":"10852:152:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3628,"src":"10866:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10879:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":3635,"name":"uint104","nodeType":"ElementaryTypeName","src":"10879:7:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":3634,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10874:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10874:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":3638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10888:3:19","memberName":"max","nodeType":"MemberAccess","src":"10874:17:19","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10866:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3646,"nodeType":"IfStatement","src":"10862:105:19","trueBody":{"id":3645,"nodeType":"Block","src":"10893:74:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":3641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10945:3:19","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":3642,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3628,"src":"10950:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3640,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"10914:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10914:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3644,"nodeType":"RevertStatement","src":"10907:49:19"}]}},{"expression":{"arguments":[{"id":3649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3628,"src":"10991:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10983:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":3647,"name":"uint104","nodeType":"ElementaryTypeName","src":"10983:7:19","typeDescriptions":{}}},"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10983:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":3632,"id":3651,"nodeType":"Return","src":"10976:21:19"}]},"documentation":{"id":3626,"nodeType":"StructuredDocumentation","src":"10501:280:19","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":3653,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10795:9:19","nodeType":"FunctionDefinition","parameters":{"id":3629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3628,"mutability":"mutable","name":"value","nameLocation":"10813:5:19","nodeType":"VariableDeclaration","scope":3653,"src":"10805:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3627,"name":"uint256","nodeType":"ElementaryTypeName","src":"10805:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10804:15:19"},"returnParameters":{"id":3632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3631,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3653,"src":"10843:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":3630,"name":"uint104","nodeType":"ElementaryTypeName","src":"10843:7:19","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10842:9:19"},"scope":4849,"src":"10786:218:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3680,"nodeType":"Block","src":"11355:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3661,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"11369:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11382:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":3663,"name":"uint96","nodeType":"ElementaryTypeName","src":"11382:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":3662,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11377:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11377:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":3666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11390:3:19","memberName":"max","nodeType":"MemberAccess","src":"11377:16:19","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11369:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3674,"nodeType":"IfStatement","src":"11365:103:19","trueBody":{"id":3673,"nodeType":"Block","src":"11395:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":3669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11447:2:19","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":3670,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"11451:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3668,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"11416:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11416:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3672,"nodeType":"RevertStatement","src":"11409:48:19"}]}},{"expression":{"arguments":[{"id":3677,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"11491:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11484:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":3675,"name":"uint96","nodeType":"ElementaryTypeName","src":"11484:6:19","typeDescriptions":{}}},"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11484:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":3660,"id":3679,"nodeType":"Return","src":"11477:20:19"}]},"documentation":{"id":3654,"nodeType":"StructuredDocumentation","src":"11010:276:19","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":3681,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11300:8:19","nodeType":"FunctionDefinition","parameters":{"id":3657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3656,"mutability":"mutable","name":"value","nameLocation":"11317:5:19","nodeType":"VariableDeclaration","scope":3681,"src":"11309:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3655,"name":"uint256","nodeType":"ElementaryTypeName","src":"11309:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11308:15:19"},"returnParameters":{"id":3660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3659,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3681,"src":"11347:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3658,"name":"uint96","nodeType":"ElementaryTypeName","src":"11347:6:19","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11346:8:19"},"scope":4849,"src":"11291:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3708,"nodeType":"Block","src":"11855:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3689,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"11869:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11882:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":3691,"name":"uint88","nodeType":"ElementaryTypeName","src":"11882:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":3690,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11877:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11877:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":3694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11890:3:19","memberName":"max","nodeType":"MemberAccess","src":"11877:16:19","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11869:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3702,"nodeType":"IfStatement","src":"11865:103:19","trueBody":{"id":3701,"nodeType":"Block","src":"11895:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":3697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11947:2:19","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":3698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"11951:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3696,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"11916:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11916:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3700,"nodeType":"RevertStatement","src":"11909:48:19"}]}},{"expression":{"arguments":[{"id":3705,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"11991:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11984:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":3703,"name":"uint88","nodeType":"ElementaryTypeName","src":"11984:6:19","typeDescriptions":{}}},"id":3706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11984:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":3688,"id":3707,"nodeType":"Return","src":"11977:20:19"}]},"documentation":{"id":3682,"nodeType":"StructuredDocumentation","src":"11510:276:19","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":3709,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11800:8:19","nodeType":"FunctionDefinition","parameters":{"id":3685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3684,"mutability":"mutable","name":"value","nameLocation":"11817:5:19","nodeType":"VariableDeclaration","scope":3709,"src":"11809:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3683,"name":"uint256","nodeType":"ElementaryTypeName","src":"11809:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11808:15:19"},"returnParameters":{"id":3688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3687,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3709,"src":"11847:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":3686,"name":"uint88","nodeType":"ElementaryTypeName","src":"11847:6:19","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11846:8:19"},"scope":4849,"src":"11791:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3736,"nodeType":"Block","src":"12355:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"12369:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12382:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":3719,"name":"uint80","nodeType":"ElementaryTypeName","src":"12382:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":3718,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12377:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12377:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12390:3:19","memberName":"max","nodeType":"MemberAccess","src":"12377:16:19","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12369:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3730,"nodeType":"IfStatement","src":"12365:103:19","trueBody":{"id":3729,"nodeType":"Block","src":"12395:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":3725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12447:2:19","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":3726,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"12451:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3724,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"12416:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12416:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3728,"nodeType":"RevertStatement","src":"12409:48:19"}]}},{"expression":{"arguments":[{"id":3733,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"12491:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12484:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":3731,"name":"uint80","nodeType":"ElementaryTypeName","src":"12484:6:19","typeDescriptions":{}}},"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12484:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":3716,"id":3735,"nodeType":"Return","src":"12477:20:19"}]},"documentation":{"id":3710,"nodeType":"StructuredDocumentation","src":"12010:276:19","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":3737,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12300:8:19","nodeType":"FunctionDefinition","parameters":{"id":3713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3712,"mutability":"mutable","name":"value","nameLocation":"12317:5:19","nodeType":"VariableDeclaration","scope":3737,"src":"12309:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3711,"name":"uint256","nodeType":"ElementaryTypeName","src":"12309:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12308:15:19"},"returnParameters":{"id":3716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3737,"src":"12347:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":3714,"name":"uint80","nodeType":"ElementaryTypeName","src":"12347:6:19","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12346:8:19"},"scope":4849,"src":"12291:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3764,"nodeType":"Block","src":"12855:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3745,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3740,"src":"12869:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12882:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":3747,"name":"uint72","nodeType":"ElementaryTypeName","src":"12882:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":3746,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12877:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12877:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":3750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12890:3:19","memberName":"max","nodeType":"MemberAccess","src":"12877:16:19","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12869:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3758,"nodeType":"IfStatement","src":"12865:103:19","trueBody":{"id":3757,"nodeType":"Block","src":"12895:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":3753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12947:2:19","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":3754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3740,"src":"12951:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3752,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"12916:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12916:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3756,"nodeType":"RevertStatement","src":"12909:48:19"}]}},{"expression":{"arguments":[{"id":3761,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3740,"src":"12991:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12984:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":3759,"name":"uint72","nodeType":"ElementaryTypeName","src":"12984:6:19","typeDescriptions":{}}},"id":3762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12984:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":3744,"id":3763,"nodeType":"Return","src":"12977:20:19"}]},"documentation":{"id":3738,"nodeType":"StructuredDocumentation","src":"12510:276:19","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":3765,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12800:8:19","nodeType":"FunctionDefinition","parameters":{"id":3741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3740,"mutability":"mutable","name":"value","nameLocation":"12817:5:19","nodeType":"VariableDeclaration","scope":3765,"src":"12809:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3739,"name":"uint256","nodeType":"ElementaryTypeName","src":"12809:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12808:15:19"},"returnParameters":{"id":3744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3765,"src":"12847:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":3742,"name":"uint72","nodeType":"ElementaryTypeName","src":"12847:6:19","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12846:8:19"},"scope":4849,"src":"12791:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3792,"nodeType":"Block","src":"13355:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3773,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3768,"src":"13369:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13382:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3775,"name":"uint64","nodeType":"ElementaryTypeName","src":"13382:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":3774,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13377:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13377:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":3778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13390:3:19","memberName":"max","nodeType":"MemberAccess","src":"13377:16:19","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13369:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3786,"nodeType":"IfStatement","src":"13365:103:19","trueBody":{"id":3785,"nodeType":"Block","src":"13395:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":3781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13447:2:19","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":3782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3768,"src":"13451:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3780,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"13416:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3784,"nodeType":"RevertStatement","src":"13409:48:19"}]}},{"expression":{"arguments":[{"id":3789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3768,"src":"13491:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13484:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3787,"name":"uint64","nodeType":"ElementaryTypeName","src":"13484:6:19","typeDescriptions":{}}},"id":3790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13484:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":3772,"id":3791,"nodeType":"Return","src":"13477:20:19"}]},"documentation":{"id":3766,"nodeType":"StructuredDocumentation","src":"13010:276:19","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":3793,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13300:8:19","nodeType":"FunctionDefinition","parameters":{"id":3769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3768,"mutability":"mutable","name":"value","nameLocation":"13317:5:19","nodeType":"VariableDeclaration","scope":3793,"src":"13309:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3767,"name":"uint256","nodeType":"ElementaryTypeName","src":"13309:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13308:15:19"},"returnParameters":{"id":3772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3793,"src":"13347:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3770,"name":"uint64","nodeType":"ElementaryTypeName","src":"13347:6:19","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13346:8:19"},"scope":4849,"src":"13291:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3820,"nodeType":"Block","src":"13855:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3796,"src":"13869:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13882:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":3803,"name":"uint56","nodeType":"ElementaryTypeName","src":"13882:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":3802,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13877:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13877:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":3806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13890:3:19","memberName":"max","nodeType":"MemberAccess","src":"13877:16:19","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13869:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3814,"nodeType":"IfStatement","src":"13865:103:19","trueBody":{"id":3813,"nodeType":"Block","src":"13895:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":3809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13947:2:19","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":3810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3796,"src":"13951:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3808,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"13916:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13916:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3812,"nodeType":"RevertStatement","src":"13909:48:19"}]}},{"expression":{"arguments":[{"id":3817,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3796,"src":"13991:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13984:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":3815,"name":"uint56","nodeType":"ElementaryTypeName","src":"13984:6:19","typeDescriptions":{}}},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13984:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":3800,"id":3819,"nodeType":"Return","src":"13977:20:19"}]},"documentation":{"id":3794,"nodeType":"StructuredDocumentation","src":"13510:276:19","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":3821,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13800:8:19","nodeType":"FunctionDefinition","parameters":{"id":3797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3796,"mutability":"mutable","name":"value","nameLocation":"13817:5:19","nodeType":"VariableDeclaration","scope":3821,"src":"13809:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3795,"name":"uint256","nodeType":"ElementaryTypeName","src":"13809:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13808:15:19"},"returnParameters":{"id":3800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3821,"src":"13847:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":3798,"name":"uint56","nodeType":"ElementaryTypeName","src":"13847:6:19","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13846:8:19"},"scope":4849,"src":"13791:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3848,"nodeType":"Block","src":"14355:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3824,"src":"14369:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14382:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":3831,"name":"uint48","nodeType":"ElementaryTypeName","src":"14382:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":3830,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14377:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14377:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":3834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14390:3:19","memberName":"max","nodeType":"MemberAccess","src":"14377:16:19","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14369:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3842,"nodeType":"IfStatement","src":"14365:103:19","trueBody":{"id":3841,"nodeType":"Block","src":"14395:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":3837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14447:2:19","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":3838,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3824,"src":"14451:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3836,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"14416:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14416:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3840,"nodeType":"RevertStatement","src":"14409:48:19"}]}},{"expression":{"arguments":[{"id":3845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3824,"src":"14491:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14484:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":3843,"name":"uint48","nodeType":"ElementaryTypeName","src":"14484:6:19","typeDescriptions":{}}},"id":3846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14484:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":3828,"id":3847,"nodeType":"Return","src":"14477:20:19"}]},"documentation":{"id":3822,"nodeType":"StructuredDocumentation","src":"14010:276:19","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":3849,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14300:8:19","nodeType":"FunctionDefinition","parameters":{"id":3825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3824,"mutability":"mutable","name":"value","nameLocation":"14317:5:19","nodeType":"VariableDeclaration","scope":3849,"src":"14309:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3823,"name":"uint256","nodeType":"ElementaryTypeName","src":"14309:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14308:15:19"},"returnParameters":{"id":3828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3849,"src":"14347:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":3826,"name":"uint48","nodeType":"ElementaryTypeName","src":"14347:6:19","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14346:8:19"},"scope":4849,"src":"14291:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3876,"nodeType":"Block","src":"14855:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3857,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3852,"src":"14869:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14882:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":3859,"name":"uint40","nodeType":"ElementaryTypeName","src":"14882:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":3858,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14877:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14877:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":3862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14890:3:19","memberName":"max","nodeType":"MemberAccess","src":"14877:16:19","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14869:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3870,"nodeType":"IfStatement","src":"14865:103:19","trueBody":{"id":3869,"nodeType":"Block","src":"14895:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":3865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14947:2:19","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":3866,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3852,"src":"14951:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3864,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"14916:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14916:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3868,"nodeType":"RevertStatement","src":"14909:48:19"}]}},{"expression":{"arguments":[{"id":3873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3852,"src":"14991:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14984:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":3871,"name":"uint40","nodeType":"ElementaryTypeName","src":"14984:6:19","typeDescriptions":{}}},"id":3874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14984:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":3856,"id":3875,"nodeType":"Return","src":"14977:20:19"}]},"documentation":{"id":3850,"nodeType":"StructuredDocumentation","src":"14510:276:19","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":3877,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14800:8:19","nodeType":"FunctionDefinition","parameters":{"id":3853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3852,"mutability":"mutable","name":"value","nameLocation":"14817:5:19","nodeType":"VariableDeclaration","scope":3877,"src":"14809:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3851,"name":"uint256","nodeType":"ElementaryTypeName","src":"14809:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14808:15:19"},"returnParameters":{"id":3856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3877,"src":"14847:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":3854,"name":"uint40","nodeType":"ElementaryTypeName","src":"14847:6:19","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14846:8:19"},"scope":4849,"src":"14791:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3904,"nodeType":"Block","src":"15355:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3885,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3880,"src":"15369:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15382:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3887,"name":"uint32","nodeType":"ElementaryTypeName","src":"15382:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":3886,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15377:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15377:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":3890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15390:3:19","memberName":"max","nodeType":"MemberAccess","src":"15377:16:19","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15369:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3898,"nodeType":"IfStatement","src":"15365:103:19","trueBody":{"id":3897,"nodeType":"Block","src":"15395:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":3893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15447:2:19","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":3894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3880,"src":"15451:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3892,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"15416:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15416:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3896,"nodeType":"RevertStatement","src":"15409:48:19"}]}},{"expression":{"arguments":[{"id":3901,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3880,"src":"15491:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15484:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3899,"name":"uint32","nodeType":"ElementaryTypeName","src":"15484:6:19","typeDescriptions":{}}},"id":3902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15484:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":3884,"id":3903,"nodeType":"Return","src":"15477:20:19"}]},"documentation":{"id":3878,"nodeType":"StructuredDocumentation","src":"15010:276:19","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":3905,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15300:8:19","nodeType":"FunctionDefinition","parameters":{"id":3881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3880,"mutability":"mutable","name":"value","nameLocation":"15317:5:19","nodeType":"VariableDeclaration","scope":3905,"src":"15309:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3879,"name":"uint256","nodeType":"ElementaryTypeName","src":"15309:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15308:15:19"},"returnParameters":{"id":3884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3905,"src":"15347:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3882,"name":"uint32","nodeType":"ElementaryTypeName","src":"15347:6:19","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15346:8:19"},"scope":4849,"src":"15291:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3932,"nodeType":"Block","src":"15855:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3913,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3908,"src":"15869:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15882:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":3915,"name":"uint24","nodeType":"ElementaryTypeName","src":"15882:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":3914,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15877:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15877:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":3918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15890:3:19","memberName":"max","nodeType":"MemberAccess","src":"15877:16:19","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15869:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3926,"nodeType":"IfStatement","src":"15865:103:19","trueBody":{"id":3925,"nodeType":"Block","src":"15895:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":3921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15947:2:19","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":3922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3908,"src":"15951:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3920,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"15916:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15916:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3924,"nodeType":"RevertStatement","src":"15909:48:19"}]}},{"expression":{"arguments":[{"id":3929,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3908,"src":"15991:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15984:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":3927,"name":"uint24","nodeType":"ElementaryTypeName","src":"15984:6:19","typeDescriptions":{}}},"id":3930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15984:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":3912,"id":3931,"nodeType":"Return","src":"15977:20:19"}]},"documentation":{"id":3906,"nodeType":"StructuredDocumentation","src":"15510:276:19","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":3933,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15800:8:19","nodeType":"FunctionDefinition","parameters":{"id":3909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3908,"mutability":"mutable","name":"value","nameLocation":"15817:5:19","nodeType":"VariableDeclaration","scope":3933,"src":"15809:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3907,"name":"uint256","nodeType":"ElementaryTypeName","src":"15809:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15808:15:19"},"returnParameters":{"id":3912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3933,"src":"15847:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3910,"name":"uint24","nodeType":"ElementaryTypeName","src":"15847:6:19","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15846:8:19"},"scope":4849,"src":"15791:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3960,"nodeType":"Block","src":"16355:149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3941,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3936,"src":"16369:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16382:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":3943,"name":"uint16","nodeType":"ElementaryTypeName","src":"16382:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":3942,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16377:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16377:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":3946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16390:3:19","memberName":"max","nodeType":"MemberAccess","src":"16377:16:19","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16369:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3954,"nodeType":"IfStatement","src":"16365:103:19","trueBody":{"id":3953,"nodeType":"Block","src":"16395:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":3949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16447:2:19","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":3950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3936,"src":"16451:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3948,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"16416:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16416:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3952,"nodeType":"RevertStatement","src":"16409:48:19"}]}},{"expression":{"arguments":[{"id":3957,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3936,"src":"16491:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16484:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":3955,"name":"uint16","nodeType":"ElementaryTypeName","src":"16484:6:19","typeDescriptions":{}}},"id":3958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16484:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":3940,"id":3959,"nodeType":"Return","src":"16477:20:19"}]},"documentation":{"id":3934,"nodeType":"StructuredDocumentation","src":"16010:276:19","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":3961,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16300:8:19","nodeType":"FunctionDefinition","parameters":{"id":3937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3936,"mutability":"mutable","name":"value","nameLocation":"16317:5:19","nodeType":"VariableDeclaration","scope":3961,"src":"16309:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3935,"name":"uint256","nodeType":"ElementaryTypeName","src":"16309:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16308:15:19"},"returnParameters":{"id":3940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3961,"src":"16347:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3938,"name":"uint16","nodeType":"ElementaryTypeName","src":"16347:6:19","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16346:8:19"},"scope":4849,"src":"16291:213:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3988,"nodeType":"Block","src":"16849:146:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3964,"src":"16863:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16876:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3971,"name":"uint8","nodeType":"ElementaryTypeName","src":"16876:5:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":3970,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16871:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16871:11:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":3974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16883:3:19","memberName":"max","nodeType":"MemberAccess","src":"16871:15:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16863:23:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3982,"nodeType":"IfStatement","src":"16859:101:19","trueBody":{"id":3981,"nodeType":"Block","src":"16888:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":3977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16940:1:19","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":3978,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3964,"src":"16943:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3976,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"16909:30:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256) pure"}},"id":3979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16909:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3980,"nodeType":"RevertStatement","src":"16902:47:19"}]}},{"expression":{"arguments":[{"id":3985,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3964,"src":"16982:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16976:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3983,"name":"uint8","nodeType":"ElementaryTypeName","src":"16976:5:19","typeDescriptions":{}}},"id":3986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16976:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":3968,"id":3987,"nodeType":"Return","src":"16969:19:19"}]},"documentation":{"id":3962,"nodeType":"StructuredDocumentation","src":"16510:272:19","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":3989,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16796:7:19","nodeType":"FunctionDefinition","parameters":{"id":3965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3964,"mutability":"mutable","name":"value","nameLocation":"16812:5:19","nodeType":"VariableDeclaration","scope":3989,"src":"16804:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3963,"name":"uint256","nodeType":"ElementaryTypeName","src":"16804:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16803:15:19"},"returnParameters":{"id":3968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3989,"src":"16842:5:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3966,"name":"uint8","nodeType":"ElementaryTypeName","src":"16842:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16841:7:19"},"scope":4849,"src":"16787:208:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4011,"nodeType":"Block","src":"17231:128:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3997,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"17245:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17253:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17245:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4005,"nodeType":"IfStatement","src":"17241:81:19","trueBody":{"id":4004,"nodeType":"Block","src":"17256:66:19","statements":[{"errorCall":{"arguments":[{"id":4001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"17305:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4000,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"17277:27:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$__$","typeString":"function (int256) pure"}},"id":4002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17277:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4003,"nodeType":"RevertStatement","src":"17270:41:19"}]}},{"expression":{"arguments":[{"id":4008,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"17346:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17338:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4006,"name":"uint256","nodeType":"ElementaryTypeName","src":"17338:7:19","typeDescriptions":{}}},"id":4009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17338:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3996,"id":4010,"nodeType":"Return","src":"17331:21:19"}]},"documentation":{"id":3990,"nodeType":"StructuredDocumentation","src":"17001:160:19","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":4012,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17175:9:19","nodeType":"FunctionDefinition","parameters":{"id":3993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3992,"mutability":"mutable","name":"value","nameLocation":"17192:5:19","nodeType":"VariableDeclaration","scope":4012,"src":"17185:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3991,"name":"int256","nodeType":"ElementaryTypeName","src":"17185:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17184:14:19"},"returnParameters":{"id":3996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4012,"src":"17222:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3994,"name":"uint256","nodeType":"ElementaryTypeName","src":"17222:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17221:9:19"},"scope":4849,"src":"17166:193:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4037,"nodeType":"Block","src":"17756:150:19","statements":[{"expression":{"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4020,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"17766:10:19","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4023,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4015,"src":"17786:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4022,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17779:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":4021,"name":"int248","nodeType":"ElementaryTypeName","src":"17779:6:19","typeDescriptions":{}}},"id":4024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17779:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17766:26:19","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":4026,"nodeType":"ExpressionStatement","src":"17766:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4027,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"17806:10:19","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4028,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4015,"src":"17820:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17806:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4036,"nodeType":"IfStatement","src":"17802:98:19","trueBody":{"id":4035,"nodeType":"Block","src":"17827:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":4031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17878:3:19","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":4032,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4015,"src":"17883:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4030,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"17848:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17848:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4034,"nodeType":"RevertStatement","src":"17841:48:19"}]}}]},"documentation":{"id":4013,"nodeType":"StructuredDocumentation","src":"17365:312:19","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":4038,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17691:8:19","nodeType":"FunctionDefinition","parameters":{"id":4016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4015,"mutability":"mutable","name":"value","nameLocation":"17707:5:19","nodeType":"VariableDeclaration","scope":4038,"src":"17700:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4014,"name":"int256","nodeType":"ElementaryTypeName","src":"17700:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17699:14:19"},"returnParameters":{"id":4019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4018,"mutability":"mutable","name":"downcasted","nameLocation":"17744:10:19","nodeType":"VariableDeclaration","scope":4038,"src":"17737:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":4017,"name":"int248","nodeType":"ElementaryTypeName","src":"17737:6:19","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17736:19:19"},"scope":4849,"src":"17682:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4063,"nodeType":"Block","src":"18303:150:19","statements":[{"expression":{"id":4051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4046,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4044,"src":"18313:10:19","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4049,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"18333:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18326:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":4047,"name":"int240","nodeType":"ElementaryTypeName","src":"18326:6:19","typeDescriptions":{}}},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18326:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18313:26:19","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":4052,"nodeType":"ExpressionStatement","src":"18313:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4053,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4044,"src":"18353:10:19","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4054,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"18367:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18353:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4062,"nodeType":"IfStatement","src":"18349:98:19","trueBody":{"id":4061,"nodeType":"Block","src":"18374:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":4057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18425:3:19","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":4058,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"18430:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4056,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"18395:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18395:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4060,"nodeType":"RevertStatement","src":"18388:48:19"}]}}]},"documentation":{"id":4039,"nodeType":"StructuredDocumentation","src":"17912:312:19","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":4064,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18238:8:19","nodeType":"FunctionDefinition","parameters":{"id":4042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4041,"mutability":"mutable","name":"value","nameLocation":"18254:5:19","nodeType":"VariableDeclaration","scope":4064,"src":"18247:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4040,"name":"int256","nodeType":"ElementaryTypeName","src":"18247:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18246:14:19"},"returnParameters":{"id":4045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4044,"mutability":"mutable","name":"downcasted","nameLocation":"18291:10:19","nodeType":"VariableDeclaration","scope":4064,"src":"18284:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":4043,"name":"int240","nodeType":"ElementaryTypeName","src":"18284:6:19","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18283:19:19"},"scope":4849,"src":"18229:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4089,"nodeType":"Block","src":"18850:150:19","statements":[{"expression":{"id":4077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4072,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4070,"src":"18860:10:19","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4067,"src":"18880:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18873:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":4073,"name":"int232","nodeType":"ElementaryTypeName","src":"18873:6:19","typeDescriptions":{}}},"id":4076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18873:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18860:26:19","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":4078,"nodeType":"ExpressionStatement","src":"18860:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4079,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4070,"src":"18900:10:19","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4067,"src":"18914:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18900:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4088,"nodeType":"IfStatement","src":"18896:98:19","trueBody":{"id":4087,"nodeType":"Block","src":"18921:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":4083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18972:3:19","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":4084,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4067,"src":"18977:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4082,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"18942:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18942:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4086,"nodeType":"RevertStatement","src":"18935:48:19"}]}}]},"documentation":{"id":4065,"nodeType":"StructuredDocumentation","src":"18459:312:19","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":4090,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18785:8:19","nodeType":"FunctionDefinition","parameters":{"id":4068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4067,"mutability":"mutable","name":"value","nameLocation":"18801:5:19","nodeType":"VariableDeclaration","scope":4090,"src":"18794:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4066,"name":"int256","nodeType":"ElementaryTypeName","src":"18794:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18793:14:19"},"returnParameters":{"id":4071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4070,"mutability":"mutable","name":"downcasted","nameLocation":"18838:10:19","nodeType":"VariableDeclaration","scope":4090,"src":"18831:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":4069,"name":"int232","nodeType":"ElementaryTypeName","src":"18831:6:19","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18830:19:19"},"scope":4849,"src":"18776:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4115,"nodeType":"Block","src":"19397:150:19","statements":[{"expression":{"id":4103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4098,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4096,"src":"19407:10:19","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4101,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"19427:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19420:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":4099,"name":"int224","nodeType":"ElementaryTypeName","src":"19420:6:19","typeDescriptions":{}}},"id":4102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19420:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19407:26:19","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":4104,"nodeType":"ExpressionStatement","src":"19407:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4105,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4096,"src":"19447:10:19","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4106,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"19461:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19447:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4114,"nodeType":"IfStatement","src":"19443:98:19","trueBody":{"id":4113,"nodeType":"Block","src":"19468:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":4109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19519:3:19","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":4110,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"19524:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4108,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"19489:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19489:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4112,"nodeType":"RevertStatement","src":"19482:48:19"}]}}]},"documentation":{"id":4091,"nodeType":"StructuredDocumentation","src":"19006:312:19","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":4116,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19332:8:19","nodeType":"FunctionDefinition","parameters":{"id":4094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4093,"mutability":"mutable","name":"value","nameLocation":"19348:5:19","nodeType":"VariableDeclaration","scope":4116,"src":"19341:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4092,"name":"int256","nodeType":"ElementaryTypeName","src":"19341:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19340:14:19"},"returnParameters":{"id":4097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4096,"mutability":"mutable","name":"downcasted","nameLocation":"19385:10:19","nodeType":"VariableDeclaration","scope":4116,"src":"19378:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":4095,"name":"int224","nodeType":"ElementaryTypeName","src":"19378:6:19","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19377:19:19"},"scope":4849,"src":"19323:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4141,"nodeType":"Block","src":"19944:150:19","statements":[{"expression":{"id":4129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4124,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"19954:10:19","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"19974:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19967:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":4125,"name":"int216","nodeType":"ElementaryTypeName","src":"19967:6:19","typeDescriptions":{}}},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19967:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19954:26:19","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":4130,"nodeType":"ExpressionStatement","src":"19954:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4131,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"19994:10:19","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4132,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"20008:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19994:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4140,"nodeType":"IfStatement","src":"19990:98:19","trueBody":{"id":4139,"nodeType":"Block","src":"20015:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":4135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20066:3:19","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":4136,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"20071:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4134,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"20036:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20036:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4138,"nodeType":"RevertStatement","src":"20029:48:19"}]}}]},"documentation":{"id":4117,"nodeType":"StructuredDocumentation","src":"19553:312:19","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":4142,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19879:8:19","nodeType":"FunctionDefinition","parameters":{"id":4120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4119,"mutability":"mutable","name":"value","nameLocation":"19895:5:19","nodeType":"VariableDeclaration","scope":4142,"src":"19888:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4118,"name":"int256","nodeType":"ElementaryTypeName","src":"19888:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19887:14:19"},"returnParameters":{"id":4123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4122,"mutability":"mutable","name":"downcasted","nameLocation":"19932:10:19","nodeType":"VariableDeclaration","scope":4142,"src":"19925:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":4121,"name":"int216","nodeType":"ElementaryTypeName","src":"19925:6:19","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19924:19:19"},"scope":4849,"src":"19870:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4167,"nodeType":"Block","src":"20491:150:19","statements":[{"expression":{"id":4155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4150,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4148,"src":"20501:10:19","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4153,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"20521:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20514:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":4151,"name":"int208","nodeType":"ElementaryTypeName","src":"20514:6:19","typeDescriptions":{}}},"id":4154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20514:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20501:26:19","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":4156,"nodeType":"ExpressionStatement","src":"20501:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4157,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4148,"src":"20541:10:19","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4158,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"20555:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20541:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4166,"nodeType":"IfStatement","src":"20537:98:19","trueBody":{"id":4165,"nodeType":"Block","src":"20562:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":4161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20613:3:19","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":4162,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"20618:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4160,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"20583:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20583:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4164,"nodeType":"RevertStatement","src":"20576:48:19"}]}}]},"documentation":{"id":4143,"nodeType":"StructuredDocumentation","src":"20100:312:19","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":4168,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20426:8:19","nodeType":"FunctionDefinition","parameters":{"id":4146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4145,"mutability":"mutable","name":"value","nameLocation":"20442:5:19","nodeType":"VariableDeclaration","scope":4168,"src":"20435:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4144,"name":"int256","nodeType":"ElementaryTypeName","src":"20435:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20434:14:19"},"returnParameters":{"id":4149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4148,"mutability":"mutable","name":"downcasted","nameLocation":"20479:10:19","nodeType":"VariableDeclaration","scope":4168,"src":"20472:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":4147,"name":"int208","nodeType":"ElementaryTypeName","src":"20472:6:19","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20471:19:19"},"scope":4849,"src":"20417:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4193,"nodeType":"Block","src":"21038:150:19","statements":[{"expression":{"id":4181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4176,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"21048:10:19","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4179,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"21068:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21061:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":4177,"name":"int200","nodeType":"ElementaryTypeName","src":"21061:6:19","typeDescriptions":{}}},"id":4180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21061:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21048:26:19","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":4182,"nodeType":"ExpressionStatement","src":"21048:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4183,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"21088:10:19","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4184,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"21102:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21088:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4192,"nodeType":"IfStatement","src":"21084:98:19","trueBody":{"id":4191,"nodeType":"Block","src":"21109:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":4187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21160:3:19","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":4188,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"21165:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4186,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"21130:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21130:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4190,"nodeType":"RevertStatement","src":"21123:48:19"}]}}]},"documentation":{"id":4169,"nodeType":"StructuredDocumentation","src":"20647:312:19","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":4194,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20973:8:19","nodeType":"FunctionDefinition","parameters":{"id":4172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4171,"mutability":"mutable","name":"value","nameLocation":"20989:5:19","nodeType":"VariableDeclaration","scope":4194,"src":"20982:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4170,"name":"int256","nodeType":"ElementaryTypeName","src":"20982:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20981:14:19"},"returnParameters":{"id":4175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4174,"mutability":"mutable","name":"downcasted","nameLocation":"21026:10:19","nodeType":"VariableDeclaration","scope":4194,"src":"21019:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":4173,"name":"int200","nodeType":"ElementaryTypeName","src":"21019:6:19","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21018:19:19"},"scope":4849,"src":"20964:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4219,"nodeType":"Block","src":"21585:150:19","statements":[{"expression":{"id":4207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4202,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"21595:10:19","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4197,"src":"21615:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21608:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":4203,"name":"int192","nodeType":"ElementaryTypeName","src":"21608:6:19","typeDescriptions":{}}},"id":4206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21608:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21595:26:19","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":4208,"nodeType":"ExpressionStatement","src":"21595:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4209,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"21635:10:19","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4197,"src":"21649:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21635:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4218,"nodeType":"IfStatement","src":"21631:98:19","trueBody":{"id":4217,"nodeType":"Block","src":"21656:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":4213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21707:3:19","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":4214,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4197,"src":"21712:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4212,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"21677:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21677:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4216,"nodeType":"RevertStatement","src":"21670:48:19"}]}}]},"documentation":{"id":4195,"nodeType":"StructuredDocumentation","src":"21194:312:19","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":4220,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21520:8:19","nodeType":"FunctionDefinition","parameters":{"id":4198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4197,"mutability":"mutable","name":"value","nameLocation":"21536:5:19","nodeType":"VariableDeclaration","scope":4220,"src":"21529:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4196,"name":"int256","nodeType":"ElementaryTypeName","src":"21529:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21528:14:19"},"returnParameters":{"id":4201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4200,"mutability":"mutable","name":"downcasted","nameLocation":"21573:10:19","nodeType":"VariableDeclaration","scope":4220,"src":"21566:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":4199,"name":"int192","nodeType":"ElementaryTypeName","src":"21566:6:19","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21565:19:19"},"scope":4849,"src":"21511:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4245,"nodeType":"Block","src":"22132:150:19","statements":[{"expression":{"id":4233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4228,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4226,"src":"22142:10:19","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4231,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"22162:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22155:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":4229,"name":"int184","nodeType":"ElementaryTypeName","src":"22155:6:19","typeDescriptions":{}}},"id":4232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22155:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22142:26:19","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":4234,"nodeType":"ExpressionStatement","src":"22142:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4235,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4226,"src":"22182:10:19","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4236,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"22196:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22182:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4244,"nodeType":"IfStatement","src":"22178:98:19","trueBody":{"id":4243,"nodeType":"Block","src":"22203:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":4239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22254:3:19","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":4240,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"22259:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4238,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"22224:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22224:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4242,"nodeType":"RevertStatement","src":"22217:48:19"}]}}]},"documentation":{"id":4221,"nodeType":"StructuredDocumentation","src":"21741:312:19","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":4246,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22067:8:19","nodeType":"FunctionDefinition","parameters":{"id":4224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4223,"mutability":"mutable","name":"value","nameLocation":"22083:5:19","nodeType":"VariableDeclaration","scope":4246,"src":"22076:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4222,"name":"int256","nodeType":"ElementaryTypeName","src":"22076:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22075:14:19"},"returnParameters":{"id":4227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4226,"mutability":"mutable","name":"downcasted","nameLocation":"22120:10:19","nodeType":"VariableDeclaration","scope":4246,"src":"22113:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":4225,"name":"int184","nodeType":"ElementaryTypeName","src":"22113:6:19","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22112:19:19"},"scope":4849,"src":"22058:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4271,"nodeType":"Block","src":"22679:150:19","statements":[{"expression":{"id":4259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4254,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4252,"src":"22689:10:19","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4257,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"22709:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22702:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":4255,"name":"int176","nodeType":"ElementaryTypeName","src":"22702:6:19","typeDescriptions":{}}},"id":4258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22702:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22689:26:19","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":4260,"nodeType":"ExpressionStatement","src":"22689:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4261,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4252,"src":"22729:10:19","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"22743:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22729:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4270,"nodeType":"IfStatement","src":"22725:98:19","trueBody":{"id":4269,"nodeType":"Block","src":"22750:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":4265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22801:3:19","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":4266,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"22806:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4264,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"22771:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22771:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4268,"nodeType":"RevertStatement","src":"22764:48:19"}]}}]},"documentation":{"id":4247,"nodeType":"StructuredDocumentation","src":"22288:312:19","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":4272,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22614:8:19","nodeType":"FunctionDefinition","parameters":{"id":4250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4249,"mutability":"mutable","name":"value","nameLocation":"22630:5:19","nodeType":"VariableDeclaration","scope":4272,"src":"22623:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4248,"name":"int256","nodeType":"ElementaryTypeName","src":"22623:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22622:14:19"},"returnParameters":{"id":4253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4252,"mutability":"mutable","name":"downcasted","nameLocation":"22667:10:19","nodeType":"VariableDeclaration","scope":4272,"src":"22660:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":4251,"name":"int176","nodeType":"ElementaryTypeName","src":"22660:6:19","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22659:19:19"},"scope":4849,"src":"22605:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4297,"nodeType":"Block","src":"23226:150:19","statements":[{"expression":{"id":4285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4280,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4278,"src":"23236:10:19","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4283,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4275,"src":"23256:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23249:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":4281,"name":"int168","nodeType":"ElementaryTypeName","src":"23249:6:19","typeDescriptions":{}}},"id":4284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23249:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23236:26:19","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":4286,"nodeType":"ExpressionStatement","src":"23236:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4287,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4278,"src":"23276:10:19","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4288,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4275,"src":"23290:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23276:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4296,"nodeType":"IfStatement","src":"23272:98:19","trueBody":{"id":4295,"nodeType":"Block","src":"23297:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":4291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23348:3:19","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":4292,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4275,"src":"23353:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4290,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"23318:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23318:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4294,"nodeType":"RevertStatement","src":"23311:48:19"}]}}]},"documentation":{"id":4273,"nodeType":"StructuredDocumentation","src":"22835:312:19","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":4298,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23161:8:19","nodeType":"FunctionDefinition","parameters":{"id":4276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4275,"mutability":"mutable","name":"value","nameLocation":"23177:5:19","nodeType":"VariableDeclaration","scope":4298,"src":"23170:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4274,"name":"int256","nodeType":"ElementaryTypeName","src":"23170:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23169:14:19"},"returnParameters":{"id":4279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4278,"mutability":"mutable","name":"downcasted","nameLocation":"23214:10:19","nodeType":"VariableDeclaration","scope":4298,"src":"23207:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":4277,"name":"int168","nodeType":"ElementaryTypeName","src":"23207:6:19","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23206:19:19"},"scope":4849,"src":"23152:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4323,"nodeType":"Block","src":"23773:150:19","statements":[{"expression":{"id":4311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4306,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"23783:10:19","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"23803:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23796:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":4307,"name":"int160","nodeType":"ElementaryTypeName","src":"23796:6:19","typeDescriptions":{}}},"id":4310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23796:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23783:26:19","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":4312,"nodeType":"ExpressionStatement","src":"23783:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4313,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"23823:10:19","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"23837:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23823:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4322,"nodeType":"IfStatement","src":"23819:98:19","trueBody":{"id":4321,"nodeType":"Block","src":"23844:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":4317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23895:3:19","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":4318,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"23900:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4316,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"23865:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23865:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4320,"nodeType":"RevertStatement","src":"23858:48:19"}]}}]},"documentation":{"id":4299,"nodeType":"StructuredDocumentation","src":"23382:312:19","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":4324,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23708:8:19","nodeType":"FunctionDefinition","parameters":{"id":4302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4301,"mutability":"mutable","name":"value","nameLocation":"23724:5:19","nodeType":"VariableDeclaration","scope":4324,"src":"23717:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4300,"name":"int256","nodeType":"ElementaryTypeName","src":"23717:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23716:14:19"},"returnParameters":{"id":4305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4304,"mutability":"mutable","name":"downcasted","nameLocation":"23761:10:19","nodeType":"VariableDeclaration","scope":4324,"src":"23754:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":4303,"name":"int160","nodeType":"ElementaryTypeName","src":"23754:6:19","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23753:19:19"},"scope":4849,"src":"23699:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4349,"nodeType":"Block","src":"24320:150:19","statements":[{"expression":{"id":4337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4332,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4330,"src":"24330:10:19","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4335,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"24350:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24343:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":4333,"name":"int152","nodeType":"ElementaryTypeName","src":"24343:6:19","typeDescriptions":{}}},"id":4336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24343:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24330:26:19","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":4338,"nodeType":"ExpressionStatement","src":"24330:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4339,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4330,"src":"24370:10:19","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4340,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"24384:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24370:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4348,"nodeType":"IfStatement","src":"24366:98:19","trueBody":{"id":4347,"nodeType":"Block","src":"24391:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":4343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24442:3:19","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":4344,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"24447:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4342,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"24412:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24412:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4346,"nodeType":"RevertStatement","src":"24405:48:19"}]}}]},"documentation":{"id":4325,"nodeType":"StructuredDocumentation","src":"23929:312:19","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":4350,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24255:8:19","nodeType":"FunctionDefinition","parameters":{"id":4328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4327,"mutability":"mutable","name":"value","nameLocation":"24271:5:19","nodeType":"VariableDeclaration","scope":4350,"src":"24264:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4326,"name":"int256","nodeType":"ElementaryTypeName","src":"24264:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24263:14:19"},"returnParameters":{"id":4331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4330,"mutability":"mutable","name":"downcasted","nameLocation":"24308:10:19","nodeType":"VariableDeclaration","scope":4350,"src":"24301:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":4329,"name":"int152","nodeType":"ElementaryTypeName","src":"24301:6:19","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24300:19:19"},"scope":4849,"src":"24246:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4375,"nodeType":"Block","src":"24867:150:19","statements":[{"expression":{"id":4363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4358,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4356,"src":"24877:10:19","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4361,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4353,"src":"24897:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24890:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":4359,"name":"int144","nodeType":"ElementaryTypeName","src":"24890:6:19","typeDescriptions":{}}},"id":4362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24890:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24877:26:19","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":4364,"nodeType":"ExpressionStatement","src":"24877:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4365,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4356,"src":"24917:10:19","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4366,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4353,"src":"24931:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24917:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4374,"nodeType":"IfStatement","src":"24913:98:19","trueBody":{"id":4373,"nodeType":"Block","src":"24938:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":4369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24989:3:19","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":4370,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4353,"src":"24994:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4368,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"24959:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24959:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4372,"nodeType":"RevertStatement","src":"24952:48:19"}]}}]},"documentation":{"id":4351,"nodeType":"StructuredDocumentation","src":"24476:312:19","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":4376,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24802:8:19","nodeType":"FunctionDefinition","parameters":{"id":4354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4353,"mutability":"mutable","name":"value","nameLocation":"24818:5:19","nodeType":"VariableDeclaration","scope":4376,"src":"24811:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4352,"name":"int256","nodeType":"ElementaryTypeName","src":"24811:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24810:14:19"},"returnParameters":{"id":4357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4356,"mutability":"mutable","name":"downcasted","nameLocation":"24855:10:19","nodeType":"VariableDeclaration","scope":4376,"src":"24848:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":4355,"name":"int144","nodeType":"ElementaryTypeName","src":"24848:6:19","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24847:19:19"},"scope":4849,"src":"24793:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4401,"nodeType":"Block","src":"25414:150:19","statements":[{"expression":{"id":4389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4384,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"25424:10:19","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"25444:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25437:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":4385,"name":"int136","nodeType":"ElementaryTypeName","src":"25437:6:19","typeDescriptions":{}}},"id":4388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25437:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25424:26:19","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":4390,"nodeType":"ExpressionStatement","src":"25424:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4391,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"25464:10:19","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4392,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"25478:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25464:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4400,"nodeType":"IfStatement","src":"25460:98:19","trueBody":{"id":4399,"nodeType":"Block","src":"25485:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":4395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25536:3:19","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":4396,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"25541:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4394,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"25506:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25506:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4398,"nodeType":"RevertStatement","src":"25499:48:19"}]}}]},"documentation":{"id":4377,"nodeType":"StructuredDocumentation","src":"25023:312:19","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":4402,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25349:8:19","nodeType":"FunctionDefinition","parameters":{"id":4380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4379,"mutability":"mutable","name":"value","nameLocation":"25365:5:19","nodeType":"VariableDeclaration","scope":4402,"src":"25358:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4378,"name":"int256","nodeType":"ElementaryTypeName","src":"25358:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25357:14:19"},"returnParameters":{"id":4383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4382,"mutability":"mutable","name":"downcasted","nameLocation":"25402:10:19","nodeType":"VariableDeclaration","scope":4402,"src":"25395:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":4381,"name":"int136","nodeType":"ElementaryTypeName","src":"25395:6:19","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25394:19:19"},"scope":4849,"src":"25340:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4427,"nodeType":"Block","src":"25961:150:19","statements":[{"expression":{"id":4415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4410,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4408,"src":"25971:10:19","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4413,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4405,"src":"25991:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25984:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":4411,"name":"int128","nodeType":"ElementaryTypeName","src":"25984:6:19","typeDescriptions":{}}},"id":4414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25971:26:19","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":4416,"nodeType":"ExpressionStatement","src":"25971:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4417,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4408,"src":"26011:10:19","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4418,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4405,"src":"26025:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26011:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4426,"nodeType":"IfStatement","src":"26007:98:19","trueBody":{"id":4425,"nodeType":"Block","src":"26032:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":4421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26083:3:19","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":4422,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4405,"src":"26088:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4420,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"26053:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26053:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4424,"nodeType":"RevertStatement","src":"26046:48:19"}]}}]},"documentation":{"id":4403,"nodeType":"StructuredDocumentation","src":"25570:312:19","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":4428,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25896:8:19","nodeType":"FunctionDefinition","parameters":{"id":4406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4405,"mutability":"mutable","name":"value","nameLocation":"25912:5:19","nodeType":"VariableDeclaration","scope":4428,"src":"25905:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4404,"name":"int256","nodeType":"ElementaryTypeName","src":"25905:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25904:14:19"},"returnParameters":{"id":4409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4408,"mutability":"mutable","name":"downcasted","nameLocation":"25949:10:19","nodeType":"VariableDeclaration","scope":4428,"src":"25942:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":4407,"name":"int128","nodeType":"ElementaryTypeName","src":"25942:6:19","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25941:19:19"},"scope":4849,"src":"25887:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4453,"nodeType":"Block","src":"26508:150:19","statements":[{"expression":{"id":4441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4436,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4434,"src":"26518:10:19","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4439,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"26538:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26531:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":4437,"name":"int120","nodeType":"ElementaryTypeName","src":"26531:6:19","typeDescriptions":{}}},"id":4440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26531:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26518:26:19","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":4442,"nodeType":"ExpressionStatement","src":"26518:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4443,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4434,"src":"26558:10:19","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"26572:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26558:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4452,"nodeType":"IfStatement","src":"26554:98:19","trueBody":{"id":4451,"nodeType":"Block","src":"26579:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":4447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26630:3:19","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":4448,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"26635:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4446,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"26600:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26600:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4450,"nodeType":"RevertStatement","src":"26593:48:19"}]}}]},"documentation":{"id":4429,"nodeType":"StructuredDocumentation","src":"26117:312:19","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":4454,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26443:8:19","nodeType":"FunctionDefinition","parameters":{"id":4432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4431,"mutability":"mutable","name":"value","nameLocation":"26459:5:19","nodeType":"VariableDeclaration","scope":4454,"src":"26452:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4430,"name":"int256","nodeType":"ElementaryTypeName","src":"26452:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26451:14:19"},"returnParameters":{"id":4435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4434,"mutability":"mutable","name":"downcasted","nameLocation":"26496:10:19","nodeType":"VariableDeclaration","scope":4454,"src":"26489:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":4433,"name":"int120","nodeType":"ElementaryTypeName","src":"26489:6:19","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26488:19:19"},"scope":4849,"src":"26434:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4479,"nodeType":"Block","src":"27055:150:19","statements":[{"expression":{"id":4467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4462,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4460,"src":"27065:10:19","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4465,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"27085:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27078:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":4463,"name":"int112","nodeType":"ElementaryTypeName","src":"27078:6:19","typeDescriptions":{}}},"id":4466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27078:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27065:26:19","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":4468,"nodeType":"ExpressionStatement","src":"27065:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4469,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4460,"src":"27105:10:19","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4470,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"27119:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27105:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4478,"nodeType":"IfStatement","src":"27101:98:19","trueBody":{"id":4477,"nodeType":"Block","src":"27126:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":4473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27177:3:19","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":4474,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"27182:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4472,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"27147:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27147:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4476,"nodeType":"RevertStatement","src":"27140:48:19"}]}}]},"documentation":{"id":4455,"nodeType":"StructuredDocumentation","src":"26664:312:19","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":4480,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26990:8:19","nodeType":"FunctionDefinition","parameters":{"id":4458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4457,"mutability":"mutable","name":"value","nameLocation":"27006:5:19","nodeType":"VariableDeclaration","scope":4480,"src":"26999:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4456,"name":"int256","nodeType":"ElementaryTypeName","src":"26999:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26998:14:19"},"returnParameters":{"id":4461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4460,"mutability":"mutable","name":"downcasted","nameLocation":"27043:10:19","nodeType":"VariableDeclaration","scope":4480,"src":"27036:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":4459,"name":"int112","nodeType":"ElementaryTypeName","src":"27036:6:19","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27035:19:19"},"scope":4849,"src":"26981:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4505,"nodeType":"Block","src":"27602:150:19","statements":[{"expression":{"id":4493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4488,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"27612:10:19","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4491,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4483,"src":"27632:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27625:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":4489,"name":"int104","nodeType":"ElementaryTypeName","src":"27625:6:19","typeDescriptions":{}}},"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27625:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27612:26:19","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":4494,"nodeType":"ExpressionStatement","src":"27612:26:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4495,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"27652:10:19","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4496,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4483,"src":"27666:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27652:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4504,"nodeType":"IfStatement","src":"27648:98:19","trueBody":{"id":4503,"nodeType":"Block","src":"27673:73:19","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":4499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27724:3:19","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":4500,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4483,"src":"27729:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4498,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"27694:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27694:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4502,"nodeType":"RevertStatement","src":"27687:48:19"}]}}]},"documentation":{"id":4481,"nodeType":"StructuredDocumentation","src":"27211:312:19","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":4506,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27537:8:19","nodeType":"FunctionDefinition","parameters":{"id":4484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4483,"mutability":"mutable","name":"value","nameLocation":"27553:5:19","nodeType":"VariableDeclaration","scope":4506,"src":"27546:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4482,"name":"int256","nodeType":"ElementaryTypeName","src":"27546:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27545:14:19"},"returnParameters":{"id":4487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4486,"mutability":"mutable","name":"downcasted","nameLocation":"27590:10:19","nodeType":"VariableDeclaration","scope":4506,"src":"27583:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4485,"name":"int104","nodeType":"ElementaryTypeName","src":"27583:6:19","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27582:19:19"},"scope":4849,"src":"27528:224:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4531,"nodeType":"Block","src":"28142:148:19","statements":[{"expression":{"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4514,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4512,"src":"28152:10:19","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4509,"src":"28171:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28165:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":4515,"name":"int96","nodeType":"ElementaryTypeName","src":"28165:5:19","typeDescriptions":{}}},"id":4518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28165:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28152:25:19","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":4520,"nodeType":"ExpressionStatement","src":"28152:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4521,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4512,"src":"28191:10:19","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4522,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4509,"src":"28205:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28191:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4530,"nodeType":"IfStatement","src":"28187:97:19","trueBody":{"id":4529,"nodeType":"Block","src":"28212:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":4525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28263:2:19","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":4526,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4509,"src":"28267:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4524,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"28233:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28233:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4528,"nodeType":"RevertStatement","src":"28226:47:19"}]}}]},"documentation":{"id":4507,"nodeType":"StructuredDocumentation","src":"27758:307:19","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":4532,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28079:7:19","nodeType":"FunctionDefinition","parameters":{"id":4510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4509,"mutability":"mutable","name":"value","nameLocation":"28094:5:19","nodeType":"VariableDeclaration","scope":4532,"src":"28087:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4508,"name":"int256","nodeType":"ElementaryTypeName","src":"28087:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28086:14:19"},"returnParameters":{"id":4513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4512,"mutability":"mutable","name":"downcasted","nameLocation":"28130:10:19","nodeType":"VariableDeclaration","scope":4532,"src":"28124:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":4511,"name":"int96","nodeType":"ElementaryTypeName","src":"28124:5:19","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28123:18:19"},"scope":4849,"src":"28070:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4557,"nodeType":"Block","src":"28680:148:19","statements":[{"expression":{"id":4545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4540,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"28690:10:19","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4543,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4535,"src":"28709:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28703:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":4541,"name":"int88","nodeType":"ElementaryTypeName","src":"28703:5:19","typeDescriptions":{}}},"id":4544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28703:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28690:25:19","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":4546,"nodeType":"ExpressionStatement","src":"28690:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4547,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"28729:10:19","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4548,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4535,"src":"28743:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28729:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4556,"nodeType":"IfStatement","src":"28725:97:19","trueBody":{"id":4555,"nodeType":"Block","src":"28750:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":4551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28801:2:19","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":4552,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4535,"src":"28805:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4550,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"28771:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28771:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4554,"nodeType":"RevertStatement","src":"28764:47:19"}]}}]},"documentation":{"id":4533,"nodeType":"StructuredDocumentation","src":"28296:307:19","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":4558,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28617:7:19","nodeType":"FunctionDefinition","parameters":{"id":4536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4535,"mutability":"mutable","name":"value","nameLocation":"28632:5:19","nodeType":"VariableDeclaration","scope":4558,"src":"28625:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4534,"name":"int256","nodeType":"ElementaryTypeName","src":"28625:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28624:14:19"},"returnParameters":{"id":4539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4538,"mutability":"mutable","name":"downcasted","nameLocation":"28668:10:19","nodeType":"VariableDeclaration","scope":4558,"src":"28662:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":4537,"name":"int88","nodeType":"ElementaryTypeName","src":"28662:5:19","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28661:18:19"},"scope":4849,"src":"28608:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4583,"nodeType":"Block","src":"29218:148:19","statements":[{"expression":{"id":4571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4566,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"29228:10:19","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4569,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"29247:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29241:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":4567,"name":"int80","nodeType":"ElementaryTypeName","src":"29241:5:19","typeDescriptions":{}}},"id":4570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29241:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29228:25:19","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":4572,"nodeType":"ExpressionStatement","src":"29228:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4573,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"29267:10:19","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4574,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"29281:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29267:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4582,"nodeType":"IfStatement","src":"29263:97:19","trueBody":{"id":4581,"nodeType":"Block","src":"29288:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":4577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29339:2:19","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":4578,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"29343:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4576,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"29309:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29309:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4580,"nodeType":"RevertStatement","src":"29302:47:19"}]}}]},"documentation":{"id":4559,"nodeType":"StructuredDocumentation","src":"28834:307:19","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":4584,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29155:7:19","nodeType":"FunctionDefinition","parameters":{"id":4562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4561,"mutability":"mutable","name":"value","nameLocation":"29170:5:19","nodeType":"VariableDeclaration","scope":4584,"src":"29163:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4560,"name":"int256","nodeType":"ElementaryTypeName","src":"29163:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29162:14:19"},"returnParameters":{"id":4565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4564,"mutability":"mutable","name":"downcasted","nameLocation":"29206:10:19","nodeType":"VariableDeclaration","scope":4584,"src":"29200:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":4563,"name":"int80","nodeType":"ElementaryTypeName","src":"29200:5:19","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29199:18:19"},"scope":4849,"src":"29146:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4609,"nodeType":"Block","src":"29756:148:19","statements":[{"expression":{"id":4597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4592,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"29766:10:19","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4587,"src":"29785:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29779:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":4593,"name":"int72","nodeType":"ElementaryTypeName","src":"29779:5:19","typeDescriptions":{}}},"id":4596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29779:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29766:25:19","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":4598,"nodeType":"ExpressionStatement","src":"29766:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4599,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"29805:10:19","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4600,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4587,"src":"29819:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29805:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4608,"nodeType":"IfStatement","src":"29801:97:19","trueBody":{"id":4607,"nodeType":"Block","src":"29826:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":4603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29877:2:19","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":4604,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4587,"src":"29881:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4602,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"29847:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29847:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4606,"nodeType":"RevertStatement","src":"29840:47:19"}]}}]},"documentation":{"id":4585,"nodeType":"StructuredDocumentation","src":"29372:307:19","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":4610,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29693:7:19","nodeType":"FunctionDefinition","parameters":{"id":4588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4587,"mutability":"mutable","name":"value","nameLocation":"29708:5:19","nodeType":"VariableDeclaration","scope":4610,"src":"29701:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4586,"name":"int256","nodeType":"ElementaryTypeName","src":"29701:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29700:14:19"},"returnParameters":{"id":4591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4590,"mutability":"mutable","name":"downcasted","nameLocation":"29744:10:19","nodeType":"VariableDeclaration","scope":4610,"src":"29738:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":4589,"name":"int72","nodeType":"ElementaryTypeName","src":"29738:5:19","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29737:18:19"},"scope":4849,"src":"29684:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4635,"nodeType":"Block","src":"30294:148:19","statements":[{"expression":{"id":4623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4618,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"30304:10:19","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4621,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4613,"src":"30323:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30317:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":4619,"name":"int64","nodeType":"ElementaryTypeName","src":"30317:5:19","typeDescriptions":{}}},"id":4622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30317:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30304:25:19","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":4624,"nodeType":"ExpressionStatement","src":"30304:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4625,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"30343:10:19","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4626,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4613,"src":"30357:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30343:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4634,"nodeType":"IfStatement","src":"30339:97:19","trueBody":{"id":4633,"nodeType":"Block","src":"30364:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":4629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30415:2:19","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":4630,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4613,"src":"30419:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4628,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"30385:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30385:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4632,"nodeType":"RevertStatement","src":"30378:47:19"}]}}]},"documentation":{"id":4611,"nodeType":"StructuredDocumentation","src":"29910:307:19","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":4636,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30231:7:19","nodeType":"FunctionDefinition","parameters":{"id":4614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4613,"mutability":"mutable","name":"value","nameLocation":"30246:5:19","nodeType":"VariableDeclaration","scope":4636,"src":"30239:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4612,"name":"int256","nodeType":"ElementaryTypeName","src":"30239:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30238:14:19"},"returnParameters":{"id":4617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4616,"mutability":"mutable","name":"downcasted","nameLocation":"30282:10:19","nodeType":"VariableDeclaration","scope":4636,"src":"30276:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":4615,"name":"int64","nodeType":"ElementaryTypeName","src":"30276:5:19","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30275:18:19"},"scope":4849,"src":"30222:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4661,"nodeType":"Block","src":"30832:148:19","statements":[{"expression":{"id":4649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4644,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"30842:10:19","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4647,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"30861:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30855:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":4645,"name":"int56","nodeType":"ElementaryTypeName","src":"30855:5:19","typeDescriptions":{}}},"id":4648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30855:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30842:25:19","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":4650,"nodeType":"ExpressionStatement","src":"30842:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4651,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"30881:10:19","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"30895:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30881:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4660,"nodeType":"IfStatement","src":"30877:97:19","trueBody":{"id":4659,"nodeType":"Block","src":"30902:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":4655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30953:2:19","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":4656,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"30957:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4654,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"30923:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30923:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4658,"nodeType":"RevertStatement","src":"30916:47:19"}]}}]},"documentation":{"id":4637,"nodeType":"StructuredDocumentation","src":"30448:307:19","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":4662,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30769:7:19","nodeType":"FunctionDefinition","parameters":{"id":4640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4639,"mutability":"mutable","name":"value","nameLocation":"30784:5:19","nodeType":"VariableDeclaration","scope":4662,"src":"30777:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4638,"name":"int256","nodeType":"ElementaryTypeName","src":"30777:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30776:14:19"},"returnParameters":{"id":4643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4642,"mutability":"mutable","name":"downcasted","nameLocation":"30820:10:19","nodeType":"VariableDeclaration","scope":4662,"src":"30814:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":4641,"name":"int56","nodeType":"ElementaryTypeName","src":"30814:5:19","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30813:18:19"},"scope":4849,"src":"30760:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4687,"nodeType":"Block","src":"31370:148:19","statements":[{"expression":{"id":4675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4670,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4668,"src":"31380:10:19","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4673,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4665,"src":"31399:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31393:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":4671,"name":"int48","nodeType":"ElementaryTypeName","src":"31393:5:19","typeDescriptions":{}}},"id":4674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31393:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31380:25:19","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":4676,"nodeType":"ExpressionStatement","src":"31380:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4677,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4668,"src":"31419:10:19","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4678,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4665,"src":"31433:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31419:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4686,"nodeType":"IfStatement","src":"31415:97:19","trueBody":{"id":4685,"nodeType":"Block","src":"31440:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":4681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31491:2:19","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":4682,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4665,"src":"31495:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4680,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"31461:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31461:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4684,"nodeType":"RevertStatement","src":"31454:47:19"}]}}]},"documentation":{"id":4663,"nodeType":"StructuredDocumentation","src":"30986:307:19","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":4688,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31307:7:19","nodeType":"FunctionDefinition","parameters":{"id":4666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4665,"mutability":"mutable","name":"value","nameLocation":"31322:5:19","nodeType":"VariableDeclaration","scope":4688,"src":"31315:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4664,"name":"int256","nodeType":"ElementaryTypeName","src":"31315:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31314:14:19"},"returnParameters":{"id":4669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4668,"mutability":"mutable","name":"downcasted","nameLocation":"31358:10:19","nodeType":"VariableDeclaration","scope":4688,"src":"31352:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":4667,"name":"int48","nodeType":"ElementaryTypeName","src":"31352:5:19","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31351:18:19"},"scope":4849,"src":"31298:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4713,"nodeType":"Block","src":"31908:148:19","statements":[{"expression":{"id":4701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4696,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"31918:10:19","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4699,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"31937:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31931:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":4697,"name":"int40","nodeType":"ElementaryTypeName","src":"31931:5:19","typeDescriptions":{}}},"id":4700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31931:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31918:25:19","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":4702,"nodeType":"ExpressionStatement","src":"31918:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4703,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"31957:10:19","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4704,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"31971:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31957:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4712,"nodeType":"IfStatement","src":"31953:97:19","trueBody":{"id":4711,"nodeType":"Block","src":"31978:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":4707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32029:2:19","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":4708,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"32033:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4706,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"31999:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31999:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4710,"nodeType":"RevertStatement","src":"31992:47:19"}]}}]},"documentation":{"id":4689,"nodeType":"StructuredDocumentation","src":"31524:307:19","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":4714,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31845:7:19","nodeType":"FunctionDefinition","parameters":{"id":4692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4691,"mutability":"mutable","name":"value","nameLocation":"31860:5:19","nodeType":"VariableDeclaration","scope":4714,"src":"31853:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4690,"name":"int256","nodeType":"ElementaryTypeName","src":"31853:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31852:14:19"},"returnParameters":{"id":4695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4694,"mutability":"mutable","name":"downcasted","nameLocation":"31896:10:19","nodeType":"VariableDeclaration","scope":4714,"src":"31890:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":4693,"name":"int40","nodeType":"ElementaryTypeName","src":"31890:5:19","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31889:18:19"},"scope":4849,"src":"31836:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4739,"nodeType":"Block","src":"32446:148:19","statements":[{"expression":{"id":4727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4722,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"32456:10:19","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4725,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4717,"src":"32475:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32469:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":4723,"name":"int32","nodeType":"ElementaryTypeName","src":"32469:5:19","typeDescriptions":{}}},"id":4726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32469:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32456:25:19","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":4728,"nodeType":"ExpressionStatement","src":"32456:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4729,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"32495:10:19","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4730,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4717,"src":"32509:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32495:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4738,"nodeType":"IfStatement","src":"32491:97:19","trueBody":{"id":4737,"nodeType":"Block","src":"32516:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":4733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32567:2:19","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":4734,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4717,"src":"32571:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4732,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"32537:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32537:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4736,"nodeType":"RevertStatement","src":"32530:47:19"}]}}]},"documentation":{"id":4715,"nodeType":"StructuredDocumentation","src":"32062:307:19","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":4740,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32383:7:19","nodeType":"FunctionDefinition","parameters":{"id":4718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4717,"mutability":"mutable","name":"value","nameLocation":"32398:5:19","nodeType":"VariableDeclaration","scope":4740,"src":"32391:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4716,"name":"int256","nodeType":"ElementaryTypeName","src":"32391:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32390:14:19"},"returnParameters":{"id":4721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4720,"mutability":"mutable","name":"downcasted","nameLocation":"32434:10:19","nodeType":"VariableDeclaration","scope":4740,"src":"32428:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":4719,"name":"int32","nodeType":"ElementaryTypeName","src":"32428:5:19","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32427:18:19"},"scope":4849,"src":"32374:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4765,"nodeType":"Block","src":"32984:148:19","statements":[{"expression":{"id":4753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4748,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4746,"src":"32994:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4751,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4743,"src":"33013:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33007:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":4749,"name":"int24","nodeType":"ElementaryTypeName","src":"33007:5:19","typeDescriptions":{}}},"id":4752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33007:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32994:25:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":4754,"nodeType":"ExpressionStatement","src":"32994:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4755,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4746,"src":"33033:10:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4756,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4743,"src":"33047:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33033:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4764,"nodeType":"IfStatement","src":"33029:97:19","trueBody":{"id":4763,"nodeType":"Block","src":"33054:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":4759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33105:2:19","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":4760,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4743,"src":"33109:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4758,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"33075:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33075:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4762,"nodeType":"RevertStatement","src":"33068:47:19"}]}}]},"documentation":{"id":4741,"nodeType":"StructuredDocumentation","src":"32600:307:19","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":4766,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32921:7:19","nodeType":"FunctionDefinition","parameters":{"id":4744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4743,"mutability":"mutable","name":"value","nameLocation":"32936:5:19","nodeType":"VariableDeclaration","scope":4766,"src":"32929:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4742,"name":"int256","nodeType":"ElementaryTypeName","src":"32929:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32928:14:19"},"returnParameters":{"id":4747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4746,"mutability":"mutable","name":"downcasted","nameLocation":"32972:10:19","nodeType":"VariableDeclaration","scope":4766,"src":"32966:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4745,"name":"int24","nodeType":"ElementaryTypeName","src":"32966:5:19","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32965:18:19"},"scope":4849,"src":"32912:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4791,"nodeType":"Block","src":"33522:148:19","statements":[{"expression":{"id":4779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4774,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4772,"src":"33532:10:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4777,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4769,"src":"33551:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33545:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":4775,"name":"int16","nodeType":"ElementaryTypeName","src":"33545:5:19","typeDescriptions":{}}},"id":4778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33545:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33532:25:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":4780,"nodeType":"ExpressionStatement","src":"33532:25:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4781,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4772,"src":"33571:10:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4769,"src":"33585:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33571:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4790,"nodeType":"IfStatement","src":"33567:97:19","trueBody":{"id":4789,"nodeType":"Block","src":"33592:72:19","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":4785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33643:2:19","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":4786,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4769,"src":"33647:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4784,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"33613:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33613:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4788,"nodeType":"RevertStatement","src":"33606:47:19"}]}}]},"documentation":{"id":4767,"nodeType":"StructuredDocumentation","src":"33138:307:19","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":4792,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33459:7:19","nodeType":"FunctionDefinition","parameters":{"id":4770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4769,"mutability":"mutable","name":"value","nameLocation":"33474:5:19","nodeType":"VariableDeclaration","scope":4792,"src":"33467:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4768,"name":"int256","nodeType":"ElementaryTypeName","src":"33467:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33466:14:19"},"returnParameters":{"id":4773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4772,"mutability":"mutable","name":"downcasted","nameLocation":"33510:10:19","nodeType":"VariableDeclaration","scope":4792,"src":"33504:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":4771,"name":"int16","nodeType":"ElementaryTypeName","src":"33504:5:19","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33503:18:19"},"scope":4849,"src":"33450:220:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4817,"nodeType":"Block","src":"34053:146:19","statements":[{"expression":{"id":4805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4800,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4798,"src":"34063:10:19","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4803,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4795,"src":"34081:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34076:4:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":4801,"name":"int8","nodeType":"ElementaryTypeName","src":"34076:4:19","typeDescriptions":{}}},"id":4804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34076:11:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34063:24:19","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":4806,"nodeType":"ExpressionStatement","src":"34063:24:19"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4807,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4798,"src":"34101:10:19","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4808,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4795,"src":"34115:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34101:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4816,"nodeType":"IfStatement","src":"34097:96:19","trueBody":{"id":4815,"nodeType":"Block","src":"34122:71:19","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":4811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34173:1:19","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":4812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4795,"src":"34176:5:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4810,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"34143:29:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$__$","typeString":"function (uint8,int256) pure"}},"id":4813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34143:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4814,"nodeType":"RevertStatement","src":"34136:46:19"}]}}]},"documentation":{"id":4793,"nodeType":"StructuredDocumentation","src":"33676:302:19","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":4818,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33992:6:19","nodeType":"FunctionDefinition","parameters":{"id":4796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4795,"mutability":"mutable","name":"value","nameLocation":"34006:5:19","nodeType":"VariableDeclaration","scope":4818,"src":"33999:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4794,"name":"int256","nodeType":"ElementaryTypeName","src":"33999:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33998:14:19"},"returnParameters":{"id":4799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4798,"mutability":"mutable","name":"downcasted","nameLocation":"34041:10:19","nodeType":"VariableDeclaration","scope":4818,"src":"34036:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":4797,"name":"int8","nodeType":"ElementaryTypeName","src":"34036:4:19","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34035:17:19"},"scope":4849,"src":"33983:216:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4847,"nodeType":"Block","src":"34439:250:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4826,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4821,"src":"34552:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":4831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34573:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4830,"name":"int256","nodeType":"ElementaryTypeName","src":"34573:6:19","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":4829,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34568:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34568:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":4833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34581:3:19","memberName":"max","nodeType":"MemberAccess","src":"34568:16:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34560:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4827,"name":"uint256","nodeType":"ElementaryTypeName","src":"34560:7:19","typeDescriptions":{}}},"id":4834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34560:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34552:33:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4841,"nodeType":"IfStatement","src":"34548:105:19","trueBody":{"id":4840,"nodeType":"Block","src":"34587:66:19","statements":[{"errorCall":{"arguments":[{"id":4837,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4821,"src":"34636:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4836,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3121,"src":"34608:27:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34608:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4839,"nodeType":"RevertStatement","src":"34601:41:19"}]}},{"expression":{"arguments":[{"id":4844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4821,"src":"34676:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34669:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4842,"name":"int256","nodeType":"ElementaryTypeName","src":"34669:6:19","typeDescriptions":{}}},"id":4845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34669:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4825,"id":4846,"nodeType":"Return","src":"34662:20:19"}]},"documentation":{"id":4819,"nodeType":"StructuredDocumentation","src":"34205:165:19","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":4848,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34384:8:19","nodeType":"FunctionDefinition","parameters":{"id":4822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4821,"mutability":"mutable","name":"value","nameLocation":"34401:5:19","nodeType":"VariableDeclaration","scope":4848,"src":"34393:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4820,"name":"uint256","nodeType":"ElementaryTypeName","src":"34393:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34392:15:19"},"returnParameters":{"id":4825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4848,"src":"34431:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4823,"name":"int256","nodeType":"ElementaryTypeName","src":"34431:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34430:8:19"},"scope":4849,"src":"34375:314:19","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4850,"src":"764:33927:19","usedErrors":[3104,3109,3116,3121],"usedEvents":[]}],"src":"192:34500:19"},"id":19},"@openzeppelin/contracts/utils/structs/Checkpoints.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/structs/Checkpoints.sol","exportedSymbols":{"Checkpoints":[6421],"Math":[3094]},"id":6422,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4851,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"201:24:20"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"../math/Math.sol","id":4853,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6422,"sourceUnit":3095,"src":"227:38:20","symbolAliases":[{"foreign":{"id":4852,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"235:4:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Checkpoints","contractDependencies":[],"contractKind":"library","documentation":{"id":4854,"nodeType":"StructuredDocumentation","src":"267:400:20","text":" @dev This library defines the `Trace*` struct, for checkpointing values as they change at different points in\n time, and later looking up past values by block number. See {Votes} as an example.\n To create a history of checkpoints define a variable type `Checkpoints.Trace*` in your contract, and store a new\n checkpoint for the current transaction block using the {push} function."},"fullyImplemented":true,"id":6421,"linearizedBaseContracts":[6421],"name":"Checkpoints","nameLocation":"676:11:20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4855,"nodeType":"StructuredDocumentation","src":"694:82:20","text":" @dev A value was attempted to be inserted on a past checkpoint."},"errorSelector":"2520601d","id":4857,"name":"CheckpointUnorderedInsertion","nameLocation":"787:28:20","nodeType":"ErrorDefinition","parameters":{"id":4856,"nodeType":"ParameterList","parameters":[],"src":"815:2:20"},"src":"781:37:20"},{"canonicalName":"Checkpoints.Trace224","id":4862,"members":[{"constant":false,"id":4861,"mutability":"mutable","name":"_checkpoints","nameLocation":"866:12:20","nodeType":"VariableDeclaration","scope":4862,"src":"850:28:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"},"typeName":{"baseType":{"id":4859,"nodeType":"UserDefinedTypeName","pathNode":{"id":4858,"name":"Checkpoint224","nameLocations":["850:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4867,"src":"850:13:20"},"referencedDeclaration":4867,"src":"850:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"}},"id":4860,"nodeType":"ArrayTypeName","src":"850:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"}},"visibility":"internal"}],"name":"Trace224","nameLocation":"831:8:20","nodeType":"StructDefinition","scope":6421,"src":"824:61:20","visibility":"public"},{"canonicalName":"Checkpoints.Checkpoint224","id":4867,"members":[{"constant":false,"id":4864,"mutability":"mutable","name":"_key","nameLocation":"929:4:20","nodeType":"VariableDeclaration","scope":4867,"src":"922:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4863,"name":"uint32","nodeType":"ElementaryTypeName","src":"922:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4866,"mutability":"mutable","name":"_value","nameLocation":"951:6:20","nodeType":"VariableDeclaration","scope":4867,"src":"943:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":4865,"name":"uint224","nodeType":"ElementaryTypeName","src":"943:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"name":"Checkpoint224","nameLocation":"898:13:20","nodeType":"StructDefinition","scope":6421,"src":"891:73:20","visibility":"public"},{"body":{"id":4889,"nodeType":"Block","src":"1377:62:20","statements":[{"expression":{"arguments":[{"expression":{"id":4883,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4871,"src":"1402:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":4884,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1407:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"1402:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"id":4885,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"1421:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4886,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4875,"src":"1426:5:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":4882,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[5259,5780,6301],"referencedDeclaration":5259,"src":"1394:7:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint224_$returns$_t_uint224_$_t_uint224_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint32,uint224) returns (uint224,uint224)"}},"id":4887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1394:38:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":4881,"id":4888,"nodeType":"Return","src":"1387:45:20"}]},"documentation":{"id":4868,"nodeType":"StructuredDocumentation","src":"970:302:20","text":" @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\n Returns previous value and new value.\n IMPORTANT: Never accept `key` as a user input, since an arbitrary `type(uint32).max` key set will disable the\n library."},"id":4890,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"1286:4:20","nodeType":"FunctionDefinition","parameters":{"id":4876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4871,"mutability":"mutable","name":"self","nameLocation":"1308:4:20","nodeType":"VariableDeclaration","scope":4890,"src":"1291:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"},"typeName":{"id":4870,"nodeType":"UserDefinedTypeName","pathNode":{"id":4869,"name":"Trace224","nameLocations":["1291:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":4862,"src":"1291:8:20"},"referencedDeclaration":4862,"src":"1291:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"}},"visibility":"internal"},{"constant":false,"id":4873,"mutability":"mutable","name":"key","nameLocation":"1321:3:20","nodeType":"VariableDeclaration","scope":4890,"src":"1314:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4872,"name":"uint32","nodeType":"ElementaryTypeName","src":"1314:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4875,"mutability":"mutable","name":"value","nameLocation":"1334:5:20","nodeType":"VariableDeclaration","scope":4890,"src":"1326:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":4874,"name":"uint224","nodeType":"ElementaryTypeName","src":"1326:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"1290:50:20"},"returnParameters":{"id":4881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4878,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4890,"src":"1359:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":4877,"name":"uint224","nodeType":"ElementaryTypeName","src":"1359:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":4880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4890,"src":"1368:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":4879,"name":"uint224","nodeType":"ElementaryTypeName","src":"1368:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"1358:18:20"},"scope":6421,"src":"1277:162:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4929,"nodeType":"Block","src":"1692:207:20","statements":[{"assignments":[4902],"declarations":[{"constant":false,"id":4902,"mutability":"mutable","name":"len","nameLocation":"1710:3:20","nodeType":"VariableDeclaration","scope":4929,"src":"1702:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4901,"name":"uint256","nodeType":"ElementaryTypeName","src":"1702:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4906,"initialValue":{"expression":{"expression":{"id":4903,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4894,"src":"1716:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":4904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1721:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"1716:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},"id":4905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1734:6:20","memberName":"length","nodeType":"MemberAccess","src":"1716:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1702:38:20"},{"assignments":[4908],"declarations":[{"constant":false,"id":4908,"mutability":"mutable","name":"pos","nameLocation":"1758:3:20","nodeType":"VariableDeclaration","scope":4929,"src":"1750:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4907,"name":"uint256","nodeType":"ElementaryTypeName","src":"1750:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4916,"initialValue":{"arguments":[{"expression":{"id":4910,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4894,"src":"1783:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":4911,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1788:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"1783:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"id":4912,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4896,"src":"1802:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":4913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1807:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":4914,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4902,"src":"1810:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4909,"name":"_lowerBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5363,5884,6405],"referencedDeclaration":5363,"src":"1764:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1764:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1750:64:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4917,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4908,"src":"1831:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4918,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4902,"src":"1838:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1831:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":4922,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4894,"src":"1862:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":4923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1867:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"1862:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"id":4924,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4908,"src":"1881:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4921,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"1848:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":4925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1848:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"id":4926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1886:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":4866,"src":"1848:44:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":4927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1831:61:20","trueExpression":{"hexValue":"30","id":4920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1844:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":4900,"id":4928,"nodeType":"Return","src":"1824:68:20"}]},"documentation":{"id":4891,"nodeType":"StructuredDocumentation","src":"1445:154:20","text":" @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if\n there is none."},"id":4930,"implemented":true,"kind":"function","modifiers":[],"name":"lowerLookup","nameLocation":"1613:11:20","nodeType":"FunctionDefinition","parameters":{"id":4897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4894,"mutability":"mutable","name":"self","nameLocation":"1642:4:20","nodeType":"VariableDeclaration","scope":4930,"src":"1625:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"},"typeName":{"id":4893,"nodeType":"UserDefinedTypeName","pathNode":{"id":4892,"name":"Trace224","nameLocations":["1625:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":4862,"src":"1625:8:20"},"referencedDeclaration":4862,"src":"1625:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"}},"visibility":"internal"},{"constant":false,"id":4896,"mutability":"mutable","name":"key","nameLocation":"1655:3:20","nodeType":"VariableDeclaration","scope":4930,"src":"1648:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4895,"name":"uint32","nodeType":"ElementaryTypeName","src":"1648:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1624:35:20"},"returnParameters":{"id":4900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4930,"src":"1683:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":4898,"name":"uint224","nodeType":"ElementaryTypeName","src":"1683:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"1682:9:20"},"scope":6421,"src":"1604:295:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4971,"nodeType":"Block","src":"2154:209:20","statements":[{"assignments":[4942],"declarations":[{"constant":false,"id":4942,"mutability":"mutable","name":"len","nameLocation":"2172:3:20","nodeType":"VariableDeclaration","scope":4971,"src":"2164:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4941,"name":"uint256","nodeType":"ElementaryTypeName","src":"2164:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4946,"initialValue":{"expression":{"expression":{"id":4943,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4934,"src":"2178:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":4944,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2183:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"2178:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},"id":4945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2196:6:20","memberName":"length","nodeType":"MemberAccess","src":"2178:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2164:38:20"},{"assignments":[4948],"declarations":[{"constant":false,"id":4948,"mutability":"mutable","name":"pos","nameLocation":"2220:3:20","nodeType":"VariableDeclaration","scope":4971,"src":"2212:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4947,"name":"uint256","nodeType":"ElementaryTypeName","src":"2212:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4956,"initialValue":{"arguments":[{"expression":{"id":4950,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4934,"src":"2245:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":4951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2250:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"2245:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"id":4952,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4936,"src":"2264:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":4953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2269:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":4954,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4942,"src":"2272:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4949,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5311,5832,6353],"referencedDeclaration":5311,"src":"2226:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":4955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2212:64:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4957,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"2293:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2300:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2293:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":4962,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4934,"src":"2322:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":4963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2327:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"2322:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4964,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"2341:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2347:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2341:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4961,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"2308:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2308:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"id":4968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2350:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":4866,"src":"2308:48:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":4969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2293:63:20","trueExpression":{"hexValue":"30","id":4960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2304:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":4940,"id":4970,"nodeType":"Return","src":"2286:70:20"}]},"documentation":{"id":4931,"nodeType":"StructuredDocumentation","src":"1905:156:20","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n if there is none."},"id":4972,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookup","nameLocation":"2075:11:20","nodeType":"FunctionDefinition","parameters":{"id":4937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4934,"mutability":"mutable","name":"self","nameLocation":"2104:4:20","nodeType":"VariableDeclaration","scope":4972,"src":"2087:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"},"typeName":{"id":4933,"nodeType":"UserDefinedTypeName","pathNode":{"id":4932,"name":"Trace224","nameLocations":["2087:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":4862,"src":"2087:8:20"},"referencedDeclaration":4862,"src":"2087:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"}},"visibility":"internal"},{"constant":false,"id":4936,"mutability":"mutable","name":"key","nameLocation":"2117:3:20","nodeType":"VariableDeclaration","scope":4972,"src":"2110:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4935,"name":"uint32","nodeType":"ElementaryTypeName","src":"2110:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2086:35:20"},"returnParameters":{"id":4940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4972,"src":"2145:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":4938,"name":"uint224","nodeType":"ElementaryTypeName","src":"2145:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"2144:9:20"},"scope":6421,"src":"2066:297:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5056,"nodeType":"Block","src":"2762:512:20","statements":[{"assignments":[4984],"declarations":[{"constant":false,"id":4984,"mutability":"mutable","name":"len","nameLocation":"2780:3:20","nodeType":"VariableDeclaration","scope":5056,"src":"2772:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4983,"name":"uint256","nodeType":"ElementaryTypeName","src":"2772:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4988,"initialValue":{"expression":{"expression":{"id":4985,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"2786:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":4986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2791:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"2786:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},"id":4987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2804:6:20","memberName":"length","nodeType":"MemberAccess","src":"2786:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2772:38:20"},{"assignments":[4990],"declarations":[{"constant":false,"id":4990,"mutability":"mutable","name":"low","nameLocation":"2829:3:20","nodeType":"VariableDeclaration","scope":5056,"src":"2821:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4989,"name":"uint256","nodeType":"ElementaryTypeName","src":"2821:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4992,"initialValue":{"hexValue":"30","id":4991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2821:15:20"},{"assignments":[4994],"declarations":[{"constant":false,"id":4994,"mutability":"mutable","name":"high","nameLocation":"2854:4:20","nodeType":"VariableDeclaration","scope":5056,"src":"2846:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4993,"name":"uint256","nodeType":"ElementaryTypeName","src":"2846:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4996,"initialValue":{"id":4995,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"2861:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2846:18:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4997,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"2879:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":4998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2885:1:20","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"2879:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5031,"nodeType":"IfStatement","src":"2875:234:20","trueBody":{"id":5030,"nodeType":"Block","src":"2888:221:20","statements":[{"assignments":[5001],"declarations":[{"constant":false,"id":5001,"mutability":"mutable","name":"mid","nameLocation":"2910:3:20","nodeType":"VariableDeclaration","scope":5030,"src":"2902:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5000,"name":"uint256","nodeType":"ElementaryTypeName","src":"2902:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5008,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5002,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"2916:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":5005,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"2932:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5003,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"2922:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3094_$","typeString":"type(library Math)"}},"id":5004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2927:4:20","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":2583,"src":"2922:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":5006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2922:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2916:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2902:34:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5009,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4978,"src":"2954:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":5011,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"2974:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":5012,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2979:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"2974:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"id":5013,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"2993:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5010,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"2960:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2960:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"id":5015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2998:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":4864,"src":"2960:42:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2954:48:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5028,"nodeType":"Block","src":"3053:46:20","statements":[{"expression":{"id":5026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5022,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4990,"src":"3071:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5023,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"3077:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3083:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3077:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3071:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5027,"nodeType":"ExpressionStatement","src":"3071:13:20"}]},"id":5029,"nodeType":"IfStatement","src":"2950:149:20","trueBody":{"id":5021,"nodeType":"Block","src":"3004:43:20","statements":[{"expression":{"id":5019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5017,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"3022:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5018,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"3029:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3022:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5020,"nodeType":"ExpressionStatement","src":"3022:10:20"}]}}]}},{"assignments":[5033],"declarations":[{"constant":false,"id":5033,"mutability":"mutable","name":"pos","nameLocation":"3127:3:20","nodeType":"VariableDeclaration","scope":5056,"src":"3119:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5032,"name":"uint256","nodeType":"ElementaryTypeName","src":"3119:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5041,"initialValue":{"arguments":[{"expression":{"id":5035,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"3152:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":5036,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3157:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"3152:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"id":5037,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4978,"src":"3171:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5038,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4990,"src":"3176:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5039,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"3181:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5034,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5311,5832,6353],"referencedDeclaration":5311,"src":"3133:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":5040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3133:53:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3119:67:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5042,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"3204:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3211:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3204:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5047,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"3233:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":5048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3238:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"3233:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5049,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"3252:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3258:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3252:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5046,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"3219:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3219:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"id":5053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3261:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":4866,"src":"3219:48:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3204:63:20","trueExpression":{"hexValue":"30","id":5045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3215:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":4982,"id":5055,"nodeType":"Return","src":"3197:70:20"}]},"documentation":{"id":4973,"nodeType":"StructuredDocumentation","src":"2369:294:20","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n if there is none.\n NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high\n keys)."},"id":5057,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookupRecent","nameLocation":"2677:17:20","nodeType":"FunctionDefinition","parameters":{"id":4979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4976,"mutability":"mutable","name":"self","nameLocation":"2712:4:20","nodeType":"VariableDeclaration","scope":5057,"src":"2695:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"},"typeName":{"id":4975,"nodeType":"UserDefinedTypeName","pathNode":{"id":4974,"name":"Trace224","nameLocations":["2695:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":4862,"src":"2695:8:20"},"referencedDeclaration":4862,"src":"2695:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"}},"visibility":"internal"},{"constant":false,"id":4978,"mutability":"mutable","name":"key","nameLocation":"2725:3:20","nodeType":"VariableDeclaration","scope":5057,"src":"2718:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4977,"name":"uint32","nodeType":"ElementaryTypeName","src":"2718:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2694:35:20"},"returnParameters":{"id":4982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4981,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5057,"src":"2753:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":4980,"name":"uint224","nodeType":"ElementaryTypeName","src":"2753:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"2752:9:20"},"scope":6421,"src":"2668:606:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5086,"nodeType":"Block","src":"3465:135:20","statements":[{"assignments":[5067],"declarations":[{"constant":false,"id":5067,"mutability":"mutable","name":"pos","nameLocation":"3483:3:20","nodeType":"VariableDeclaration","scope":5086,"src":"3475:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5066,"name":"uint256","nodeType":"ElementaryTypeName","src":"3475:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5071,"initialValue":{"expression":{"expression":{"id":5068,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5061,"src":"3489:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":5069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3494:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"3489:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3507:6:20","memberName":"length","nodeType":"MemberAccess","src":"3489:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3475:38:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5072,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5067,"src":"3530:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3537:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3530:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5077,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5061,"src":"3559:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":5078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3564:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"3559:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5079,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5067,"src":"3578:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3584:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3578:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5076,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"3545:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3545:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"id":5083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3587:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":4866,"src":"3545:48:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3530:63:20","trueExpression":{"hexValue":"30","id":5075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3541:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5065,"id":5085,"nodeType":"Return","src":"3523:70:20"}]},"documentation":{"id":5058,"nodeType":"StructuredDocumentation","src":"3280:109:20","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":5087,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"3403:6:20","nodeType":"FunctionDefinition","parameters":{"id":5062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5061,"mutability":"mutable","name":"self","nameLocation":"3427:4:20","nodeType":"VariableDeclaration","scope":5087,"src":"3410:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"},"typeName":{"id":5060,"nodeType":"UserDefinedTypeName","pathNode":{"id":5059,"name":"Trace224","nameLocations":["3410:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":4862,"src":"3410:8:20"},"referencedDeclaration":4862,"src":"3410:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"}},"visibility":"internal"}],"src":"3409:23:20"},"returnParameters":{"id":5065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5087,"src":"3456:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5063,"name":"uint224","nodeType":"ElementaryTypeName","src":"3456:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3455:9:20"},"scope":6421,"src":"3394:206:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5135,"nodeType":"Block","src":"3893:274:20","statements":[{"assignments":[5101],"declarations":[{"constant":false,"id":5101,"mutability":"mutable","name":"pos","nameLocation":"3911:3:20","nodeType":"VariableDeclaration","scope":5135,"src":"3903:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5100,"name":"uint256","nodeType":"ElementaryTypeName","src":"3903:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5105,"initialValue":{"expression":{"expression":{"id":5102,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"3917:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":5103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3922:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"3917:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},"id":5104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3935:6:20","memberName":"length","nodeType":"MemberAccess","src":"3917:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3903:38:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5106,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"3955:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3962:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3955:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5133,"nodeType":"Block","src":"4016:145:20","statements":[{"assignments":[5117],"declarations":[{"constant":false,"id":5117,"mutability":"mutable","name":"ckpt","nameLocation":"4051:4:20","nodeType":"VariableDeclaration","scope":5133,"src":"4030:25:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224"},"typeName":{"id":5116,"nodeType":"UserDefinedTypeName","pathNode":{"id":5115,"name":"Checkpoint224","nameLocations":["4030:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4867,"src":"4030:13:20"},"referencedDeclaration":4867,"src":"4030:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"}},"visibility":"internal"}],"id":5125,"initialValue":{"arguments":[{"expression":{"id":5119,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"4072:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":5120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4077:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"4072:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5121,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"4091:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4097:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4091:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5118,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"4058:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4058:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4030:69:20"},{"expression":{"components":[{"hexValue":"74727565","id":5126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4121:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":5127,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5117,"src":"4127:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224 memory"}},"id":5128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4132:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":4864,"src":"4127:9:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":5129,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5117,"src":"4138:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224 memory"}},"id":5130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4143:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":4866,"src":"4138:11:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":5131,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4120:30:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$_t_uint224_$","typeString":"tuple(bool,uint32,uint224)"}},"functionReturnParameters":5099,"id":5132,"nodeType":"Return","src":"4113:37:20"}]},"id":5134,"nodeType":"IfStatement","src":"3951:210:20","trueBody":{"id":5114,"nodeType":"Block","src":"3965:45:20","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":5109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3987:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3994:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":5111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3997:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5112,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3986:13:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":5099,"id":5113,"nodeType":"Return","src":"3979:20:20"}]}}]},"documentation":{"id":5088,"nodeType":"StructuredDocumentation","src":"3606:168:20","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":5136,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"3788:16:20","nodeType":"FunctionDefinition","parameters":{"id":5092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5091,"mutability":"mutable","name":"self","nameLocation":"3822:4:20","nodeType":"VariableDeclaration","scope":5136,"src":"3805:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"},"typeName":{"id":5090,"nodeType":"UserDefinedTypeName","pathNode":{"id":5089,"name":"Trace224","nameLocations":["3805:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":4862,"src":"3805:8:20"},"referencedDeclaration":4862,"src":"3805:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"}},"visibility":"internal"}],"src":"3804:23:20"},"returnParameters":{"id":5099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5094,"mutability":"mutable","name":"exists","nameLocation":"3856:6:20","nodeType":"VariableDeclaration","scope":5136,"src":"3851:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5093,"name":"bool","nodeType":"ElementaryTypeName","src":"3851:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5096,"mutability":"mutable","name":"_key","nameLocation":"3871:4:20","nodeType":"VariableDeclaration","scope":5136,"src":"3864:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5095,"name":"uint32","nodeType":"ElementaryTypeName","src":"3864:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5098,"mutability":"mutable","name":"_value","nameLocation":"3885:6:20","nodeType":"VariableDeclaration","scope":5136,"src":"3877:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5097,"name":"uint224","nodeType":"ElementaryTypeName","src":"3877:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3850:42:20"},"scope":6421,"src":"3779:388:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5149,"nodeType":"Block","src":"4306:48:20","statements":[{"expression":{"expression":{"expression":{"id":5145,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"4323:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":5146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4328:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"4323:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},"id":5147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4341:6:20","memberName":"length","nodeType":"MemberAccess","src":"4323:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5144,"id":5148,"nodeType":"Return","src":"4316:31:20"}]},"documentation":{"id":5137,"nodeType":"StructuredDocumentation","src":"4173:57:20","text":" @dev Returns the number of checkpoint."},"id":5150,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"4244:6:20","nodeType":"FunctionDefinition","parameters":{"id":5141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5140,"mutability":"mutable","name":"self","nameLocation":"4268:4:20","nodeType":"VariableDeclaration","scope":5150,"src":"4251:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"},"typeName":{"id":5139,"nodeType":"UserDefinedTypeName","pathNode":{"id":5138,"name":"Trace224","nameLocations":["4251:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":4862,"src":"4251:8:20"},"referencedDeclaration":4862,"src":"4251:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"}},"visibility":"internal"}],"src":"4250:23:20"},"returnParameters":{"id":5144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5150,"src":"4297:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5142,"name":"uint256","nodeType":"ElementaryTypeName","src":"4297:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4296:9:20"},"scope":6421,"src":"4235:119:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5167,"nodeType":"Block","src":"4518:46:20","statements":[{"expression":{"baseExpression":{"expression":{"id":5162,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"4535:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224 storage pointer"}},"id":5163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4540:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":4861,"src":"4535:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage ref"}},"id":5165,"indexExpression":{"id":5164,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5156,"src":"4553:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4535:22:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage","typeString":"struct Checkpoints.Checkpoint224 storage ref"}},"functionReturnParameters":5161,"id":5166,"nodeType":"Return","src":"4528:29:20"}]},"documentation":{"id":5151,"nodeType":"StructuredDocumentation","src":"4360:61:20","text":" @dev Returns checkpoint at given position."},"id":5168,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"4435:2:20","nodeType":"FunctionDefinition","parameters":{"id":5157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5154,"mutability":"mutable","name":"self","nameLocation":"4455:4:20","nodeType":"VariableDeclaration","scope":5168,"src":"4438:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"},"typeName":{"id":5153,"nodeType":"UserDefinedTypeName","pathNode":{"id":5152,"name":"Trace224","nameLocations":["4438:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":4862,"src":"4438:8:20"},"referencedDeclaration":4862,"src":"4438:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$4862_storage_ptr","typeString":"struct Checkpoints.Trace224"}},"visibility":"internal"},{"constant":false,"id":5156,"mutability":"mutable","name":"pos","nameLocation":"4468:3:20","nodeType":"VariableDeclaration","scope":5168,"src":"4461:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5155,"name":"uint32","nodeType":"ElementaryTypeName","src":"4461:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4437:35:20"},"returnParameters":{"id":5161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5160,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5168,"src":"4496:20:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224"},"typeName":{"id":5159,"nodeType":"UserDefinedTypeName","pathNode":{"id":5158,"name":"Checkpoint224","nameLocations":["4496:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4867,"src":"4496:13:20"},"referencedDeclaration":4867,"src":"4496:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"}},"visibility":"internal"}],"src":"4495:22:20"},"scope":6421,"src":"4426:138:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5258,"nodeType":"Block","src":"4849:761:20","statements":[{"assignments":[5185],"declarations":[{"constant":false,"id":5185,"mutability":"mutable","name":"pos","nameLocation":"4867:3:20","nodeType":"VariableDeclaration","scope":5258,"src":"4859:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5184,"name":"uint256","nodeType":"ElementaryTypeName","src":"4859:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5188,"initialValue":{"expression":{"id":5186,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"4873:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"}},"id":5187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4878:6:20","memberName":"length","nodeType":"MemberAccess","src":"4873:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4859:25:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5189,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"4899:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4905:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4899:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5256,"nodeType":"Block","src":"5496:108:20","statements":[{"expression":{"arguments":[{"arguments":[{"id":5247,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"5541:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5248,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5177,"src":"5554:5:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":5246,"name":"Checkpoint224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4867,"src":"5520:13:20","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"type(struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5535:4:20","5546:6:20"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"5520:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224 memory"}],"expression":{"id":5243,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"5510:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"}},"id":5245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5515:4:20","memberName":"push","nodeType":"MemberAccess","src":"5510:9:20","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint224_$4867_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,struct Checkpoints.Checkpoint224 storage ref)"}},"id":5250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5510:52:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5251,"nodeType":"ExpressionStatement","src":"5510:52:20"},{"expression":{"components":[{"hexValue":"30","id":5252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5584:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5177,"src":"5587:5:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":5254,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5583:10:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint224_$","typeString":"tuple(int_const 0,uint224)"}},"functionReturnParameters":5183,"id":5255,"nodeType":"Return","src":"5576:17:20"}]},"id":5257,"nodeType":"IfStatement","src":"4895:709:20","trueBody":{"id":5242,"nodeType":"Block","src":"4908:582:20","statements":[{"assignments":[5194],"declarations":[{"constant":false,"id":5194,"mutability":"mutable","name":"last","nameLocation":"4995:4:20","nodeType":"VariableDeclaration","scope":5242,"src":"4974:25:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224"},"typeName":{"id":5193,"nodeType":"UserDefinedTypeName","pathNode":{"id":5192,"name":"Checkpoint224","nameLocations":["4974:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4867,"src":"4974:13:20"},"referencedDeclaration":4867,"src":"4974:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"}},"visibility":"internal"}],"id":5201,"initialValue":{"arguments":[{"id":5196,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"5016:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5197,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"5022:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5028:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5022:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5195,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"5002:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5002:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4974:56:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5202,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5194,"src":"5104:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224 memory"}},"id":5203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5109:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":4864,"src":"5104:9:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5204,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"5116:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5104:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5210,"nodeType":"IfStatement","src":"5100:91:20","trueBody":{"id":5209,"nodeType":"Block","src":"5121:70:20","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5206,"name":"CheckpointUnorderedInsertion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"5146:28:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5146:30:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5208,"nodeType":"RevertStatement","src":"5139:37:20"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5211,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5194,"src":"5254:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224 memory"}},"id":5212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5259:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":4864,"src":"5254:9:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5213,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"5267:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5254:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5235,"nodeType":"Block","src":"5354:85:20","statements":[{"expression":{"arguments":[{"arguments":[{"id":5230,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"5403:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5231,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5177,"src":"5416:5:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":5229,"name":"Checkpoint224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4867,"src":"5382:13:20","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"type(struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5397:4:20","5408:6:20"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"5382:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224 memory"}],"expression":{"id":5226,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"5372:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"}},"id":5228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5377:4:20","memberName":"push","nodeType":"MemberAccess","src":"5372:9:20","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint224_$4867_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,struct Checkpoints.Checkpoint224 storage ref)"}},"id":5233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5372:52:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5234,"nodeType":"ExpressionStatement","src":"5372:52:20"}]},"id":5236,"nodeType":"IfStatement","src":"5250:189:20","trueBody":{"id":5225,"nodeType":"Block","src":"5272:76:20","statements":[{"expression":{"id":5223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5216,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"5304:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5217,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"5310:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5316:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5310:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5215,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"5290:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5290:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"id":5221,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5319:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":4866,"src":"5290:35:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5222,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5177,"src":"5328:5:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"5290:43:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5224,"nodeType":"ExpressionStatement","src":"5290:43:20"}]}},{"expression":{"components":[{"expression":{"id":5237,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5194,"src":"5460:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_memory_ptr","typeString":"struct Checkpoints.Checkpoint224 memory"}},"id":5238,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5465:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":4866,"src":"5460:11:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":5239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5177,"src":"5473:5:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":5240,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5459:20:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":5183,"id":5241,"nodeType":"Return","src":"5452:27:20"}]}}]},"documentation":{"id":5169,"nodeType":"StructuredDocumentation","src":"4570:165:20","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":5259,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"4749:7:20","nodeType":"FunctionDefinition","parameters":{"id":5178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5173,"mutability":"mutable","name":"self","nameLocation":"4781:4:20","nodeType":"VariableDeclaration","scope":5259,"src":"4757:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"},"typeName":{"baseType":{"id":5171,"nodeType":"UserDefinedTypeName","pathNode":{"id":5170,"name":"Checkpoint224","nameLocations":["4757:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4867,"src":"4757:13:20"},"referencedDeclaration":4867,"src":"4757:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"}},"id":5172,"nodeType":"ArrayTypeName","src":"4757:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":5175,"mutability":"mutable","name":"key","nameLocation":"4794:3:20","nodeType":"VariableDeclaration","scope":5259,"src":"4787:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5174,"name":"uint32","nodeType":"ElementaryTypeName","src":"4787:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5177,"mutability":"mutable","name":"value","nameLocation":"4807:5:20","nodeType":"VariableDeclaration","scope":5259,"src":"4799:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5176,"name":"uint224","nodeType":"ElementaryTypeName","src":"4799:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"4756:57:20"},"returnParameters":{"id":5183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5180,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5259,"src":"4831:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5179,"name":"uint224","nodeType":"ElementaryTypeName","src":"4831:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":5182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5259,"src":"4840:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5181,"name":"uint224","nodeType":"ElementaryTypeName","src":"4840:7:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"4830:18:20"},"scope":6421,"src":"4740:870:20","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5310,"nodeType":"Block","src":"6129:267:20","statements":[{"body":{"id":5306,"nodeType":"Block","src":"6158:211:20","statements":[{"assignments":[5279],"declarations":[{"constant":false,"id":5279,"mutability":"mutable","name":"mid","nameLocation":"6180:3:20","nodeType":"VariableDeclaration","scope":5306,"src":"6172:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5278,"name":"uint256","nodeType":"ElementaryTypeName","src":"6172:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5285,"initialValue":{"arguments":[{"id":5282,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"6199:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5283,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"6204:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5280,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"6186:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3094_$","typeString":"type(library Math)"}},"id":5281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6191:7:20","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2268,"src":"6186:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6172:37:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5287,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5264,"src":"6241:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"}},{"id":5288,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5279,"src":"6247:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5286,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"6227:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6227:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"id":5290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6252:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":4864,"src":"6227:29:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5291,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"6259:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6227:35:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5304,"nodeType":"Block","src":"6313:46:20","statements":[{"expression":{"id":5302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5298,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"6331:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5299,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5279,"src":"6337:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6343:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6337:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6331:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5303,"nodeType":"ExpressionStatement","src":"6331:13:20"}]},"id":5305,"nodeType":"IfStatement","src":"6223:136:20","trueBody":{"id":5297,"nodeType":"Block","src":"6264:43:20","statements":[{"expression":{"id":5295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5293,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"6282:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5294,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5279,"src":"6289:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6282:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5296,"nodeType":"ExpressionStatement","src":"6282:10:20"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5275,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"6146:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5276,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"6152:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6146:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5307,"nodeType":"WhileStatement","src":"6139:230:20"},{"expression":{"id":5308,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"6385:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5274,"id":5309,"nodeType":"Return","src":"6378:11:20"}]},"documentation":{"id":5260,"nodeType":"StructuredDocumentation","src":"5616:342:20","text":" @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high`\n if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n `high`.\n WARNING: `high` should not be greater than the array's length."},"id":5311,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"5972:18:20","nodeType":"FunctionDefinition","parameters":{"id":5271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5264,"mutability":"mutable","name":"self","nameLocation":"6024:4:20","nodeType":"VariableDeclaration","scope":5311,"src":"6000:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"},"typeName":{"baseType":{"id":5262,"nodeType":"UserDefinedTypeName","pathNode":{"id":5261,"name":"Checkpoint224","nameLocations":["6000:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4867,"src":"6000:13:20"},"referencedDeclaration":4867,"src":"6000:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"}},"id":5263,"nodeType":"ArrayTypeName","src":"6000:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":5266,"mutability":"mutable","name":"key","nameLocation":"6045:3:20","nodeType":"VariableDeclaration","scope":5311,"src":"6038:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5265,"name":"uint32","nodeType":"ElementaryTypeName","src":"6038:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5268,"mutability":"mutable","name":"low","nameLocation":"6066:3:20","nodeType":"VariableDeclaration","scope":5311,"src":"6058:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5267,"name":"uint256","nodeType":"ElementaryTypeName","src":"6058:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5270,"mutability":"mutable","name":"high","nameLocation":"6087:4:20","nodeType":"VariableDeclaration","scope":5311,"src":"6079:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5269,"name":"uint256","nodeType":"ElementaryTypeName","src":"6079:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5990:107:20"},"returnParameters":{"id":5274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5273,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5311,"src":"6120:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5272,"name":"uint256","nodeType":"ElementaryTypeName","src":"6120:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6119:9:20"},"scope":6421,"src":"5963:433:20","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5362,"nodeType":"Block","src":"6916:267:20","statements":[{"body":{"id":5358,"nodeType":"Block","src":"6945:211:20","statements":[{"assignments":[5331],"declarations":[{"constant":false,"id":5331,"mutability":"mutable","name":"mid","nameLocation":"6967:3:20","nodeType":"VariableDeclaration","scope":5358,"src":"6959:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5330,"name":"uint256","nodeType":"ElementaryTypeName","src":"6959:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5337,"initialValue":{"arguments":[{"id":5334,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"6986:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5335,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5322,"src":"6991:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5332,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"6973:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3094_$","typeString":"type(library Math)"}},"id":5333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6978:7:20","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2268,"src":"6973:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6973:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6959:37:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5339,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5316,"src":"7028:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"}},{"id":5340,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5331,"src":"7034:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5338,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5378,"src":"7014:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$4867_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint224 storage pointer)"}},"id":5341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7014:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224 storage pointer"}},"id":5342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7039:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":4864,"src":"7014:29:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5343,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5318,"src":"7046:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7014:35:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5356,"nodeType":"Block","src":"7103:43:20","statements":[{"expression":{"id":5354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5352,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5322,"src":"7121:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5353,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5331,"src":"7128:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7121:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5355,"nodeType":"ExpressionStatement","src":"7121:10:20"}]},"id":5357,"nodeType":"IfStatement","src":"7010:136:20","trueBody":{"id":5351,"nodeType":"Block","src":"7051:46:20","statements":[{"expression":{"id":5349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5345,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"7069:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5346,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5331,"src":"7075:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7081:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7075:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7069:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5350,"nodeType":"ExpressionStatement","src":"7069:13:20"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5327,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"6933:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5328,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5322,"src":"6939:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6933:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5359,"nodeType":"WhileStatement","src":"6926:230:20"},{"expression":{"id":5360,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5322,"src":"7172:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5326,"id":5361,"nodeType":"Return","src":"7165:11:20"}]},"documentation":{"id":5312,"nodeType":"StructuredDocumentation","src":"6402:343:20","text":" @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or\n `high` if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and\n exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":5363,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"6759:18:20","nodeType":"FunctionDefinition","parameters":{"id":5323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5316,"mutability":"mutable","name":"self","nameLocation":"6811:4:20","nodeType":"VariableDeclaration","scope":5363,"src":"6787:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"},"typeName":{"baseType":{"id":5314,"nodeType":"UserDefinedTypeName","pathNode":{"id":5313,"name":"Checkpoint224","nameLocations":["6787:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4867,"src":"6787:13:20"},"referencedDeclaration":4867,"src":"6787:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"}},"id":5315,"nodeType":"ArrayTypeName","src":"6787:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":5318,"mutability":"mutable","name":"key","nameLocation":"6832:3:20","nodeType":"VariableDeclaration","scope":5363,"src":"6825:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5317,"name":"uint32","nodeType":"ElementaryTypeName","src":"6825:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5320,"mutability":"mutable","name":"low","nameLocation":"6853:3:20","nodeType":"VariableDeclaration","scope":5363,"src":"6845:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5319,"name":"uint256","nodeType":"ElementaryTypeName","src":"6845:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5322,"mutability":"mutable","name":"high","nameLocation":"6874:4:20","nodeType":"VariableDeclaration","scope":5363,"src":"6866:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5321,"name":"uint256","nodeType":"ElementaryTypeName","src":"6866:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6777:107:20"},"returnParameters":{"id":5326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5363,"src":"6907:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5324,"name":"uint256","nodeType":"ElementaryTypeName","src":"6907:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6906:9:20"},"scope":6421,"src":"6750:433:20","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5377,"nodeType":"Block","src":"7466:125:20","statements":[{"AST":{"nodeType":"YulBlock","src":"7485:100:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7506:1:20","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"7509:9:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7499:6:20"},"nodeType":"YulFunctionCall","src":"7499:20:20"},"nodeType":"YulExpressionStatement","src":"7499:20:20"},{"nodeType":"YulAssignment","src":"7532:43:20","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7561:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7564:4:20","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"7551:9:20"},"nodeType":"YulFunctionCall","src":"7551:18:20"},{"name":"pos","nodeType":"YulIdentifier","src":"7571:3:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7547:3:20"},"nodeType":"YulFunctionCall","src":"7547:28:20"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"7532:11:20"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":5370,"isOffset":false,"isSlot":false,"src":"7571:3:20","valueSize":1},{"declaration":5374,"isOffset":false,"isSlot":true,"src":"7532:11:20","suffix":"slot","valueSize":1},{"declaration":5368,"isOffset":false,"isSlot":true,"src":"7509:9:20","suffix":"slot","valueSize":1}],"id":5376,"nodeType":"InlineAssembly","src":"7476:109:20"}]},"documentation":{"id":5364,"nodeType":"StructuredDocumentation","src":"7189:132:20","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":5378,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"7335:13:20","nodeType":"FunctionDefinition","parameters":{"id":5371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5368,"mutability":"mutable","name":"self","nameLocation":"7382:4:20","nodeType":"VariableDeclaration","scope":5378,"src":"7358:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"},"typeName":{"baseType":{"id":5366,"nodeType":"UserDefinedTypeName","pathNode":{"id":5365,"name":"Checkpoint224","nameLocations":["7358:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4867,"src":"7358:13:20"},"referencedDeclaration":4867,"src":"7358:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"}},"id":5367,"nodeType":"ArrayTypeName","src":"7358:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$4867_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":5370,"mutability":"mutable","name":"pos","nameLocation":"7404:3:20","nodeType":"VariableDeclaration","scope":5378,"src":"7396:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5369,"name":"uint256","nodeType":"ElementaryTypeName","src":"7396:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7348:65:20"},"returnParameters":{"id":5375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5374,"mutability":"mutable","name":"result","nameLocation":"7458:6:20","nodeType":"VariableDeclaration","scope":5378,"src":"7436:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"},"typeName":{"id":5373,"nodeType":"UserDefinedTypeName","pathNode":{"id":5372,"name":"Checkpoint224","nameLocations":["7436:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4867,"src":"7436:13:20"},"referencedDeclaration":4867,"src":"7436:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$4867_storage_ptr","typeString":"struct Checkpoints.Checkpoint224"}},"visibility":"internal"}],"src":"7435:30:20"},"scope":6421,"src":"7326:265:20","stateMutability":"pure","virtual":false,"visibility":"private"},{"canonicalName":"Checkpoints.Trace208","id":5383,"members":[{"constant":false,"id":5382,"mutability":"mutable","name":"_checkpoints","nameLocation":"7639:12:20","nodeType":"VariableDeclaration","scope":5383,"src":"7623:28:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"},"typeName":{"baseType":{"id":5380,"nodeType":"UserDefinedTypeName","pathNode":{"id":5379,"name":"Checkpoint208","nameLocations":["7623:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5388,"src":"7623:13:20"},"referencedDeclaration":5388,"src":"7623:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"}},"id":5381,"nodeType":"ArrayTypeName","src":"7623:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"}},"visibility":"internal"}],"name":"Trace208","nameLocation":"7604:8:20","nodeType":"StructDefinition","scope":6421,"src":"7597:61:20","visibility":"public"},{"canonicalName":"Checkpoints.Checkpoint208","id":5388,"members":[{"constant":false,"id":5385,"mutability":"mutable","name":"_key","nameLocation":"7702:4:20","nodeType":"VariableDeclaration","scope":5388,"src":"7695:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5384,"name":"uint48","nodeType":"ElementaryTypeName","src":"7695:6:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":5387,"mutability":"mutable","name":"_value","nameLocation":"7724:6:20","nodeType":"VariableDeclaration","scope":5388,"src":"7716:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5386,"name":"uint208","nodeType":"ElementaryTypeName","src":"7716:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"name":"Checkpoint208","nameLocation":"7671:13:20","nodeType":"StructDefinition","scope":6421,"src":"7664:73:20","visibility":"public"},{"body":{"id":5410,"nodeType":"Block","src":"8150:62:20","statements":[{"expression":{"arguments":[{"expression":{"id":5404,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5392,"src":"8175:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8180:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"8175:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"id":5406,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"8194:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5396,"src":"8199:5:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint208","typeString":"uint208"}],"id":5403,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[5259,5780,6301],"referencedDeclaration":5780,"src":"8167:7:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint48_$_t_uint208_$returns$_t_uint208_$_t_uint208_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint48,uint208) returns (uint208,uint208)"}},"id":5408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8167:38:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint208_$_t_uint208_$","typeString":"tuple(uint208,uint208)"}},"functionReturnParameters":5402,"id":5409,"nodeType":"Return","src":"8160:45:20"}]},"documentation":{"id":5389,"nodeType":"StructuredDocumentation","src":"7743:302:20","text":" @dev Pushes a (`key`, `value`) pair into a Trace208 so that it is stored as the checkpoint.\n Returns previous value and new value.\n IMPORTANT: Never accept `key` as a user input, since an arbitrary `type(uint48).max` key set will disable the\n library."},"id":5411,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"8059:4:20","nodeType":"FunctionDefinition","parameters":{"id":5397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5392,"mutability":"mutable","name":"self","nameLocation":"8081:4:20","nodeType":"VariableDeclaration","scope":5411,"src":"8064:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"},"typeName":{"id":5391,"nodeType":"UserDefinedTypeName","pathNode":{"id":5390,"name":"Trace208","nameLocations":["8064:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"8064:8:20"},"referencedDeclaration":5383,"src":"8064:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}},"visibility":"internal"},{"constant":false,"id":5394,"mutability":"mutable","name":"key","nameLocation":"8094:3:20","nodeType":"VariableDeclaration","scope":5411,"src":"8087:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5393,"name":"uint48","nodeType":"ElementaryTypeName","src":"8087:6:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":5396,"mutability":"mutable","name":"value","nameLocation":"8107:5:20","nodeType":"VariableDeclaration","scope":5411,"src":"8099:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5395,"name":"uint208","nodeType":"ElementaryTypeName","src":"8099:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"8063:50:20"},"returnParameters":{"id":5402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5399,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5411,"src":"8132:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5398,"name":"uint208","nodeType":"ElementaryTypeName","src":"8132:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"},{"constant":false,"id":5401,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5411,"src":"8141:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5400,"name":"uint208","nodeType":"ElementaryTypeName","src":"8141:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"8131:18:20"},"scope":6421,"src":"8050:162:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5450,"nodeType":"Block","src":"8465:207:20","statements":[{"assignments":[5423],"declarations":[{"constant":false,"id":5423,"mutability":"mutable","name":"len","nameLocation":"8483:3:20","nodeType":"VariableDeclaration","scope":5450,"src":"8475:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5422,"name":"uint256","nodeType":"ElementaryTypeName","src":"8475:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5427,"initialValue":{"expression":{"expression":{"id":5424,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5415,"src":"8489:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8494:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"8489:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},"id":5426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8507:6:20","memberName":"length","nodeType":"MemberAccess","src":"8489:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8475:38:20"},{"assignments":[5429],"declarations":[{"constant":false,"id":5429,"mutability":"mutable","name":"pos","nameLocation":"8531:3:20","nodeType":"VariableDeclaration","scope":5450,"src":"8523:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5428,"name":"uint256","nodeType":"ElementaryTypeName","src":"8523:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5437,"initialValue":{"arguments":[{"expression":{"id":5431,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5415,"src":"8556:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8561:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"8556:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"id":5433,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"8575:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"hexValue":"30","id":5434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8580:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5435,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5423,"src":"8583:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5430,"name":"_lowerBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5363,5884,6405],"referencedDeclaration":5884,"src":"8537:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint48_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint48,uint256,uint256) view returns (uint256)"}},"id":5436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8537:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8523:64:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5438,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"8604:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5439,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5423,"src":"8611:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8604:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5443,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5415,"src":"8635:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5444,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8640:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"8635:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"id":5445,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"8654:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5442,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"8621:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8621:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"id":5447,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8659:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5387,"src":"8621:44:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"id":5448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8604:61:20","trueExpression":{"hexValue":"30","id":5441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8617:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":5421,"id":5449,"nodeType":"Return","src":"8597:68:20"}]},"documentation":{"id":5412,"nodeType":"StructuredDocumentation","src":"8218:154:20","text":" @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if\n there is none."},"id":5451,"implemented":true,"kind":"function","modifiers":[],"name":"lowerLookup","nameLocation":"8386:11:20","nodeType":"FunctionDefinition","parameters":{"id":5418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5415,"mutability":"mutable","name":"self","nameLocation":"8415:4:20","nodeType":"VariableDeclaration","scope":5451,"src":"8398:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"},"typeName":{"id":5414,"nodeType":"UserDefinedTypeName","pathNode":{"id":5413,"name":"Trace208","nameLocations":["8398:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"8398:8:20"},"referencedDeclaration":5383,"src":"8398:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}},"visibility":"internal"},{"constant":false,"id":5417,"mutability":"mutable","name":"key","nameLocation":"8428:3:20","nodeType":"VariableDeclaration","scope":5451,"src":"8421:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5416,"name":"uint48","nodeType":"ElementaryTypeName","src":"8421:6:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8397:35:20"},"returnParameters":{"id":5421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5420,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5451,"src":"8456:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5419,"name":"uint208","nodeType":"ElementaryTypeName","src":"8456:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"8455:9:20"},"scope":6421,"src":"8377:295:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5492,"nodeType":"Block","src":"8927:209:20","statements":[{"assignments":[5463],"declarations":[{"constant":false,"id":5463,"mutability":"mutable","name":"len","nameLocation":"8945:3:20","nodeType":"VariableDeclaration","scope":5492,"src":"8937:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5462,"name":"uint256","nodeType":"ElementaryTypeName","src":"8937:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5467,"initialValue":{"expression":{"expression":{"id":5464,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5455,"src":"8951:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8956:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"8951:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},"id":5466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8969:6:20","memberName":"length","nodeType":"MemberAccess","src":"8951:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8937:38:20"},{"assignments":[5469],"declarations":[{"constant":false,"id":5469,"mutability":"mutable","name":"pos","nameLocation":"8993:3:20","nodeType":"VariableDeclaration","scope":5492,"src":"8985:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5468,"name":"uint256","nodeType":"ElementaryTypeName","src":"8985:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5477,"initialValue":{"arguments":[{"expression":{"id":5471,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5455,"src":"9018:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5472,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9023:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"9018:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"id":5473,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5457,"src":"9037:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"hexValue":"30","id":5474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9042:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5475,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"9045:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5470,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5311,5832,6353],"referencedDeclaration":5832,"src":"8999:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint48_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint48,uint256,uint256) view returns (uint256)"}},"id":5476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8999:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8985:64:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5478,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5469,"src":"9066:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9073:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9066:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5483,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5455,"src":"9095:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9100:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"9095:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5485,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5469,"src":"9114:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9120:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9114:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5482,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"9081:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9081:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"id":5489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9123:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5387,"src":"9081:48:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"id":5490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9066:63:20","trueExpression":{"hexValue":"30","id":5481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9077:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":5461,"id":5491,"nodeType":"Return","src":"9059:70:20"}]},"documentation":{"id":5452,"nodeType":"StructuredDocumentation","src":"8678:156:20","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n if there is none."},"id":5493,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookup","nameLocation":"8848:11:20","nodeType":"FunctionDefinition","parameters":{"id":5458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5455,"mutability":"mutable","name":"self","nameLocation":"8877:4:20","nodeType":"VariableDeclaration","scope":5493,"src":"8860:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"},"typeName":{"id":5454,"nodeType":"UserDefinedTypeName","pathNode":{"id":5453,"name":"Trace208","nameLocations":["8860:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"8860:8:20"},"referencedDeclaration":5383,"src":"8860:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}},"visibility":"internal"},{"constant":false,"id":5457,"mutability":"mutable","name":"key","nameLocation":"8890:3:20","nodeType":"VariableDeclaration","scope":5493,"src":"8883:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5456,"name":"uint48","nodeType":"ElementaryTypeName","src":"8883:6:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8859:35:20"},"returnParameters":{"id":5461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5493,"src":"8918:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5459,"name":"uint208","nodeType":"ElementaryTypeName","src":"8918:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"8917:9:20"},"scope":6421,"src":"8839:297:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5577,"nodeType":"Block","src":"9535:512:20","statements":[{"assignments":[5505],"declarations":[{"constant":false,"id":5505,"mutability":"mutable","name":"len","nameLocation":"9553:3:20","nodeType":"VariableDeclaration","scope":5577,"src":"9545:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5504,"name":"uint256","nodeType":"ElementaryTypeName","src":"9545:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5509,"initialValue":{"expression":{"expression":{"id":5506,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"9559:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5507,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9564:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"9559:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},"id":5508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9577:6:20","memberName":"length","nodeType":"MemberAccess","src":"9559:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9545:38:20"},{"assignments":[5511],"declarations":[{"constant":false,"id":5511,"mutability":"mutable","name":"low","nameLocation":"9602:3:20","nodeType":"VariableDeclaration","scope":5577,"src":"9594:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5510,"name":"uint256","nodeType":"ElementaryTypeName","src":"9594:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5513,"initialValue":{"hexValue":"30","id":5512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9608:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9594:15:20"},{"assignments":[5515],"declarations":[{"constant":false,"id":5515,"mutability":"mutable","name":"high","nameLocation":"9627:4:20","nodeType":"VariableDeclaration","scope":5577,"src":"9619:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5514,"name":"uint256","nodeType":"ElementaryTypeName","src":"9619:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5517,"initialValue":{"id":5516,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"9634:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9619:18:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5518,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"9652:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":5519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9658:1:20","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"9652:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5552,"nodeType":"IfStatement","src":"9648:234:20","trueBody":{"id":5551,"nodeType":"Block","src":"9661:221:20","statements":[{"assignments":[5522],"declarations":[{"constant":false,"id":5522,"mutability":"mutable","name":"mid","nameLocation":"9683:3:20","nodeType":"VariableDeclaration","scope":5551,"src":"9675:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5521,"name":"uint256","nodeType":"ElementaryTypeName","src":"9675:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5529,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5523,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"9689:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":5526,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"9705:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5524,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"9695:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3094_$","typeString":"type(library Math)"}},"id":5525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9700:4:20","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":2583,"src":"9695:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":5527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9695:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9689:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9675:34:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5530,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5499,"src":"9727:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":5532,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"9747:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5533,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9752:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"9747:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"id":5534,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5522,"src":"9766:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5531,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"9733:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9733:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"id":5536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9771:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5385,"src":"9733:42:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9727:48:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5549,"nodeType":"Block","src":"9826:46:20","statements":[{"expression":{"id":5547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5543,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5511,"src":"9844:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5544,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5522,"src":"9850:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9856:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9850:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9844:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5548,"nodeType":"ExpressionStatement","src":"9844:13:20"}]},"id":5550,"nodeType":"IfStatement","src":"9723:149:20","trueBody":{"id":5542,"nodeType":"Block","src":"9777:43:20","statements":[{"expression":{"id":5540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5538,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5515,"src":"9795:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5539,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5522,"src":"9802:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9795:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5541,"nodeType":"ExpressionStatement","src":"9795:10:20"}]}}]}},{"assignments":[5554],"declarations":[{"constant":false,"id":5554,"mutability":"mutable","name":"pos","nameLocation":"9900:3:20","nodeType":"VariableDeclaration","scope":5577,"src":"9892:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5553,"name":"uint256","nodeType":"ElementaryTypeName","src":"9892:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5562,"initialValue":{"arguments":[{"expression":{"id":5556,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"9925:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9930:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"9925:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"id":5558,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5499,"src":"9944:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5559,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5511,"src":"9949:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5560,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5515,"src":"9954:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5555,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5311,5832,6353],"referencedDeclaration":5832,"src":"9906:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint48_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint48,uint256,uint256) view returns (uint256)"}},"id":5561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9906:53:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9892:67:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5563,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5554,"src":"9977:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9984:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9977:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5568,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5497,"src":"10006:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10011:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"10006:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5570,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5554,"src":"10025:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10031:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10025:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5567,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"9992:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9992:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"id":5574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10034:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5387,"src":"9992:48:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"id":5575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9977:63:20","trueExpression":{"hexValue":"30","id":5566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9988:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":5503,"id":5576,"nodeType":"Return","src":"9970:70:20"}]},"documentation":{"id":5494,"nodeType":"StructuredDocumentation","src":"9142:294:20","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n if there is none.\n NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high\n keys)."},"id":5578,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookupRecent","nameLocation":"9450:17:20","nodeType":"FunctionDefinition","parameters":{"id":5500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5497,"mutability":"mutable","name":"self","nameLocation":"9485:4:20","nodeType":"VariableDeclaration","scope":5578,"src":"9468:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"},"typeName":{"id":5496,"nodeType":"UserDefinedTypeName","pathNode":{"id":5495,"name":"Trace208","nameLocations":["9468:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"9468:8:20"},"referencedDeclaration":5383,"src":"9468:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}},"visibility":"internal"},{"constant":false,"id":5499,"mutability":"mutable","name":"key","nameLocation":"9498:3:20","nodeType":"VariableDeclaration","scope":5578,"src":"9491:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5498,"name":"uint48","nodeType":"ElementaryTypeName","src":"9491:6:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"9467:35:20"},"returnParameters":{"id":5503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5578,"src":"9526:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5501,"name":"uint208","nodeType":"ElementaryTypeName","src":"9526:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"9525:9:20"},"scope":6421,"src":"9441:606:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5607,"nodeType":"Block","src":"10238:135:20","statements":[{"assignments":[5588],"declarations":[{"constant":false,"id":5588,"mutability":"mutable","name":"pos","nameLocation":"10256:3:20","nodeType":"VariableDeclaration","scope":5607,"src":"10248:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5587,"name":"uint256","nodeType":"ElementaryTypeName","src":"10248:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5592,"initialValue":{"expression":{"expression":{"id":5589,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5582,"src":"10262:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10267:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"10262:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},"id":5591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10280:6:20","memberName":"length","nodeType":"MemberAccess","src":"10262:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10248:38:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5593,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"10303:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10310:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10303:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5598,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5582,"src":"10332:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10337:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"10332:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5600,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"10351:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10357:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10351:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5597,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"10318:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10318:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"id":5604,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10360:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5387,"src":"10318:48:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"id":5605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10303:63:20","trueExpression":{"hexValue":"30","id":5596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10314:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":5586,"id":5606,"nodeType":"Return","src":"10296:70:20"}]},"documentation":{"id":5579,"nodeType":"StructuredDocumentation","src":"10053:109:20","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":5608,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"10176:6:20","nodeType":"FunctionDefinition","parameters":{"id":5583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5582,"mutability":"mutable","name":"self","nameLocation":"10200:4:20","nodeType":"VariableDeclaration","scope":5608,"src":"10183:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"},"typeName":{"id":5581,"nodeType":"UserDefinedTypeName","pathNode":{"id":5580,"name":"Trace208","nameLocations":["10183:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"10183:8:20"},"referencedDeclaration":5383,"src":"10183:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}},"visibility":"internal"}],"src":"10182:23:20"},"returnParameters":{"id":5586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5585,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5608,"src":"10229:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5584,"name":"uint208","nodeType":"ElementaryTypeName","src":"10229:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"10228:9:20"},"scope":6421,"src":"10167:206:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5656,"nodeType":"Block","src":"10666:274:20","statements":[{"assignments":[5622],"declarations":[{"constant":false,"id":5622,"mutability":"mutable","name":"pos","nameLocation":"10684:3:20","nodeType":"VariableDeclaration","scope":5656,"src":"10676:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5621,"name":"uint256","nodeType":"ElementaryTypeName","src":"10676:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5626,"initialValue":{"expression":{"expression":{"id":5623,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5612,"src":"10690:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10695:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"10690:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},"id":5625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10708:6:20","memberName":"length","nodeType":"MemberAccess","src":"10690:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10676:38:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5627,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5622,"src":"10728:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10735:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10728:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5654,"nodeType":"Block","src":"10789:145:20","statements":[{"assignments":[5638],"declarations":[{"constant":false,"id":5638,"mutability":"mutable","name":"ckpt","nameLocation":"10824:4:20","nodeType":"VariableDeclaration","scope":5654,"src":"10803:25:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208"},"typeName":{"id":5637,"nodeType":"UserDefinedTypeName","pathNode":{"id":5636,"name":"Checkpoint208","nameLocations":["10803:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5388,"src":"10803:13:20"},"referencedDeclaration":5388,"src":"10803:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"}},"visibility":"internal"}],"id":5646,"initialValue":{"arguments":[{"expression":{"id":5640,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5612,"src":"10845:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5641,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10850:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"10845:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5642,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5622,"src":"10864:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10870:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10864:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5639,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"10831:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10831:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10803:69:20"},{"expression":{"components":[{"hexValue":"74727565","id":5647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10894:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":5648,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"10900:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208 memory"}},"id":5649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10905:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5385,"src":"10900:9:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":5650,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"10911:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208 memory"}},"id":5651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10916:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5387,"src":"10911:11:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"id":5652,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10893:30:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint48_$_t_uint208_$","typeString":"tuple(bool,uint48,uint208)"}},"functionReturnParameters":5620,"id":5653,"nodeType":"Return","src":"10886:37:20"}]},"id":5655,"nodeType":"IfStatement","src":"10724:210:20","trueBody":{"id":5635,"nodeType":"Block","src":"10738:45:20","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":5630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10760:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10767:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":5632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10770:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5633,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10759:13:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":5620,"id":5634,"nodeType":"Return","src":"10752:20:20"}]}}]},"documentation":{"id":5609,"nodeType":"StructuredDocumentation","src":"10379:168:20","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":5657,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"10561:16:20","nodeType":"FunctionDefinition","parameters":{"id":5613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5612,"mutability":"mutable","name":"self","nameLocation":"10595:4:20","nodeType":"VariableDeclaration","scope":5657,"src":"10578:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"},"typeName":{"id":5611,"nodeType":"UserDefinedTypeName","pathNode":{"id":5610,"name":"Trace208","nameLocations":["10578:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"10578:8:20"},"referencedDeclaration":5383,"src":"10578:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}},"visibility":"internal"}],"src":"10577:23:20"},"returnParameters":{"id":5620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5615,"mutability":"mutable","name":"exists","nameLocation":"10629:6:20","nodeType":"VariableDeclaration","scope":5657,"src":"10624:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5614,"name":"bool","nodeType":"ElementaryTypeName","src":"10624:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5617,"mutability":"mutable","name":"_key","nameLocation":"10644:4:20","nodeType":"VariableDeclaration","scope":5657,"src":"10637:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5616,"name":"uint48","nodeType":"ElementaryTypeName","src":"10637:6:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":5619,"mutability":"mutable","name":"_value","nameLocation":"10658:6:20","nodeType":"VariableDeclaration","scope":5657,"src":"10650:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5618,"name":"uint208","nodeType":"ElementaryTypeName","src":"10650:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"10623:42:20"},"scope":6421,"src":"10552:388:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5670,"nodeType":"Block","src":"11079:48:20","statements":[{"expression":{"expression":{"expression":{"id":5666,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5661,"src":"11096:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5667,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11101:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"11096:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},"id":5668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11114:6:20","memberName":"length","nodeType":"MemberAccess","src":"11096:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5665,"id":5669,"nodeType":"Return","src":"11089:31:20"}]},"documentation":{"id":5658,"nodeType":"StructuredDocumentation","src":"10946:57:20","text":" @dev Returns the number of checkpoint."},"id":5671,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"11017:6:20","nodeType":"FunctionDefinition","parameters":{"id":5662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5661,"mutability":"mutable","name":"self","nameLocation":"11041:4:20","nodeType":"VariableDeclaration","scope":5671,"src":"11024:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"},"typeName":{"id":5660,"nodeType":"UserDefinedTypeName","pathNode":{"id":5659,"name":"Trace208","nameLocations":["11024:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"11024:8:20"},"referencedDeclaration":5383,"src":"11024:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}},"visibility":"internal"}],"src":"11023:23:20"},"returnParameters":{"id":5665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5671,"src":"11070:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5663,"name":"uint256","nodeType":"ElementaryTypeName","src":"11070:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11069:9:20"},"scope":6421,"src":"11008:119:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5688,"nodeType":"Block","src":"11291:46:20","statements":[{"expression":{"baseExpression":{"expression":{"id":5683,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"11308:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208 storage pointer"}},"id":5684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11313:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5382,"src":"11308:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage ref"}},"id":5686,"indexExpression":{"id":5685,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5677,"src":"11326:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11308:22:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage","typeString":"struct Checkpoints.Checkpoint208 storage ref"}},"functionReturnParameters":5682,"id":5687,"nodeType":"Return","src":"11301:29:20"}]},"documentation":{"id":5672,"nodeType":"StructuredDocumentation","src":"11133:61:20","text":" @dev Returns checkpoint at given position."},"id":5689,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"11208:2:20","nodeType":"FunctionDefinition","parameters":{"id":5678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5675,"mutability":"mutable","name":"self","nameLocation":"11228:4:20","nodeType":"VariableDeclaration","scope":5689,"src":"11211:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"},"typeName":{"id":5674,"nodeType":"UserDefinedTypeName","pathNode":{"id":5673,"name":"Trace208","nameLocations":["11211:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"11211:8:20"},"referencedDeclaration":5383,"src":"11211:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}},"visibility":"internal"},{"constant":false,"id":5677,"mutability":"mutable","name":"pos","nameLocation":"11241:3:20","nodeType":"VariableDeclaration","scope":5689,"src":"11234:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5676,"name":"uint32","nodeType":"ElementaryTypeName","src":"11234:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"11210:35:20"},"returnParameters":{"id":5682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5681,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5689,"src":"11269:20:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208"},"typeName":{"id":5680,"nodeType":"UserDefinedTypeName","pathNode":{"id":5679,"name":"Checkpoint208","nameLocations":["11269:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5388,"src":"11269:13:20"},"referencedDeclaration":5388,"src":"11269:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"}},"visibility":"internal"}],"src":"11268:22:20"},"scope":6421,"src":"11199:138:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5779,"nodeType":"Block","src":"11622:761:20","statements":[{"assignments":[5706],"declarations":[{"constant":false,"id":5706,"mutability":"mutable","name":"pos","nameLocation":"11640:3:20","nodeType":"VariableDeclaration","scope":5779,"src":"11632:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5705,"name":"uint256","nodeType":"ElementaryTypeName","src":"11632:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5709,"initialValue":{"expression":{"id":5707,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5694,"src":"11646:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"}},"id":5708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11651:6:20","memberName":"length","nodeType":"MemberAccess","src":"11646:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11632:25:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5710,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5706,"src":"11672:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11678:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11672:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5777,"nodeType":"Block","src":"12269:108:20","statements":[{"expression":{"arguments":[{"arguments":[{"id":5768,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"12314:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5769,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"12327:5:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint208","typeString":"uint208"}],"id":5767,"name":"Checkpoint208","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5388,"src":"12293:13:20","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"type(struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12308:4:20","12319:6:20"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"12293:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208 memory"}],"expression":{"id":5764,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5694,"src":"12283:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"}},"id":5766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12288:4:20","memberName":"push","nodeType":"MemberAccess","src":"12283:9:20","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint208_$5388_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,struct Checkpoints.Checkpoint208 storage ref)"}},"id":5771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12283:52:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5772,"nodeType":"ExpressionStatement","src":"12283:52:20"},{"expression":{"components":[{"hexValue":"30","id":5773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12357:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5774,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"12360:5:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"id":5775,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12356:10:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint208_$","typeString":"tuple(int_const 0,uint208)"}},"functionReturnParameters":5704,"id":5776,"nodeType":"Return","src":"12349:17:20"}]},"id":5778,"nodeType":"IfStatement","src":"11668:709:20","trueBody":{"id":5763,"nodeType":"Block","src":"11681:582:20","statements":[{"assignments":[5715],"declarations":[{"constant":false,"id":5715,"mutability":"mutable","name":"last","nameLocation":"11768:4:20","nodeType":"VariableDeclaration","scope":5763,"src":"11747:25:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208"},"typeName":{"id":5714,"nodeType":"UserDefinedTypeName","pathNode":{"id":5713,"name":"Checkpoint208","nameLocations":["11747:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5388,"src":"11747:13:20"},"referencedDeclaration":5388,"src":"11747:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"}},"visibility":"internal"}],"id":5722,"initialValue":{"arguments":[{"id":5717,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5694,"src":"11789:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5718,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5706,"src":"11795:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11801:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11795:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5716,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"11775:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11775:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11747:56:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5723,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5715,"src":"11877:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208 memory"}},"id":5724,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11882:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5385,"src":"11877:9:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5725,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"11889:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"11877:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5731,"nodeType":"IfStatement","src":"11873:91:20","trueBody":{"id":5730,"nodeType":"Block","src":"11894:70:20","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5727,"name":"CheckpointUnorderedInsertion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"11919:28:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":5728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11919:30:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5729,"nodeType":"RevertStatement","src":"11912:37:20"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5732,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5715,"src":"12027:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208 memory"}},"id":5733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12032:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5385,"src":"12027:9:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5734,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"12040:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12027:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5756,"nodeType":"Block","src":"12127:85:20","statements":[{"expression":{"arguments":[{"arguments":[{"id":5751,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5696,"src":"12176:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"12189:5:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint208","typeString":"uint208"}],"id":5750,"name":"Checkpoint208","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5388,"src":"12155:13:20","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"type(struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12170:4:20","12181:6:20"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"12155:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208 memory"}],"expression":{"id":5747,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5694,"src":"12145:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"}},"id":5749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12150:4:20","memberName":"push","nodeType":"MemberAccess","src":"12145:9:20","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint208_$5388_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,struct Checkpoints.Checkpoint208 storage ref)"}},"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12145:52:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5755,"nodeType":"ExpressionStatement","src":"12145:52:20"}]},"id":5757,"nodeType":"IfStatement","src":"12023:189:20","trueBody":{"id":5746,"nodeType":"Block","src":"12045:76:20","statements":[{"expression":{"id":5744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5737,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5694,"src":"12077:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5738,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5706,"src":"12083:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12089:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12083:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5736,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"12063:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12063:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"id":5742,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12092:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5387,"src":"12063:35:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5743,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"12101:5:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"12063:43:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"id":5745,"nodeType":"ExpressionStatement","src":"12063:43:20"}]}},{"expression":{"components":[{"expression":{"id":5758,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5715,"src":"12233:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_memory_ptr","typeString":"struct Checkpoints.Checkpoint208 memory"}},"id":5759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12238:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5387,"src":"12233:11:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},{"id":5760,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"12246:5:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"id":5761,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12232:20:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint208_$_t_uint208_$","typeString":"tuple(uint208,uint208)"}},"functionReturnParameters":5704,"id":5762,"nodeType":"Return","src":"12225:27:20"}]}}]},"documentation":{"id":5690,"nodeType":"StructuredDocumentation","src":"11343:165:20","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":5780,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"11522:7:20","nodeType":"FunctionDefinition","parameters":{"id":5699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5694,"mutability":"mutable","name":"self","nameLocation":"11554:4:20","nodeType":"VariableDeclaration","scope":5780,"src":"11530:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"},"typeName":{"baseType":{"id":5692,"nodeType":"UserDefinedTypeName","pathNode":{"id":5691,"name":"Checkpoint208","nameLocations":["11530:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5388,"src":"11530:13:20"},"referencedDeclaration":5388,"src":"11530:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"}},"id":5693,"nodeType":"ArrayTypeName","src":"11530:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"}},"visibility":"internal"},{"constant":false,"id":5696,"mutability":"mutable","name":"key","nameLocation":"11567:3:20","nodeType":"VariableDeclaration","scope":5780,"src":"11560:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5695,"name":"uint48","nodeType":"ElementaryTypeName","src":"11560:6:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":5698,"mutability":"mutable","name":"value","nameLocation":"11580:5:20","nodeType":"VariableDeclaration","scope":5780,"src":"11572:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5697,"name":"uint208","nodeType":"ElementaryTypeName","src":"11572:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"11529:57:20"},"returnParameters":{"id":5704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5780,"src":"11604:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5700,"name":"uint208","nodeType":"ElementaryTypeName","src":"11604:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"},{"constant":false,"id":5703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5780,"src":"11613:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5702,"name":"uint208","nodeType":"ElementaryTypeName","src":"11613:7:20","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"11603:18:20"},"scope":6421,"src":"11513:870:20","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5831,"nodeType":"Block","src":"12902:267:20","statements":[{"body":{"id":5827,"nodeType":"Block","src":"12931:211:20","statements":[{"assignments":[5800],"declarations":[{"constant":false,"id":5800,"mutability":"mutable","name":"mid","nameLocation":"12953:3:20","nodeType":"VariableDeclaration","scope":5827,"src":"12945:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5799,"name":"uint256","nodeType":"ElementaryTypeName","src":"12945:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5806,"initialValue":{"arguments":[{"id":5803,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"12972:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5804,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"12977:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5801,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"12959:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3094_$","typeString":"type(library Math)"}},"id":5802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12964:7:20","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2268,"src":"12959:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12959:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12945:37:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5808,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5785,"src":"13014:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"}},{"id":5809,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"13020:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5807,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"13000:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13000:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"id":5811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13025:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5385,"src":"13000:29:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5812,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"13032:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"13000:35:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5825,"nodeType":"Block","src":"13086:46:20","statements":[{"expression":{"id":5823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5819,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"13104:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5820,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"13110:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13116:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13110:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13104:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5824,"nodeType":"ExpressionStatement","src":"13104:13:20"}]},"id":5826,"nodeType":"IfStatement","src":"12996:136:20","trueBody":{"id":5818,"nodeType":"Block","src":"13037:43:20","statements":[{"expression":{"id":5816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5814,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"13055:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5815,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"13062:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13055:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5817,"nodeType":"ExpressionStatement","src":"13055:10:20"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5796,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"12919:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5797,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"12925:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12919:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5828,"nodeType":"WhileStatement","src":"12912:230:20"},{"expression":{"id":5829,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"13158:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5795,"id":5830,"nodeType":"Return","src":"13151:11:20"}]},"documentation":{"id":5781,"nodeType":"StructuredDocumentation","src":"12389:342:20","text":" @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high`\n if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n `high`.\n WARNING: `high` should not be greater than the array's length."},"id":5832,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"12745:18:20","nodeType":"FunctionDefinition","parameters":{"id":5792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5785,"mutability":"mutable","name":"self","nameLocation":"12797:4:20","nodeType":"VariableDeclaration","scope":5832,"src":"12773:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"},"typeName":{"baseType":{"id":5783,"nodeType":"UserDefinedTypeName","pathNode":{"id":5782,"name":"Checkpoint208","nameLocations":["12773:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5388,"src":"12773:13:20"},"referencedDeclaration":5388,"src":"12773:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"}},"id":5784,"nodeType":"ArrayTypeName","src":"12773:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"}},"visibility":"internal"},{"constant":false,"id":5787,"mutability":"mutable","name":"key","nameLocation":"12818:3:20","nodeType":"VariableDeclaration","scope":5832,"src":"12811:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5786,"name":"uint48","nodeType":"ElementaryTypeName","src":"12811:6:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":5789,"mutability":"mutable","name":"low","nameLocation":"12839:3:20","nodeType":"VariableDeclaration","scope":5832,"src":"12831:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5788,"name":"uint256","nodeType":"ElementaryTypeName","src":"12831:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5791,"mutability":"mutable","name":"high","nameLocation":"12860:4:20","nodeType":"VariableDeclaration","scope":5832,"src":"12852:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5790,"name":"uint256","nodeType":"ElementaryTypeName","src":"12852:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12763:107:20"},"returnParameters":{"id":5795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5832,"src":"12893:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5793,"name":"uint256","nodeType":"ElementaryTypeName","src":"12893:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12892:9:20"},"scope":6421,"src":"12736:433:20","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5883,"nodeType":"Block","src":"13689:267:20","statements":[{"body":{"id":5879,"nodeType":"Block","src":"13718:211:20","statements":[{"assignments":[5852],"declarations":[{"constant":false,"id":5852,"mutability":"mutable","name":"mid","nameLocation":"13740:3:20","nodeType":"VariableDeclaration","scope":5879,"src":"13732:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5851,"name":"uint256","nodeType":"ElementaryTypeName","src":"13732:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5858,"initialValue":{"arguments":[{"id":5855,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5841,"src":"13759:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5856,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5843,"src":"13764:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5853,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"13746:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3094_$","typeString":"type(library Math)"}},"id":5854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13751:7:20","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2268,"src":"13746:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13746:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13732:37:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5860,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5837,"src":"13801:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"}},{"id":5861,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5852,"src":"13807:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5859,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":5899,"src":"13787:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint208_$5388_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint208 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint208 storage pointer)"}},"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13787:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208 storage pointer"}},"id":5863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13812:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5385,"src":"13787:29:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5864,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"13819:3:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"13787:35:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5877,"nodeType":"Block","src":"13876:43:20","statements":[{"expression":{"id":5875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5873,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5843,"src":"13894:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5874,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5852,"src":"13901:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13894:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5876,"nodeType":"ExpressionStatement","src":"13894:10:20"}]},"id":5878,"nodeType":"IfStatement","src":"13783:136:20","trueBody":{"id":5872,"nodeType":"Block","src":"13824:46:20","statements":[{"expression":{"id":5870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5866,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5841,"src":"13842:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5867,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5852,"src":"13848:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13854:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13848:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13842:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5871,"nodeType":"ExpressionStatement","src":"13842:13:20"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5848,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5841,"src":"13706:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5849,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5843,"src":"13712:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13706:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5880,"nodeType":"WhileStatement","src":"13699:230:20"},{"expression":{"id":5881,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5843,"src":"13945:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5847,"id":5882,"nodeType":"Return","src":"13938:11:20"}]},"documentation":{"id":5833,"nodeType":"StructuredDocumentation","src":"13175:343:20","text":" @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or\n `high` if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and\n exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":5884,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"13532:18:20","nodeType":"FunctionDefinition","parameters":{"id":5844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5837,"mutability":"mutable","name":"self","nameLocation":"13584:4:20","nodeType":"VariableDeclaration","scope":5884,"src":"13560:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"},"typeName":{"baseType":{"id":5835,"nodeType":"UserDefinedTypeName","pathNode":{"id":5834,"name":"Checkpoint208","nameLocations":["13560:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5388,"src":"13560:13:20"},"referencedDeclaration":5388,"src":"13560:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"}},"id":5836,"nodeType":"ArrayTypeName","src":"13560:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"}},"visibility":"internal"},{"constant":false,"id":5839,"mutability":"mutable","name":"key","nameLocation":"13605:3:20","nodeType":"VariableDeclaration","scope":5884,"src":"13598:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5838,"name":"uint48","nodeType":"ElementaryTypeName","src":"13598:6:20","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":5841,"mutability":"mutable","name":"low","nameLocation":"13626:3:20","nodeType":"VariableDeclaration","scope":5884,"src":"13618:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5840,"name":"uint256","nodeType":"ElementaryTypeName","src":"13618:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5843,"mutability":"mutable","name":"high","nameLocation":"13647:4:20","nodeType":"VariableDeclaration","scope":5884,"src":"13639:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5842,"name":"uint256","nodeType":"ElementaryTypeName","src":"13639:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13550:107:20"},"returnParameters":{"id":5847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5884,"src":"13680:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5845,"name":"uint256","nodeType":"ElementaryTypeName","src":"13680:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13679:9:20"},"scope":6421,"src":"13523:433:20","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5898,"nodeType":"Block","src":"14239:125:20","statements":[{"AST":{"nodeType":"YulBlock","src":"14258:100:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14279:1:20","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"14282:9:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14272:6:20"},"nodeType":"YulFunctionCall","src":"14272:20:20"},"nodeType":"YulExpressionStatement","src":"14272:20:20"},{"nodeType":"YulAssignment","src":"14305:43:20","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14334:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14337:4:20","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"14324:9:20"},"nodeType":"YulFunctionCall","src":"14324:18:20"},{"name":"pos","nodeType":"YulIdentifier","src":"14344:3:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14320:3:20"},"nodeType":"YulFunctionCall","src":"14320:28:20"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"14305:11:20"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":5891,"isOffset":false,"isSlot":false,"src":"14344:3:20","valueSize":1},{"declaration":5895,"isOffset":false,"isSlot":true,"src":"14305:11:20","suffix":"slot","valueSize":1},{"declaration":5889,"isOffset":false,"isSlot":true,"src":"14282:9:20","suffix":"slot","valueSize":1}],"id":5897,"nodeType":"InlineAssembly","src":"14249:109:20"}]},"documentation":{"id":5885,"nodeType":"StructuredDocumentation","src":"13962:132:20","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":5899,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"14108:13:20","nodeType":"FunctionDefinition","parameters":{"id":5892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5889,"mutability":"mutable","name":"self","nameLocation":"14155:4:20","nodeType":"VariableDeclaration","scope":5899,"src":"14131:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"},"typeName":{"baseType":{"id":5887,"nodeType":"UserDefinedTypeName","pathNode":{"id":5886,"name":"Checkpoint208","nameLocations":["14131:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5388,"src":"14131:13:20"},"referencedDeclaration":5388,"src":"14131:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"}},"id":5888,"nodeType":"ArrayTypeName","src":"14131:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint208_$5388_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint208[]"}},"visibility":"internal"},{"constant":false,"id":5891,"mutability":"mutable","name":"pos","nameLocation":"14177:3:20","nodeType":"VariableDeclaration","scope":5899,"src":"14169:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5890,"name":"uint256","nodeType":"ElementaryTypeName","src":"14169:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14121:65:20"},"returnParameters":{"id":5896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5895,"mutability":"mutable","name":"result","nameLocation":"14231:6:20","nodeType":"VariableDeclaration","scope":5899,"src":"14209:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"},"typeName":{"id":5894,"nodeType":"UserDefinedTypeName","pathNode":{"id":5893,"name":"Checkpoint208","nameLocations":["14209:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5388,"src":"14209:13:20"},"referencedDeclaration":5388,"src":"14209:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint208_$5388_storage_ptr","typeString":"struct Checkpoints.Checkpoint208"}},"visibility":"internal"}],"src":"14208:30:20"},"scope":6421,"src":"14099:265:20","stateMutability":"pure","virtual":false,"visibility":"private"},{"canonicalName":"Checkpoints.Trace160","id":5904,"members":[{"constant":false,"id":5903,"mutability":"mutable","name":"_checkpoints","nameLocation":"14412:12:20","nodeType":"VariableDeclaration","scope":5904,"src":"14396:28:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"},"typeName":{"baseType":{"id":5901,"nodeType":"UserDefinedTypeName","pathNode":{"id":5900,"name":"Checkpoint160","nameLocations":["14396:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5909,"src":"14396:13:20"},"referencedDeclaration":5909,"src":"14396:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"}},"id":5902,"nodeType":"ArrayTypeName","src":"14396:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"}},"visibility":"internal"}],"name":"Trace160","nameLocation":"14377:8:20","nodeType":"StructDefinition","scope":6421,"src":"14370:61:20","visibility":"public"},{"canonicalName":"Checkpoints.Checkpoint160","id":5909,"members":[{"constant":false,"id":5906,"mutability":"mutable","name":"_key","nameLocation":"14475:4:20","nodeType":"VariableDeclaration","scope":5909,"src":"14468:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5905,"name":"uint96","nodeType":"ElementaryTypeName","src":"14468:6:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":5908,"mutability":"mutable","name":"_value","nameLocation":"14497:6:20","nodeType":"VariableDeclaration","scope":5909,"src":"14489:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5907,"name":"uint160","nodeType":"ElementaryTypeName","src":"14489:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"Checkpoint160","nameLocation":"14444:13:20","nodeType":"StructDefinition","scope":6421,"src":"14437:73:20","visibility":"public"},{"body":{"id":5931,"nodeType":"Block","src":"14923:62:20","statements":[{"expression":{"arguments":[{"expression":{"id":5925,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5913,"src":"14948:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":5926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14953:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"14948:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"id":5927,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"14967:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":5928,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"14972:5:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":5924,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[5259,5780,6301],"referencedDeclaration":6301,"src":"14940:7:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint160_$returns$_t_uint160_$_t_uint160_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint96,uint160) returns (uint160,uint160)"}},"id":5929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14940:38:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"functionReturnParameters":5923,"id":5930,"nodeType":"Return","src":"14933:45:20"}]},"documentation":{"id":5910,"nodeType":"StructuredDocumentation","src":"14516:302:20","text":" @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\n Returns previous value and new value.\n IMPORTANT: Never accept `key` as a user input, since an arbitrary `type(uint96).max` key set will disable the\n library."},"id":5932,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"14832:4:20","nodeType":"FunctionDefinition","parameters":{"id":5918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5913,"mutability":"mutable","name":"self","nameLocation":"14854:4:20","nodeType":"VariableDeclaration","scope":5932,"src":"14837:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"},"typeName":{"id":5912,"nodeType":"UserDefinedTypeName","pathNode":{"id":5911,"name":"Trace160","nameLocations":["14837:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5904,"src":"14837:8:20"},"referencedDeclaration":5904,"src":"14837:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"}},"visibility":"internal"},{"constant":false,"id":5915,"mutability":"mutable","name":"key","nameLocation":"14867:3:20","nodeType":"VariableDeclaration","scope":5932,"src":"14860:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5914,"name":"uint96","nodeType":"ElementaryTypeName","src":"14860:6:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":5917,"mutability":"mutable","name":"value","nameLocation":"14880:5:20","nodeType":"VariableDeclaration","scope":5932,"src":"14872:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5916,"name":"uint160","nodeType":"ElementaryTypeName","src":"14872:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14836:50:20"},"returnParameters":{"id":5923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5920,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5932,"src":"14905:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5919,"name":"uint160","nodeType":"ElementaryTypeName","src":"14905:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":5922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5932,"src":"14914:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5921,"name":"uint160","nodeType":"ElementaryTypeName","src":"14914:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14904:18:20"},"scope":6421,"src":"14823:162:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5971,"nodeType":"Block","src":"15238:207:20","statements":[{"assignments":[5944],"declarations":[{"constant":false,"id":5944,"mutability":"mutable","name":"len","nameLocation":"15256:3:20","nodeType":"VariableDeclaration","scope":5971,"src":"15248:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5943,"name":"uint256","nodeType":"ElementaryTypeName","src":"15248:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5948,"initialValue":{"expression":{"expression":{"id":5945,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5936,"src":"15262:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":5946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15267:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"15262:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},"id":5947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15280:6:20","memberName":"length","nodeType":"MemberAccess","src":"15262:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15248:38:20"},{"assignments":[5950],"declarations":[{"constant":false,"id":5950,"mutability":"mutable","name":"pos","nameLocation":"15304:3:20","nodeType":"VariableDeclaration","scope":5971,"src":"15296:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5949,"name":"uint256","nodeType":"ElementaryTypeName","src":"15296:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5958,"initialValue":{"arguments":[{"expression":{"id":5952,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5936,"src":"15329:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":5953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15334:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"15329:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"id":5954,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5938,"src":"15348:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"30","id":5955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15353:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5956,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5944,"src":"15356:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5951,"name":"_lowerBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5363,5884,6405],"referencedDeclaration":6405,"src":"15310:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":5957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15310:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15296:64:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5959,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5950,"src":"15377:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5960,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5944,"src":"15384:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15377:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5964,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5936,"src":"15408:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":5965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15413:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"15408:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"id":5966,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5950,"src":"15427:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5963,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"15394:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":5967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15394:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"id":5968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15432:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5908,"src":"15394:44:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":5969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15377:61:20","trueExpression":{"hexValue":"30","id":5962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15390:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5942,"id":5970,"nodeType":"Return","src":"15370:68:20"}]},"documentation":{"id":5933,"nodeType":"StructuredDocumentation","src":"14991:154:20","text":" @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if\n there is none."},"id":5972,"implemented":true,"kind":"function","modifiers":[],"name":"lowerLookup","nameLocation":"15159:11:20","nodeType":"FunctionDefinition","parameters":{"id":5939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5936,"mutability":"mutable","name":"self","nameLocation":"15188:4:20","nodeType":"VariableDeclaration","scope":5972,"src":"15171:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"},"typeName":{"id":5935,"nodeType":"UserDefinedTypeName","pathNode":{"id":5934,"name":"Trace160","nameLocations":["15171:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5904,"src":"15171:8:20"},"referencedDeclaration":5904,"src":"15171:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"}},"visibility":"internal"},{"constant":false,"id":5938,"mutability":"mutable","name":"key","nameLocation":"15201:3:20","nodeType":"VariableDeclaration","scope":5972,"src":"15194:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5937,"name":"uint96","nodeType":"ElementaryTypeName","src":"15194:6:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"15170:35:20"},"returnParameters":{"id":5942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5941,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5972,"src":"15229:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5940,"name":"uint160","nodeType":"ElementaryTypeName","src":"15229:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"15228:9:20"},"scope":6421,"src":"15150:295:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6013,"nodeType":"Block","src":"15700:209:20","statements":[{"assignments":[5984],"declarations":[{"constant":false,"id":5984,"mutability":"mutable","name":"len","nameLocation":"15718:3:20","nodeType":"VariableDeclaration","scope":6013,"src":"15710:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5983,"name":"uint256","nodeType":"ElementaryTypeName","src":"15710:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5988,"initialValue":{"expression":{"expression":{"id":5985,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5976,"src":"15724:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":5986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15729:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"15724:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},"id":5987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15742:6:20","memberName":"length","nodeType":"MemberAccess","src":"15724:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15710:38:20"},{"assignments":[5990],"declarations":[{"constant":false,"id":5990,"mutability":"mutable","name":"pos","nameLocation":"15766:3:20","nodeType":"VariableDeclaration","scope":6013,"src":"15758:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5989,"name":"uint256","nodeType":"ElementaryTypeName","src":"15758:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5998,"initialValue":{"arguments":[{"expression":{"id":5992,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5976,"src":"15791:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":5993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15796:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"15791:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"id":5994,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5978,"src":"15810:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"30","id":5995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15815:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5996,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5984,"src":"15818:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5991,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5311,5832,6353],"referencedDeclaration":6353,"src":"15772:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":5997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15772:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15758:64:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5999,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5990,"src":"15839:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15846:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15839:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":6004,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5976,"src":"15868:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15873:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"15868:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6006,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5990,"src":"15887:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15893:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15887:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6003,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"15854:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15854:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"id":6010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15896:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5908,"src":"15854:48:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15839:63:20","trueExpression":{"hexValue":"30","id":6002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15850:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5982,"id":6012,"nodeType":"Return","src":"15832:70:20"}]},"documentation":{"id":5973,"nodeType":"StructuredDocumentation","src":"15451:156:20","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n if there is none."},"id":6014,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookup","nameLocation":"15621:11:20","nodeType":"FunctionDefinition","parameters":{"id":5979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5976,"mutability":"mutable","name":"self","nameLocation":"15650:4:20","nodeType":"VariableDeclaration","scope":6014,"src":"15633:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"},"typeName":{"id":5975,"nodeType":"UserDefinedTypeName","pathNode":{"id":5974,"name":"Trace160","nameLocations":["15633:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5904,"src":"15633:8:20"},"referencedDeclaration":5904,"src":"15633:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"}},"visibility":"internal"},{"constant":false,"id":5978,"mutability":"mutable","name":"key","nameLocation":"15663:3:20","nodeType":"VariableDeclaration","scope":6014,"src":"15656:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5977,"name":"uint96","nodeType":"ElementaryTypeName","src":"15656:6:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"15632:35:20"},"returnParameters":{"id":5982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5981,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6014,"src":"15691:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5980,"name":"uint160","nodeType":"ElementaryTypeName","src":"15691:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"15690:9:20"},"scope":6421,"src":"15612:297:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6098,"nodeType":"Block","src":"16308:512:20","statements":[{"assignments":[6026],"declarations":[{"constant":false,"id":6026,"mutability":"mutable","name":"len","nameLocation":"16326:3:20","nodeType":"VariableDeclaration","scope":6098,"src":"16318:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6025,"name":"uint256","nodeType":"ElementaryTypeName","src":"16318:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6030,"initialValue":{"expression":{"expression":{"id":6027,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6018,"src":"16332:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6028,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16337:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"16332:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},"id":6029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16350:6:20","memberName":"length","nodeType":"MemberAccess","src":"16332:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16318:38:20"},{"assignments":[6032],"declarations":[{"constant":false,"id":6032,"mutability":"mutable","name":"low","nameLocation":"16375:3:20","nodeType":"VariableDeclaration","scope":6098,"src":"16367:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6031,"name":"uint256","nodeType":"ElementaryTypeName","src":"16367:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6034,"initialValue":{"hexValue":"30","id":6033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16381:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16367:15:20"},{"assignments":[6036],"declarations":[{"constant":false,"id":6036,"mutability":"mutable","name":"high","nameLocation":"16400:4:20","nodeType":"VariableDeclaration","scope":6098,"src":"16392:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6035,"name":"uint256","nodeType":"ElementaryTypeName","src":"16392:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6038,"initialValue":{"id":6037,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"16407:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16392:18:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6039,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"16425:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":6040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16431:1:20","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"16425:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6073,"nodeType":"IfStatement","src":"16421:234:20","trueBody":{"id":6072,"nodeType":"Block","src":"16434:221:20","statements":[{"assignments":[6043],"declarations":[{"constant":false,"id":6043,"mutability":"mutable","name":"mid","nameLocation":"16456:3:20","nodeType":"VariableDeclaration","scope":6072,"src":"16448:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6042,"name":"uint256","nodeType":"ElementaryTypeName","src":"16448:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6050,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6044,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"16462:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":6047,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"16478:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6045,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"16468:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3094_$","typeString":"type(library Math)"}},"id":6046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16473:4:20","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":2583,"src":"16468:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":6048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16468:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16462:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16448:34:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":6058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6051,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6020,"src":"16500:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":6053,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6018,"src":"16520:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16525:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"16520:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"id":6055,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"16539:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6052,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"16506:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16506:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"id":6057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16544:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5906,"src":"16506:42:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"16500:48:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6070,"nodeType":"Block","src":"16599:46:20","statements":[{"expression":{"id":6068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6064,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6032,"src":"16617:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6065,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"16623:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16629:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16623:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16617:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6069,"nodeType":"ExpressionStatement","src":"16617:13:20"}]},"id":6071,"nodeType":"IfStatement","src":"16496:149:20","trueBody":{"id":6063,"nodeType":"Block","src":"16550:43:20","statements":[{"expression":{"id":6061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6059,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"16568:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6060,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"16575:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16568:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6062,"nodeType":"ExpressionStatement","src":"16568:10:20"}]}}]}},{"assignments":[6075],"declarations":[{"constant":false,"id":6075,"mutability":"mutable","name":"pos","nameLocation":"16673:3:20","nodeType":"VariableDeclaration","scope":6098,"src":"16665:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6074,"name":"uint256","nodeType":"ElementaryTypeName","src":"16665:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6083,"initialValue":{"arguments":[{"expression":{"id":6077,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6018,"src":"16698:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16703:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"16698:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"id":6079,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6020,"src":"16717:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":6080,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6032,"src":"16722:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6081,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"16727:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6076,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5311,5832,6353],"referencedDeclaration":6353,"src":"16679:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":6082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16679:53:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16665:67:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6084,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"16750:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16757:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16750:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":6089,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6018,"src":"16779:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16784:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"16779:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6091,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"16798:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16804:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16798:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6088,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"16765:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16765:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"id":6095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16807:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5908,"src":"16765:48:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16750:63:20","trueExpression":{"hexValue":"30","id":6087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16761:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":6024,"id":6097,"nodeType":"Return","src":"16743:70:20"}]},"documentation":{"id":6015,"nodeType":"StructuredDocumentation","src":"15915:294:20","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero\n if there is none.\n NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high\n keys)."},"id":6099,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookupRecent","nameLocation":"16223:17:20","nodeType":"FunctionDefinition","parameters":{"id":6021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6018,"mutability":"mutable","name":"self","nameLocation":"16258:4:20","nodeType":"VariableDeclaration","scope":6099,"src":"16241:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"},"typeName":{"id":6017,"nodeType":"UserDefinedTypeName","pathNode":{"id":6016,"name":"Trace160","nameLocations":["16241:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5904,"src":"16241:8:20"},"referencedDeclaration":5904,"src":"16241:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"}},"visibility":"internal"},{"constant":false,"id":6020,"mutability":"mutable","name":"key","nameLocation":"16271:3:20","nodeType":"VariableDeclaration","scope":6099,"src":"16264:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6019,"name":"uint96","nodeType":"ElementaryTypeName","src":"16264:6:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"16240:35:20"},"returnParameters":{"id":6024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6099,"src":"16299:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6022,"name":"uint160","nodeType":"ElementaryTypeName","src":"16299:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"16298:9:20"},"scope":6421,"src":"16214:606:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6128,"nodeType":"Block","src":"17011:135:20","statements":[{"assignments":[6109],"declarations":[{"constant":false,"id":6109,"mutability":"mutable","name":"pos","nameLocation":"17029:3:20","nodeType":"VariableDeclaration","scope":6128,"src":"17021:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6108,"name":"uint256","nodeType":"ElementaryTypeName","src":"17021:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6113,"initialValue":{"expression":{"expression":{"id":6110,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6103,"src":"17035:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17040:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"17035:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},"id":6112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17053:6:20","memberName":"length","nodeType":"MemberAccess","src":"17035:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17021:38:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6114,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"17076:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17083:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17076:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":6119,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6103,"src":"17105:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17110:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"17105:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6121,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"17124:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17130:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17124:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6118,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"17091:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17091:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"id":6125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17133:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5908,"src":"17091:48:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17076:63:20","trueExpression":{"hexValue":"30","id":6117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17087:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":6107,"id":6127,"nodeType":"Return","src":"17069:70:20"}]},"documentation":{"id":6100,"nodeType":"StructuredDocumentation","src":"16826:109:20","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":6129,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"16949:6:20","nodeType":"FunctionDefinition","parameters":{"id":6104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6103,"mutability":"mutable","name":"self","nameLocation":"16973:4:20","nodeType":"VariableDeclaration","scope":6129,"src":"16956:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"},"typeName":{"id":6102,"nodeType":"UserDefinedTypeName","pathNode":{"id":6101,"name":"Trace160","nameLocations":["16956:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5904,"src":"16956:8:20"},"referencedDeclaration":5904,"src":"16956:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"}},"visibility":"internal"}],"src":"16955:23:20"},"returnParameters":{"id":6107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6129,"src":"17002:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6105,"name":"uint160","nodeType":"ElementaryTypeName","src":"17002:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"17001:9:20"},"scope":6421,"src":"16940:206:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6177,"nodeType":"Block","src":"17439:274:20","statements":[{"assignments":[6143],"declarations":[{"constant":false,"id":6143,"mutability":"mutable","name":"pos","nameLocation":"17457:3:20","nodeType":"VariableDeclaration","scope":6177,"src":"17449:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6142,"name":"uint256","nodeType":"ElementaryTypeName","src":"17449:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6147,"initialValue":{"expression":{"expression":{"id":6144,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6133,"src":"17463:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17468:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"17463:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},"id":6146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17481:6:20","memberName":"length","nodeType":"MemberAccess","src":"17463:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17449:38:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6148,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"17501:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17508:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17501:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6175,"nodeType":"Block","src":"17562:145:20","statements":[{"assignments":[6159],"declarations":[{"constant":false,"id":6159,"mutability":"mutable","name":"ckpt","nameLocation":"17597:4:20","nodeType":"VariableDeclaration","scope":6175,"src":"17576:25:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160"},"typeName":{"id":6158,"nodeType":"UserDefinedTypeName","pathNode":{"id":6157,"name":"Checkpoint160","nameLocations":["17576:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5909,"src":"17576:13:20"},"referencedDeclaration":5909,"src":"17576:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"}},"visibility":"internal"}],"id":6167,"initialValue":{"arguments":[{"expression":{"id":6161,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6133,"src":"17618:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17623:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"17618:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6163,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"17637:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17643:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17637:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6160,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"17604:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17604:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17576:69:20"},{"expression":{"components":[{"hexValue":"74727565","id":6168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17667:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":6169,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6159,"src":"17673:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160 memory"}},"id":6170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17678:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5906,"src":"17673:9:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"id":6171,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6159,"src":"17684:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160 memory"}},"id":6172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17689:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5908,"src":"17684:11:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":6173,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17666:30:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint96_$_t_uint160_$","typeString":"tuple(bool,uint96,uint160)"}},"functionReturnParameters":6141,"id":6174,"nodeType":"Return","src":"17659:37:20"}]},"id":6176,"nodeType":"IfStatement","src":"17497:210:20","trueBody":{"id":6156,"nodeType":"Block","src":"17511:45:20","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17533:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17540:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":6153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17543:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6154,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17532:13:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":6141,"id":6155,"nodeType":"Return","src":"17525:20:20"}]}}]},"documentation":{"id":6130,"nodeType":"StructuredDocumentation","src":"17152:168:20","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":6178,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"17334:16:20","nodeType":"FunctionDefinition","parameters":{"id":6134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6133,"mutability":"mutable","name":"self","nameLocation":"17368:4:20","nodeType":"VariableDeclaration","scope":6178,"src":"17351:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"},"typeName":{"id":6132,"nodeType":"UserDefinedTypeName","pathNode":{"id":6131,"name":"Trace160","nameLocations":["17351:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5904,"src":"17351:8:20"},"referencedDeclaration":5904,"src":"17351:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"}},"visibility":"internal"}],"src":"17350:23:20"},"returnParameters":{"id":6141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6136,"mutability":"mutable","name":"exists","nameLocation":"17402:6:20","nodeType":"VariableDeclaration","scope":6178,"src":"17397:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6135,"name":"bool","nodeType":"ElementaryTypeName","src":"17397:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6138,"mutability":"mutable","name":"_key","nameLocation":"17417:4:20","nodeType":"VariableDeclaration","scope":6178,"src":"17410:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6137,"name":"uint96","nodeType":"ElementaryTypeName","src":"17410:6:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6140,"mutability":"mutable","name":"_value","nameLocation":"17431:6:20","nodeType":"VariableDeclaration","scope":6178,"src":"17423:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6139,"name":"uint160","nodeType":"ElementaryTypeName","src":"17423:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"17396:42:20"},"scope":6421,"src":"17325:388:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6191,"nodeType":"Block","src":"17852:48:20","statements":[{"expression":{"expression":{"expression":{"id":6187,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6182,"src":"17869:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17874:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"17869:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},"id":6189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17887:6:20","memberName":"length","nodeType":"MemberAccess","src":"17869:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6186,"id":6190,"nodeType":"Return","src":"17862:31:20"}]},"documentation":{"id":6179,"nodeType":"StructuredDocumentation","src":"17719:57:20","text":" @dev Returns the number of checkpoint."},"id":6192,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"17790:6:20","nodeType":"FunctionDefinition","parameters":{"id":6183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6182,"mutability":"mutable","name":"self","nameLocation":"17814:4:20","nodeType":"VariableDeclaration","scope":6192,"src":"17797:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"},"typeName":{"id":6181,"nodeType":"UserDefinedTypeName","pathNode":{"id":6180,"name":"Trace160","nameLocations":["17797:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5904,"src":"17797:8:20"},"referencedDeclaration":5904,"src":"17797:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"}},"visibility":"internal"}],"src":"17796:23:20"},"returnParameters":{"id":6186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6192,"src":"17843:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6184,"name":"uint256","nodeType":"ElementaryTypeName","src":"17843:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17842:9:20"},"scope":6421,"src":"17781:119:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6209,"nodeType":"Block","src":"18064:46:20","statements":[{"expression":{"baseExpression":{"expression":{"id":6204,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"18081:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160 storage pointer"}},"id":6205,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18086:12:20","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"18081:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage ref"}},"id":6207,"indexExpression":{"id":6206,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"18099:3:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18081:22:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage","typeString":"struct Checkpoints.Checkpoint160 storage ref"}},"functionReturnParameters":6203,"id":6208,"nodeType":"Return","src":"18074:29:20"}]},"documentation":{"id":6193,"nodeType":"StructuredDocumentation","src":"17906:61:20","text":" @dev Returns checkpoint at given position."},"id":6210,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"17981:2:20","nodeType":"FunctionDefinition","parameters":{"id":6199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6196,"mutability":"mutable","name":"self","nameLocation":"18001:4:20","nodeType":"VariableDeclaration","scope":6210,"src":"17984:21:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"},"typeName":{"id":6195,"nodeType":"UserDefinedTypeName","pathNode":{"id":6194,"name":"Trace160","nameLocations":["17984:8:20"],"nodeType":"IdentifierPath","referencedDeclaration":5904,"src":"17984:8:20"},"referencedDeclaration":5904,"src":"17984:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$5904_storage_ptr","typeString":"struct Checkpoints.Trace160"}},"visibility":"internal"},{"constant":false,"id":6198,"mutability":"mutable","name":"pos","nameLocation":"18014:3:20","nodeType":"VariableDeclaration","scope":6210,"src":"18007:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6197,"name":"uint32","nodeType":"ElementaryTypeName","src":"18007:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"17983:35:20"},"returnParameters":{"id":6203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6202,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6210,"src":"18042:20:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160"},"typeName":{"id":6201,"nodeType":"UserDefinedTypeName","pathNode":{"id":6200,"name":"Checkpoint160","nameLocations":["18042:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5909,"src":"18042:13:20"},"referencedDeclaration":5909,"src":"18042:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"}},"visibility":"internal"}],"src":"18041:22:20"},"scope":6421,"src":"17972:138:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6300,"nodeType":"Block","src":"18395:761:20","statements":[{"assignments":[6227],"declarations":[{"constant":false,"id":6227,"mutability":"mutable","name":"pos","nameLocation":"18413:3:20","nodeType":"VariableDeclaration","scope":6300,"src":"18405:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6226,"name":"uint256","nodeType":"ElementaryTypeName","src":"18405:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6230,"initialValue":{"expression":{"id":6228,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"18419:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"}},"id":6229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18424:6:20","memberName":"length","nodeType":"MemberAccess","src":"18419:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18405:25:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6231,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6227,"src":"18445:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18451:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18445:7:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6298,"nodeType":"Block","src":"19042:108:20","statements":[{"expression":{"arguments":[{"arguments":[{"id":6289,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6217,"src":"19087:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":6290,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"19100:5:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6288,"name":"Checkpoint160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5909,"src":"19066:13:20","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"type(struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["19081:4:20","19092:6:20"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"19066:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160 memory"}],"expression":{"id":6285,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"19056:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"}},"id":6287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19061:4:20","memberName":"push","nodeType":"MemberAccess","src":"19056:9:20","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint160_$5909_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,struct Checkpoints.Checkpoint160 storage ref)"}},"id":6292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19056:52:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6293,"nodeType":"ExpressionStatement","src":"19056:52:20"},{"expression":{"components":[{"hexValue":"30","id":6294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19130:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":6295,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"19133:5:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":6296,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19129:10:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint160_$","typeString":"tuple(int_const 0,uint160)"}},"functionReturnParameters":6225,"id":6297,"nodeType":"Return","src":"19122:17:20"}]},"id":6299,"nodeType":"IfStatement","src":"18441:709:20","trueBody":{"id":6284,"nodeType":"Block","src":"18454:582:20","statements":[{"assignments":[6236],"declarations":[{"constant":false,"id":6236,"mutability":"mutable","name":"last","nameLocation":"18541:4:20","nodeType":"VariableDeclaration","scope":6284,"src":"18520:25:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160"},"typeName":{"id":6235,"nodeType":"UserDefinedTypeName","pathNode":{"id":6234,"name":"Checkpoint160","nameLocations":["18520:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5909,"src":"18520:13:20"},"referencedDeclaration":5909,"src":"18520:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"}},"visibility":"internal"}],"id":6243,"initialValue":{"arguments":[{"id":6238,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"18562:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6239,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6227,"src":"18568:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18574:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18568:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6237,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"18548:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18548:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"18520:56:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":6247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6244,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"18650:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160 memory"}},"id":6245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18655:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5906,"src":"18650:9:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6246,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6217,"src":"18662:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"18650:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6252,"nodeType":"IfStatement","src":"18646:91:20","trueBody":{"id":6251,"nodeType":"Block","src":"18667:70:20","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6248,"name":"CheckpointUnorderedInsertion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"18692:28:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":6249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18692:30:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6250,"nodeType":"RevertStatement","src":"18685:37:20"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6253,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"18800:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160 memory"}},"id":6254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18805:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5906,"src":"18800:9:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6255,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6217,"src":"18813:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"18800:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6277,"nodeType":"Block","src":"18900:85:20","statements":[{"expression":{"arguments":[{"arguments":[{"id":6272,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6217,"src":"18949:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":6273,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"18962:5:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6271,"name":"Checkpoint160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5909,"src":"18928:13:20","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"type(struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["18943:4:20","18954:6:20"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"18928:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160 memory"}],"expression":{"id":6268,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"18918:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"}},"id":6270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18923:4:20","memberName":"push","nodeType":"MemberAccess","src":"18918:9:20","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint160_$5909_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,struct Checkpoints.Checkpoint160 storage ref)"}},"id":6275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18918:52:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6276,"nodeType":"ExpressionStatement","src":"18918:52:20"}]},"id":6278,"nodeType":"IfStatement","src":"18796:189:20","trueBody":{"id":6267,"nodeType":"Block","src":"18818:76:20","statements":[{"expression":{"id":6265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":6258,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"18850:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6259,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6227,"src":"18856:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18862:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18856:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6257,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"18836:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18836:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"id":6263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18865:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5908,"src":"18836:35:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"18874:5:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"18836:43:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6266,"nodeType":"ExpressionStatement","src":"18836:43:20"}]}},{"expression":{"components":[{"expression":{"id":6279,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6236,"src":"19006:4:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_memory_ptr","typeString":"struct Checkpoints.Checkpoint160 memory"}},"id":6280,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19011:6:20","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5908,"src":"19006:11:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6281,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"19019:5:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":6282,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19005:20:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"functionReturnParameters":6225,"id":6283,"nodeType":"Return","src":"18998:27:20"}]}}]},"documentation":{"id":6211,"nodeType":"StructuredDocumentation","src":"18116:165:20","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":6301,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"18295:7:20","nodeType":"FunctionDefinition","parameters":{"id":6220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6215,"mutability":"mutable","name":"self","nameLocation":"18327:4:20","nodeType":"VariableDeclaration","scope":6301,"src":"18303:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"},"typeName":{"baseType":{"id":6213,"nodeType":"UserDefinedTypeName","pathNode":{"id":6212,"name":"Checkpoint160","nameLocations":["18303:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5909,"src":"18303:13:20"},"referencedDeclaration":5909,"src":"18303:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"}},"id":6214,"nodeType":"ArrayTypeName","src":"18303:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":6217,"mutability":"mutable","name":"key","nameLocation":"18340:3:20","nodeType":"VariableDeclaration","scope":6301,"src":"18333:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6216,"name":"uint96","nodeType":"ElementaryTypeName","src":"18333:6:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6219,"mutability":"mutable","name":"value","nameLocation":"18353:5:20","nodeType":"VariableDeclaration","scope":6301,"src":"18345:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6218,"name":"uint160","nodeType":"ElementaryTypeName","src":"18345:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"18302:57:20"},"returnParameters":{"id":6225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6301,"src":"18377:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6221,"name":"uint160","nodeType":"ElementaryTypeName","src":"18377:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6301,"src":"18386:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6223,"name":"uint160","nodeType":"ElementaryTypeName","src":"18386:7:20","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"18376:18:20"},"scope":6421,"src":"18286:870:20","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6352,"nodeType":"Block","src":"19675:267:20","statements":[{"body":{"id":6348,"nodeType":"Block","src":"19704:211:20","statements":[{"assignments":[6321],"declarations":[{"constant":false,"id":6321,"mutability":"mutable","name":"mid","nameLocation":"19726:3:20","nodeType":"VariableDeclaration","scope":6348,"src":"19718:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6320,"name":"uint256","nodeType":"ElementaryTypeName","src":"19718:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6327,"initialValue":{"arguments":[{"id":6324,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6310,"src":"19745:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6325,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"19750:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6322,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"19732:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3094_$","typeString":"type(library Math)"}},"id":6323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19737:7:20","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2268,"src":"19732:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19732:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19718:37:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":6334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6329,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6306,"src":"19787:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"}},{"id":6330,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6321,"src":"19793:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6328,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"19773:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19773:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"id":6332,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19798:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5906,"src":"19773:29:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6333,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6308,"src":"19805:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"19773:35:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6346,"nodeType":"Block","src":"19859:46:20","statements":[{"expression":{"id":6344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6340,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6310,"src":"19877:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6341,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6321,"src":"19883:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19889:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19883:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19877:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6345,"nodeType":"ExpressionStatement","src":"19877:13:20"}]},"id":6347,"nodeType":"IfStatement","src":"19769:136:20","trueBody":{"id":6339,"nodeType":"Block","src":"19810:43:20","statements":[{"expression":{"id":6337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6335,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"19828:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6336,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6321,"src":"19835:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19828:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6338,"nodeType":"ExpressionStatement","src":"19828:10:20"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6317,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6310,"src":"19692:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6318,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"19698:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19692:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6349,"nodeType":"WhileStatement","src":"19685:230:20"},{"expression":{"id":6350,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"19931:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6316,"id":6351,"nodeType":"Return","src":"19924:11:20"}]},"documentation":{"id":6302,"nodeType":"StructuredDocumentation","src":"19162:342:20","text":" @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high`\n if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n `high`.\n WARNING: `high` should not be greater than the array's length."},"id":6353,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"19518:18:20","nodeType":"FunctionDefinition","parameters":{"id":6313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6306,"mutability":"mutable","name":"self","nameLocation":"19570:4:20","nodeType":"VariableDeclaration","scope":6353,"src":"19546:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"},"typeName":{"baseType":{"id":6304,"nodeType":"UserDefinedTypeName","pathNode":{"id":6303,"name":"Checkpoint160","nameLocations":["19546:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5909,"src":"19546:13:20"},"referencedDeclaration":5909,"src":"19546:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"}},"id":6305,"nodeType":"ArrayTypeName","src":"19546:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":6308,"mutability":"mutable","name":"key","nameLocation":"19591:3:20","nodeType":"VariableDeclaration","scope":6353,"src":"19584:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6307,"name":"uint96","nodeType":"ElementaryTypeName","src":"19584:6:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6310,"mutability":"mutable","name":"low","nameLocation":"19612:3:20","nodeType":"VariableDeclaration","scope":6353,"src":"19604:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6309,"name":"uint256","nodeType":"ElementaryTypeName","src":"19604:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6312,"mutability":"mutable","name":"high","nameLocation":"19633:4:20","nodeType":"VariableDeclaration","scope":6353,"src":"19625:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6311,"name":"uint256","nodeType":"ElementaryTypeName","src":"19625:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19536:107:20"},"returnParameters":{"id":6316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6353,"src":"19666:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6314,"name":"uint256","nodeType":"ElementaryTypeName","src":"19666:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19665:9:20"},"scope":6421,"src":"19509:433:20","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6404,"nodeType":"Block","src":"20462:267:20","statements":[{"body":{"id":6400,"nodeType":"Block","src":"20491:211:20","statements":[{"assignments":[6373],"declarations":[{"constant":false,"id":6373,"mutability":"mutable","name":"mid","nameLocation":"20513:3:20","nodeType":"VariableDeclaration","scope":6400,"src":"20505:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6372,"name":"uint256","nodeType":"ElementaryTypeName","src":"20505:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6379,"initialValue":{"arguments":[{"id":6376,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"20532:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6377,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"20537:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6374,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"20519:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3094_$","typeString":"type(library Math)"}},"id":6375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20524:7:20","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2268,"src":"20519:12:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20505:37:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":6386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6381,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6358,"src":"20574:4:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"}},{"id":6382,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6373,"src":"20580:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6380,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5378,5899,6420],"referencedDeclaration":6420,"src":"20560:13:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$5909_storage_ptr_$","typeString":"function (struct Checkpoints.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct Checkpoints.Checkpoint160 storage pointer)"}},"id":6383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20560:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160 storage pointer"}},"id":6384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20585:4:20","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5906,"src":"20560:29:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6385,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6360,"src":"20592:3:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"20560:35:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6398,"nodeType":"Block","src":"20649:43:20","statements":[{"expression":{"id":6396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6394,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"20667:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6395,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6373,"src":"20674:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20667:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6397,"nodeType":"ExpressionStatement","src":"20667:10:20"}]},"id":6399,"nodeType":"IfStatement","src":"20556:136:20","trueBody":{"id":6393,"nodeType":"Block","src":"20597:46:20","statements":[{"expression":{"id":6391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6387,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"20615:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6388,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6373,"src":"20621:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20627:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20621:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20615:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6392,"nodeType":"ExpressionStatement","src":"20615:13:20"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6369,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"20479:3:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6370,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"20485:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20479:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6401,"nodeType":"WhileStatement","src":"20472:230:20"},{"expression":{"id":6402,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"20718:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6368,"id":6403,"nodeType":"Return","src":"20711:11:20"}]},"documentation":{"id":6354,"nodeType":"StructuredDocumentation","src":"19948:343:20","text":" @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or\n `high` if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and\n exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":6405,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"20305:18:20","nodeType":"FunctionDefinition","parameters":{"id":6365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6358,"mutability":"mutable","name":"self","nameLocation":"20357:4:20","nodeType":"VariableDeclaration","scope":6405,"src":"20333:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"},"typeName":{"baseType":{"id":6356,"nodeType":"UserDefinedTypeName","pathNode":{"id":6355,"name":"Checkpoint160","nameLocations":["20333:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5909,"src":"20333:13:20"},"referencedDeclaration":5909,"src":"20333:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"}},"id":6357,"nodeType":"ArrayTypeName","src":"20333:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":6360,"mutability":"mutable","name":"key","nameLocation":"20378:3:20","nodeType":"VariableDeclaration","scope":6405,"src":"20371:10:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6359,"name":"uint96","nodeType":"ElementaryTypeName","src":"20371:6:20","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6362,"mutability":"mutable","name":"low","nameLocation":"20399:3:20","nodeType":"VariableDeclaration","scope":6405,"src":"20391:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6361,"name":"uint256","nodeType":"ElementaryTypeName","src":"20391:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6364,"mutability":"mutable","name":"high","nameLocation":"20420:4:20","nodeType":"VariableDeclaration","scope":6405,"src":"20412:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6363,"name":"uint256","nodeType":"ElementaryTypeName","src":"20412:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20323:107:20"},"returnParameters":{"id":6368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6405,"src":"20453:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6366,"name":"uint256","nodeType":"ElementaryTypeName","src":"20453:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20452:9:20"},"scope":6421,"src":"20296:433:20","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6419,"nodeType":"Block","src":"21012:125:20","statements":[{"AST":{"nodeType":"YulBlock","src":"21031:100:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21052:1:20","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"21055:9:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21045:6:20"},"nodeType":"YulFunctionCall","src":"21045:20:20"},"nodeType":"YulExpressionStatement","src":"21045:20:20"},{"nodeType":"YulAssignment","src":"21078:43:20","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21107:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"21110:4:20","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"21097:9:20"},"nodeType":"YulFunctionCall","src":"21097:18:20"},{"name":"pos","nodeType":"YulIdentifier","src":"21117:3:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21093:3:20"},"nodeType":"YulFunctionCall","src":"21093:28:20"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"21078:11:20"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":6412,"isOffset":false,"isSlot":false,"src":"21117:3:20","valueSize":1},{"declaration":6416,"isOffset":false,"isSlot":true,"src":"21078:11:20","suffix":"slot","valueSize":1},{"declaration":6410,"isOffset":false,"isSlot":true,"src":"21055:9:20","suffix":"slot","valueSize":1}],"id":6418,"nodeType":"InlineAssembly","src":"21022:109:20"}]},"documentation":{"id":6406,"nodeType":"StructuredDocumentation","src":"20735:132:20","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":6420,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"20881:13:20","nodeType":"FunctionDefinition","parameters":{"id":6413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6410,"mutability":"mutable","name":"self","nameLocation":"20928:4:20","nodeType":"VariableDeclaration","scope":6420,"src":"20904:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"},"typeName":{"baseType":{"id":6408,"nodeType":"UserDefinedTypeName","pathNode":{"id":6407,"name":"Checkpoint160","nameLocations":["20904:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5909,"src":"20904:13:20"},"referencedDeclaration":5909,"src":"20904:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"}},"id":6409,"nodeType":"ArrayTypeName","src":"20904:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$5909_storage_$dyn_storage_ptr","typeString":"struct Checkpoints.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":6412,"mutability":"mutable","name":"pos","nameLocation":"20950:3:20","nodeType":"VariableDeclaration","scope":6420,"src":"20942:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6411,"name":"uint256","nodeType":"ElementaryTypeName","src":"20942:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20894:65:20"},"returnParameters":{"id":6417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6416,"mutability":"mutable","name":"result","nameLocation":"21004:6:20","nodeType":"VariableDeclaration","scope":6420,"src":"20982:28:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"},"typeName":{"id":6415,"nodeType":"UserDefinedTypeName","pathNode":{"id":6414,"name":"Checkpoint160","nameLocations":["20982:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":5909,"src":"20982:13:20"},"referencedDeclaration":5909,"src":"20982:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$5909_storage_ptr","typeString":"struct Checkpoints.Checkpoint160"}},"visibility":"internal"}],"src":"20981:30:20"},"scope":6421,"src":"20872:265:20","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":6422,"src":"668:20471:20","usedErrors":[4857],"usedEvents":[]}],"src":"201:20939:20"},"id":20},"@openzeppelin/contracts/utils/structs/EnumerableSet.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/structs/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[7034]},"id":7035,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6423,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"205:24:21"},{"abstract":false,"baseContracts":[],"canonicalName":"EnumerableSet","contractDependencies":[],"contractKind":"library","documentation":{"id":6424,"nodeType":"StructuredDocumentation","src":"231:1098:21","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```solidity\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported.\n [WARNING]\n ====\n Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n unusable.\n See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n array of EnumerableSet.\n ===="},"fullyImplemented":true,"id":7034,"linearizedBaseContracts":[7034],"name":"EnumerableSet","nameLocation":"1338:13:21","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.Set","id":6432,"members":[{"constant":false,"id":6427,"mutability":"mutable","name":"_values","nameLocation":"1862:7:21","nodeType":"VariableDeclaration","scope":6432,"src":"1852:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6425,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1852:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6426,"nodeType":"ArrayTypeName","src":"1852:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":6431,"mutability":"mutable","name":"_positions","nameLocation":"2054:10:21","nodeType":"VariableDeclaration","scope":6432,"src":"2020:44:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":6430,"keyName":"value","keyNameLocation":"2036:5:21","keyType":{"id":6428,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2028:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2020:33:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6429,"name":"uint256","nodeType":"ElementaryTypeName","src":"2045:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Set","nameLocation":"1805:3:21","nodeType":"StructDefinition","scope":7034,"src":"1798:273:21","visibility":"public"},{"body":{"id":6473,"nodeType":"Block","src":"2310:337:21","statements":[{"condition":{"id":6447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2324:22:21","subExpression":{"arguments":[{"id":6444,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"2335:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},{"id":6445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"2340:5:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6443,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"2325:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":6446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2325:21:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6471,"nodeType":"Block","src":"2604:37:21","statements":[{"expression":{"hexValue":"66616c7365","id":6469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2625:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6442,"id":6470,"nodeType":"Return","src":"2618:12:21"}]},"id":6472,"nodeType":"IfStatement","src":"2320:321:21","trueBody":{"id":6468,"nodeType":"Block","src":"2348:250:21","statements":[{"expression":{"arguments":[{"id":6453,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"2379:5:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":6448,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"2362:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2366:7:21","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6427,"src":"2362:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2374:4:21","memberName":"push","nodeType":"MemberAccess","src":"2362:16:21","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer,bytes32)"}},"id":6454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2362:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6455,"nodeType":"ExpressionStatement","src":"2362:23:21"},{"expression":{"id":6464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6456,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"2520:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2524:10:21","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6431,"src":"2520:14:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6460,"indexExpression":{"id":6458,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"2535:5:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2520:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":6461,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"2544:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6462,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2548:7:21","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6427,"src":"2544:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2556:6:21","memberName":"length","nodeType":"MemberAccess","src":"2544:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2520:42:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6465,"nodeType":"ExpressionStatement","src":"2520:42:21"},{"expression":{"hexValue":"74727565","id":6466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2583:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6442,"id":6467,"nodeType":"Return","src":"2576:11:21"}]}}]},"documentation":{"id":6433,"nodeType":"StructuredDocumentation","src":"2077:159:21","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6474,"implemented":true,"kind":"function","modifiers":[],"name":"_add","nameLocation":"2250:4:21","nodeType":"FunctionDefinition","parameters":{"id":6439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6436,"mutability":"mutable","name":"set","nameLocation":"2267:3:21","nodeType":"VariableDeclaration","scope":6474,"src":"2255:15:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6435,"nodeType":"UserDefinedTypeName","pathNode":{"id":6434,"name":"Set","nameLocations":["2255:3:21"],"nodeType":"IdentifierPath","referencedDeclaration":6432,"src":"2255:3:21"},"referencedDeclaration":6432,"src":"2255:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6438,"mutability":"mutable","name":"value","nameLocation":"2280:5:21","nodeType":"VariableDeclaration","scope":6474,"src":"2272:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6437,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2272:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2254:32:21"},"returnParameters":{"id":6442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6474,"src":"2304:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6440,"name":"bool","nodeType":"ElementaryTypeName","src":"2304:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2303:6:21"},"scope":7034,"src":"2241:406:21","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6557,"nodeType":"Block","src":"2887:1296:21","statements":[{"assignments":[6486],"declarations":[{"constant":false,"id":6486,"mutability":"mutable","name":"position","nameLocation":"2999:8:21","nodeType":"VariableDeclaration","scope":6557,"src":"2991:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6485,"name":"uint256","nodeType":"ElementaryTypeName","src":"2991:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6491,"initialValue":{"baseExpression":{"expression":{"id":6487,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6478,"src":"3010:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6488,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3014:10:21","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6431,"src":"3010:14:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6490,"indexExpression":{"id":6489,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6480,"src":"3025:5:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3010:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2991:40:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6492,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"3046:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3058:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3046:13:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6555,"nodeType":"Block","src":"4140:37:21","statements":[{"expression":{"hexValue":"66616c7365","id":6553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4161:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6484,"id":6554,"nodeType":"Return","src":"4154:12:21"}]},"id":6556,"nodeType":"IfStatement","src":"3042:1135:21","trueBody":{"id":6552,"nodeType":"Block","src":"3061:1073:21","statements":[{"assignments":[6496],"declarations":[{"constant":false,"id":6496,"mutability":"mutable","name":"valueIndex","nameLocation":"3421:10:21","nodeType":"VariableDeclaration","scope":6552,"src":"3413:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6495,"name":"uint256","nodeType":"ElementaryTypeName","src":"3413:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6500,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6497,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"3434:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3445:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3434:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3413:33:21"},{"assignments":[6502],"declarations":[{"constant":false,"id":6502,"mutability":"mutable","name":"lastIndex","nameLocation":"3468:9:21","nodeType":"VariableDeclaration","scope":6552,"src":"3460:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6501,"name":"uint256","nodeType":"ElementaryTypeName","src":"3460:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6508,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6503,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6478,"src":"3480:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3484:7:21","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6427,"src":"3480:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3492:6:21","memberName":"length","nodeType":"MemberAccess","src":"3480:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3501:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3480:22:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3460:42:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6509,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6496,"src":"3521:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6510,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6502,"src":"3535:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3521:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6536,"nodeType":"IfStatement","src":"3517:378:21","trueBody":{"id":6535,"nodeType":"Block","src":"3546:349:21","statements":[{"assignments":[6513],"declarations":[{"constant":false,"id":6513,"mutability":"mutable","name":"lastValue","nameLocation":"3572:9:21","nodeType":"VariableDeclaration","scope":6535,"src":"3564:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6512,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3564:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6518,"initialValue":{"baseExpression":{"expression":{"id":6514,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6478,"src":"3584:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6515,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3588:7:21","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6427,"src":"3584:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6517,"indexExpression":{"id":6516,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6502,"src":"3596:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3584:22:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3564:42:21"},{"expression":{"id":6525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6519,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6478,"src":"3705:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3709:7:21","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6427,"src":"3705:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6523,"indexExpression":{"id":6521,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6496,"src":"3717:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3705:23:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6524,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6513,"src":"3731:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3705:35:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6526,"nodeType":"ExpressionStatement","src":"3705:35:21"},{"expression":{"id":6533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6527,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6478,"src":"3844:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3848:10:21","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6431,"src":"3844:14:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6531,"indexExpression":{"id":6529,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6513,"src":"3859:9:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3844:25:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6532,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"3872:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3844:36:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6534,"nodeType":"ExpressionStatement","src":"3844:36:21"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":6537,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6478,"src":"3973:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3977:7:21","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6427,"src":"3973:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3985:3:21","memberName":"pop","nodeType":"MemberAccess","src":"3973:15:21","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer)"}},"id":6542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3973:17:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6543,"nodeType":"ExpressionStatement","src":"3973:17:21"},{"expression":{"id":6548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4069:28:21","subExpression":{"baseExpression":{"expression":{"id":6544,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6478,"src":"4076:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6545,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4080:10:21","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6431,"src":"4076:14:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6547,"indexExpression":{"id":6546,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6480,"src":"4091:5:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4076:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6549,"nodeType":"ExpressionStatement","src":"4069:28:21"},{"expression":{"hexValue":"74727565","id":6550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4119:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6484,"id":6551,"nodeType":"Return","src":"4112:11:21"}]}}]},"documentation":{"id":6475,"nodeType":"StructuredDocumentation","src":"2653:157:21","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6558,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nameLocation":"2824:7:21","nodeType":"FunctionDefinition","parameters":{"id":6481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6478,"mutability":"mutable","name":"set","nameLocation":"2844:3:21","nodeType":"VariableDeclaration","scope":6558,"src":"2832:15:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6477,"nodeType":"UserDefinedTypeName","pathNode":{"id":6476,"name":"Set","nameLocations":["2832:3:21"],"nodeType":"IdentifierPath","referencedDeclaration":6432,"src":"2832:3:21"},"referencedDeclaration":6432,"src":"2832:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6480,"mutability":"mutable","name":"value","nameLocation":"2857:5:21","nodeType":"VariableDeclaration","scope":6558,"src":"2849:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6479,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2849:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2831:32:21"},"returnParameters":{"id":6484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6483,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6558,"src":"2881:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6482,"name":"bool","nodeType":"ElementaryTypeName","src":"2881:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2880:6:21"},"scope":7034,"src":"2815:1368:21","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6576,"nodeType":"Block","src":"4343:50:21","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":6569,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6562,"src":"4360:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4364:10:21","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6431,"src":"4360:14:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6572,"indexExpression":{"id":6571,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6564,"src":"4375:5:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4360:21:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4385:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4360:26:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6568,"id":6575,"nodeType":"Return","src":"4353:33:21"}]},"documentation":{"id":6559,"nodeType":"StructuredDocumentation","src":"4189:70:21","text":" @dev Returns true if the value is in the set. O(1)."},"id":6577,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nameLocation":"4273:9:21","nodeType":"FunctionDefinition","parameters":{"id":6565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6562,"mutability":"mutable","name":"set","nameLocation":"4295:3:21","nodeType":"VariableDeclaration","scope":6577,"src":"4283:15:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6561,"nodeType":"UserDefinedTypeName","pathNode":{"id":6560,"name":"Set","nameLocations":["4283:3:21"],"nodeType":"IdentifierPath","referencedDeclaration":6432,"src":"4283:3:21"},"referencedDeclaration":6432,"src":"4283:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6564,"mutability":"mutable","name":"value","nameLocation":"4308:5:21","nodeType":"VariableDeclaration","scope":6577,"src":"4300:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4300:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4282:32:21"},"returnParameters":{"id":6568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6577,"src":"4337:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6566,"name":"bool","nodeType":"ElementaryTypeName","src":"4337:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4336:6:21"},"scope":7034,"src":"4264:129:21","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6590,"nodeType":"Block","src":"4539:42:21","statements":[{"expression":{"expression":{"expression":{"id":6586,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6581,"src":"4556:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4560:7:21","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6427,"src":"4556:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4568:6:21","memberName":"length","nodeType":"MemberAccess","src":"4556:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6585,"id":6589,"nodeType":"Return","src":"4549:25:21"}]},"documentation":{"id":6578,"nodeType":"StructuredDocumentation","src":"4399:70:21","text":" @dev Returns the number of values on the set. O(1)."},"id":6591,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nameLocation":"4483:7:21","nodeType":"FunctionDefinition","parameters":{"id":6582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6581,"mutability":"mutable","name":"set","nameLocation":"4503:3:21","nodeType":"VariableDeclaration","scope":6591,"src":"4491:15:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6580,"nodeType":"UserDefinedTypeName","pathNode":{"id":6579,"name":"Set","nameLocations":["4491:3:21"],"nodeType":"IdentifierPath","referencedDeclaration":6432,"src":"4491:3:21"},"referencedDeclaration":6432,"src":"4491:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"src":"4490:17:21"},"returnParameters":{"id":6585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6584,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6591,"src":"4530:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6583,"name":"uint256","nodeType":"ElementaryTypeName","src":"4530:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4529:9:21"},"scope":7034,"src":"4474:107:21","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6607,"nodeType":"Block","src":"4999:42:21","statements":[{"expression":{"baseExpression":{"expression":{"id":6602,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6595,"src":"5016:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5020:7:21","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6427,"src":"5016:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6605,"indexExpression":{"id":6604,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6597,"src":"5028:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5016:18:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6601,"id":6606,"nodeType":"Return","src":"5009:25:21"}]},"documentation":{"id":6592,"nodeType":"StructuredDocumentation","src":"4587:331:21","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6608,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nameLocation":"4932:3:21","nodeType":"FunctionDefinition","parameters":{"id":6598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6595,"mutability":"mutable","name":"set","nameLocation":"4948:3:21","nodeType":"VariableDeclaration","scope":6608,"src":"4936:15:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6594,"nodeType":"UserDefinedTypeName","pathNode":{"id":6593,"name":"Set","nameLocations":["4936:3:21"],"nodeType":"IdentifierPath","referencedDeclaration":6432,"src":"4936:3:21"},"referencedDeclaration":6432,"src":"4936:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6597,"mutability":"mutable","name":"index","nameLocation":"4961:5:21","nodeType":"VariableDeclaration","scope":6608,"src":"4953:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6596,"name":"uint256","nodeType":"ElementaryTypeName","src":"4953:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4935:32:21"},"returnParameters":{"id":6601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6600,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6608,"src":"4990:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6599,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4990:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4989:9:21"},"scope":7034,"src":"4923:118:21","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6621,"nodeType":"Block","src":"5655:35:21","statements":[{"expression":{"expression":{"id":6618,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6612,"src":"5672:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5676:7:21","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6427,"src":"5672:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"functionReturnParameters":6617,"id":6620,"nodeType":"Return","src":"5665:18:21"}]},"documentation":{"id":6609,"nodeType":"StructuredDocumentation","src":"5047:529:21","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":6622,"implemented":true,"kind":"function","modifiers":[],"name":"_values","nameLocation":"5590:7:21","nodeType":"FunctionDefinition","parameters":{"id":6613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6612,"mutability":"mutable","name":"set","nameLocation":"5610:3:21","nodeType":"VariableDeclaration","scope":6622,"src":"5598:15:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6611,"nodeType":"UserDefinedTypeName","pathNode":{"id":6610,"name":"Set","nameLocations":["5598:3:21"],"nodeType":"IdentifierPath","referencedDeclaration":6432,"src":"5598:3:21"},"referencedDeclaration":6432,"src":"5598:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"src":"5597:17:21"},"returnParameters":{"id":6617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6616,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6622,"src":"5637:16:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6614,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5637:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6615,"nodeType":"ArrayTypeName","src":"5637:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"5636:18:21"},"scope":7034,"src":"5581:109:21","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableSet.Bytes32Set","id":6626,"members":[{"constant":false,"id":6625,"mutability":"mutable","name":"_inner","nameLocation":"5747:6:21","nodeType":"VariableDeclaration","scope":6626,"src":"5743:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6624,"nodeType":"UserDefinedTypeName","pathNode":{"id":6623,"name":"Set","nameLocations":["5743:3:21"],"nodeType":"IdentifierPath","referencedDeclaration":6432,"src":"5743:3:21"},"referencedDeclaration":6432,"src":"5743:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"Bytes32Set","nameLocation":"5722:10:21","nodeType":"StructDefinition","scope":7034,"src":"5715:45:21","visibility":"public"},{"body":{"id":6643,"nodeType":"Block","src":"6006:47:21","statements":[{"expression":{"arguments":[{"expression":{"id":6638,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6630,"src":"6028:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6032:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6625,"src":"6028:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6640,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6632,"src":"6040:5:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6637,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"6023:4:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6023:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6636,"id":6642,"nodeType":"Return","src":"6016:30:21"}]},"documentation":{"id":6627,"nodeType":"StructuredDocumentation","src":"5766:159:21","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6644,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"5939:3:21","nodeType":"FunctionDefinition","parameters":{"id":6633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6630,"mutability":"mutable","name":"set","nameLocation":"5962:3:21","nodeType":"VariableDeclaration","scope":6644,"src":"5943:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6629,"nodeType":"UserDefinedTypeName","pathNode":{"id":6628,"name":"Bytes32Set","nameLocations":["5943:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6626,"src":"5943:10:21"},"referencedDeclaration":6626,"src":"5943:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6632,"mutability":"mutable","name":"value","nameLocation":"5975:5:21","nodeType":"VariableDeclaration","scope":6644,"src":"5967:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6631,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5967:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5942:39:21"},"returnParameters":{"id":6636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6635,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6644,"src":"6000:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6634,"name":"bool","nodeType":"ElementaryTypeName","src":"6000:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5999:6:21"},"scope":7034,"src":"5930:123:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6661,"nodeType":"Block","src":"6300:50:21","statements":[{"expression":{"arguments":[{"expression":{"id":6656,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6648,"src":"6325:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6329:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6625,"src":"6325:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6658,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6650,"src":"6337:5:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6655,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"6317:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6317:26:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6654,"id":6660,"nodeType":"Return","src":"6310:33:21"}]},"documentation":{"id":6645,"nodeType":"StructuredDocumentation","src":"6059:157:21","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6662,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"6230:6:21","nodeType":"FunctionDefinition","parameters":{"id":6651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6648,"mutability":"mutable","name":"set","nameLocation":"6256:3:21","nodeType":"VariableDeclaration","scope":6662,"src":"6237:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6647,"nodeType":"UserDefinedTypeName","pathNode":{"id":6646,"name":"Bytes32Set","nameLocations":["6237:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6626,"src":"6237:10:21"},"referencedDeclaration":6626,"src":"6237:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6650,"mutability":"mutable","name":"value","nameLocation":"6269:5:21","nodeType":"VariableDeclaration","scope":6662,"src":"6261:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6261:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6236:39:21"},"returnParameters":{"id":6654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6653,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6662,"src":"6294:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6652,"name":"bool","nodeType":"ElementaryTypeName","src":"6294:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6293:6:21"},"scope":7034,"src":"6221:129:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6679,"nodeType":"Block","src":"6517:52:21","statements":[{"expression":{"arguments":[{"expression":{"id":6674,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6666,"src":"6544:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6675,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6548:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6625,"src":"6544:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6676,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6668,"src":"6556:5:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6673,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"6534:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":6677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6534:28:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6672,"id":6678,"nodeType":"Return","src":"6527:35:21"}]},"documentation":{"id":6663,"nodeType":"StructuredDocumentation","src":"6356:70:21","text":" @dev Returns true if the value is in the set. O(1)."},"id":6680,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"6440:8:21","nodeType":"FunctionDefinition","parameters":{"id":6669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6666,"mutability":"mutable","name":"set","nameLocation":"6468:3:21","nodeType":"VariableDeclaration","scope":6680,"src":"6449:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6665,"nodeType":"UserDefinedTypeName","pathNode":{"id":6664,"name":"Bytes32Set","nameLocations":["6449:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6626,"src":"6449:10:21"},"referencedDeclaration":6626,"src":"6449:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6668,"mutability":"mutable","name":"value","nameLocation":"6481:5:21","nodeType":"VariableDeclaration","scope":6680,"src":"6473:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6473:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6448:39:21"},"returnParameters":{"id":6672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6680,"src":"6511:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6670,"name":"bool","nodeType":"ElementaryTypeName","src":"6511:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6510:6:21"},"scope":7034,"src":"6431:138:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6694,"nodeType":"Block","src":"6722:43:21","statements":[{"expression":{"arguments":[{"expression":{"id":6690,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6684,"src":"6747:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6691,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6751:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6625,"src":"6747:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":6689,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6591,"src":"6739:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":6692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6739:19:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6688,"id":6693,"nodeType":"Return","src":"6732:26:21"}]},"documentation":{"id":6681,"nodeType":"StructuredDocumentation","src":"6575:70:21","text":" @dev Returns the number of values in the set. O(1)."},"id":6695,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"6659:6:21","nodeType":"FunctionDefinition","parameters":{"id":6685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6684,"mutability":"mutable","name":"set","nameLocation":"6685:3:21","nodeType":"VariableDeclaration","scope":6695,"src":"6666:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6683,"nodeType":"UserDefinedTypeName","pathNode":{"id":6682,"name":"Bytes32Set","nameLocations":["6666:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6626,"src":"6666:10:21"},"referencedDeclaration":6626,"src":"6666:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"6665:24:21"},"returnParameters":{"id":6688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6687,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6695,"src":"6713:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6686,"name":"uint256","nodeType":"ElementaryTypeName","src":"6713:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6712:9:21"},"scope":7034,"src":"6650:115:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6712,"nodeType":"Block","src":"7190:46:21","statements":[{"expression":{"arguments":[{"expression":{"id":6707,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6699,"src":"7211:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6708,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7215:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6625,"src":"7211:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6709,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6701,"src":"7223:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6706,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6608,"src":"7207:3:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":6710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7207:22:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6705,"id":6711,"nodeType":"Return","src":"7200:29:21"}]},"documentation":{"id":6696,"nodeType":"StructuredDocumentation","src":"6771:331:21","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6713,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"7116:2:21","nodeType":"FunctionDefinition","parameters":{"id":6702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6699,"mutability":"mutable","name":"set","nameLocation":"7138:3:21","nodeType":"VariableDeclaration","scope":6713,"src":"7119:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6698,"nodeType":"UserDefinedTypeName","pathNode":{"id":6697,"name":"Bytes32Set","nameLocations":["7119:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6626,"src":"7119:10:21"},"referencedDeclaration":6626,"src":"7119:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":6701,"mutability":"mutable","name":"index","nameLocation":"7151:5:21","nodeType":"VariableDeclaration","scope":6713,"src":"7143:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6700,"name":"uint256","nodeType":"ElementaryTypeName","src":"7143:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7118:39:21"},"returnParameters":{"id":6705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6713,"src":"7181:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7181:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7180:9:21"},"scope":7034,"src":"7107:129:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6742,"nodeType":"Block","src":"7857:219:21","statements":[{"assignments":[6727],"declarations":[{"constant":false,"id":6727,"mutability":"mutable","name":"store","nameLocation":"7884:5:21","nodeType":"VariableDeclaration","scope":6742,"src":"7867:22:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6725,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7867:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6726,"nodeType":"ArrayTypeName","src":"7867:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":6732,"initialValue":{"arguments":[{"expression":{"id":6729,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6717,"src":"7900:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":6730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7904:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6625,"src":"7900:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":6728,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6622,"src":"7892:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"}},"id":6731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7892:19:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7867:44:21"},{"assignments":[6737],"declarations":[{"constant":false,"id":6737,"mutability":"mutable","name":"result","nameLocation":"7938:6:21","nodeType":"VariableDeclaration","scope":6742,"src":"7921:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6735,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7921:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6736,"nodeType":"ArrayTypeName","src":"7921:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":6738,"nodeType":"VariableDeclarationStatement","src":"7921:23:21"},{"AST":{"nodeType":"YulBlock","src":"8007:39:21","statements":[{"nodeType":"YulAssignment","src":"8021:15:21","value":{"name":"store","nodeType":"YulIdentifier","src":"8031:5:21"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"8021:6:21"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":6737,"isOffset":false,"isSlot":false,"src":"8021:6:21","valueSize":1},{"declaration":6727,"isOffset":false,"isSlot":false,"src":"8031:5:21","valueSize":1}],"id":6739,"nodeType":"InlineAssembly","src":"7998:48:21"},{"expression":{"id":6740,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"8063:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":6722,"id":6741,"nodeType":"Return","src":"8056:13:21"}]},"documentation":{"id":6714,"nodeType":"StructuredDocumentation","src":"7242:529:21","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":6743,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"7785:6:21","nodeType":"FunctionDefinition","parameters":{"id":6718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6717,"mutability":"mutable","name":"set","nameLocation":"7811:3:21","nodeType":"VariableDeclaration","scope":6743,"src":"7792:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":6716,"nodeType":"UserDefinedTypeName","pathNode":{"id":6715,"name":"Bytes32Set","nameLocations":["7792:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6626,"src":"7792:10:21"},"referencedDeclaration":6626,"src":"7792:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$6626_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"7791:24:21"},"returnParameters":{"id":6722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6743,"src":"7839:16:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6719,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7839:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6720,"nodeType":"ArrayTypeName","src":"7839:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"7838:18:21"},"scope":7034,"src":"7776:300:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.AddressSet","id":6747,"members":[{"constant":false,"id":6746,"mutability":"mutable","name":"_inner","nameLocation":"8133:6:21","nodeType":"VariableDeclaration","scope":6747,"src":"8129:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6745,"nodeType":"UserDefinedTypeName","pathNode":{"id":6744,"name":"Set","nameLocations":["8129:3:21"],"nodeType":"IdentifierPath","referencedDeclaration":6432,"src":"8129:3:21"},"referencedDeclaration":6432,"src":"8129:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"AddressSet","nameLocation":"8108:10:21","nodeType":"StructDefinition","scope":7034,"src":"8101:45:21","visibility":"public"},{"body":{"id":6773,"nodeType":"Block","src":"8392:74:21","statements":[{"expression":{"arguments":[{"expression":{"id":6759,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6751,"src":"8414:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8418:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6746,"src":"8414:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":6767,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"8450:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8442:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6765,"name":"uint160","nodeType":"ElementaryTypeName","src":"8442:7:21","typeDescriptions":{}}},"id":6768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8442:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8434:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6763,"name":"uint256","nodeType":"ElementaryTypeName","src":"8434:7:21","typeDescriptions":{}}},"id":6769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8434:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8426:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6761,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8426:7:21","typeDescriptions":{}}},"id":6770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8426:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6758,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"8409:4:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8409:50:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6757,"id":6772,"nodeType":"Return","src":"8402:57:21"}]},"documentation":{"id":6748,"nodeType":"StructuredDocumentation","src":"8152:159:21","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6774,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"8325:3:21","nodeType":"FunctionDefinition","parameters":{"id":6754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6751,"mutability":"mutable","name":"set","nameLocation":"8348:3:21","nodeType":"VariableDeclaration","scope":6774,"src":"8329:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6750,"nodeType":"UserDefinedTypeName","pathNode":{"id":6749,"name":"AddressSet","nameLocations":["8329:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6747,"src":"8329:10:21"},"referencedDeclaration":6747,"src":"8329:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6753,"mutability":"mutable","name":"value","nameLocation":"8361:5:21","nodeType":"VariableDeclaration","scope":6774,"src":"8353:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6752,"name":"address","nodeType":"ElementaryTypeName","src":"8353:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8328:39:21"},"returnParameters":{"id":6757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6774,"src":"8386:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6755,"name":"bool","nodeType":"ElementaryTypeName","src":"8386:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8385:6:21"},"scope":7034,"src":"8316:150:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6800,"nodeType":"Block","src":"8713:77:21","statements":[{"expression":{"arguments":[{"expression":{"id":6786,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6778,"src":"8738:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8742:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6746,"src":"8738:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":6794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6780,"src":"8774:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8766:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6792,"name":"uint160","nodeType":"ElementaryTypeName","src":"8766:7:21","typeDescriptions":{}}},"id":6795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8766:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8758:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6790,"name":"uint256","nodeType":"ElementaryTypeName","src":"8758:7:21","typeDescriptions":{}}},"id":6796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8758:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8750:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6788,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8750:7:21","typeDescriptions":{}}},"id":6797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8750:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6785,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"8730:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8730:53:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6784,"id":6799,"nodeType":"Return","src":"8723:60:21"}]},"documentation":{"id":6775,"nodeType":"StructuredDocumentation","src":"8472:157:21","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6801,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"8643:6:21","nodeType":"FunctionDefinition","parameters":{"id":6781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6778,"mutability":"mutable","name":"set","nameLocation":"8669:3:21","nodeType":"VariableDeclaration","scope":6801,"src":"8650:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6777,"nodeType":"UserDefinedTypeName","pathNode":{"id":6776,"name":"AddressSet","nameLocations":["8650:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6747,"src":"8650:10:21"},"referencedDeclaration":6747,"src":"8650:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6780,"mutability":"mutable","name":"value","nameLocation":"8682:5:21","nodeType":"VariableDeclaration","scope":6801,"src":"8674:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6779,"name":"address","nodeType":"ElementaryTypeName","src":"8674:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8649:39:21"},"returnParameters":{"id":6784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6783,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6801,"src":"8707:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6782,"name":"bool","nodeType":"ElementaryTypeName","src":"8707:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8706:6:21"},"scope":7034,"src":"8634:156:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6827,"nodeType":"Block","src":"8957:79:21","statements":[{"expression":{"arguments":[{"expression":{"id":6813,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6805,"src":"8984:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8988:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6746,"src":"8984:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":6821,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6807,"src":"9020:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9012:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6819,"name":"uint160","nodeType":"ElementaryTypeName","src":"9012:7:21","typeDescriptions":{}}},"id":6822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9012:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9004:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6817,"name":"uint256","nodeType":"ElementaryTypeName","src":"9004:7:21","typeDescriptions":{}}},"id":6823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9004:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8996:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6815,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8996:7:21","typeDescriptions":{}}},"id":6824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8996:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6812,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"8974:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":6825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8974:55:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6811,"id":6826,"nodeType":"Return","src":"8967:62:21"}]},"documentation":{"id":6802,"nodeType":"StructuredDocumentation","src":"8796:70:21","text":" @dev Returns true if the value is in the set. O(1)."},"id":6828,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"8880:8:21","nodeType":"FunctionDefinition","parameters":{"id":6808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6805,"mutability":"mutable","name":"set","nameLocation":"8908:3:21","nodeType":"VariableDeclaration","scope":6828,"src":"8889:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6804,"nodeType":"UserDefinedTypeName","pathNode":{"id":6803,"name":"AddressSet","nameLocations":["8889:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6747,"src":"8889:10:21"},"referencedDeclaration":6747,"src":"8889:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6807,"mutability":"mutable","name":"value","nameLocation":"8921:5:21","nodeType":"VariableDeclaration","scope":6828,"src":"8913:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6806,"name":"address","nodeType":"ElementaryTypeName","src":"8913:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8888:39:21"},"returnParameters":{"id":6811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6828,"src":"8951:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6809,"name":"bool","nodeType":"ElementaryTypeName","src":"8951:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8950:6:21"},"scope":7034,"src":"8871:165:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6842,"nodeType":"Block","src":"9189:43:21","statements":[{"expression":{"arguments":[{"expression":{"id":6838,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6832,"src":"9214:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9218:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6746,"src":"9214:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":6837,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6591,"src":"9206:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":6840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9206:19:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6836,"id":6841,"nodeType":"Return","src":"9199:26:21"}]},"documentation":{"id":6829,"nodeType":"StructuredDocumentation","src":"9042:70:21","text":" @dev Returns the number of values in the set. O(1)."},"id":6843,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"9126:6:21","nodeType":"FunctionDefinition","parameters":{"id":6833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6832,"mutability":"mutable","name":"set","nameLocation":"9152:3:21","nodeType":"VariableDeclaration","scope":6843,"src":"9133:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6831,"nodeType":"UserDefinedTypeName","pathNode":{"id":6830,"name":"AddressSet","nameLocations":["9133:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6747,"src":"9133:10:21"},"referencedDeclaration":6747,"src":"9133:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"9132:24:21"},"returnParameters":{"id":6836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6843,"src":"9180:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6834,"name":"uint256","nodeType":"ElementaryTypeName","src":"9180:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9179:9:21"},"scope":7034,"src":"9117:115:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6869,"nodeType":"Block","src":"9657:73:21","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":6861,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6847,"src":"9702:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9706:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6746,"src":"9702:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6863,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6849,"src":"9714:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6860,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6608,"src":"9698:3:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":6864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9698:22:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9690:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6858,"name":"uint256","nodeType":"ElementaryTypeName","src":"9690:7:21","typeDescriptions":{}}},"id":6865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9690:31:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9682:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6856,"name":"uint160","nodeType":"ElementaryTypeName","src":"9682:7:21","typeDescriptions":{}}},"id":6866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9682:40:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9674:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6854,"name":"address","nodeType":"ElementaryTypeName","src":"9674:7:21","typeDescriptions":{}}},"id":6867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9674:49:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6853,"id":6868,"nodeType":"Return","src":"9667:56:21"}]},"documentation":{"id":6844,"nodeType":"StructuredDocumentation","src":"9238:331:21","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6870,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"9583:2:21","nodeType":"FunctionDefinition","parameters":{"id":6850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6847,"mutability":"mutable","name":"set","nameLocation":"9605:3:21","nodeType":"VariableDeclaration","scope":6870,"src":"9586:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6846,"nodeType":"UserDefinedTypeName","pathNode":{"id":6845,"name":"AddressSet","nameLocations":["9586:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6747,"src":"9586:10:21"},"referencedDeclaration":6747,"src":"9586:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":6849,"mutability":"mutable","name":"index","nameLocation":"9618:5:21","nodeType":"VariableDeclaration","scope":6870,"src":"9610:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6848,"name":"uint256","nodeType":"ElementaryTypeName","src":"9610:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9585:39:21"},"returnParameters":{"id":6853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6870,"src":"9648:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6851,"name":"address","nodeType":"ElementaryTypeName","src":"9648:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9647:9:21"},"scope":7034,"src":"9574:156:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6899,"nodeType":"Block","src":"10351:219:21","statements":[{"assignments":[6884],"declarations":[{"constant":false,"id":6884,"mutability":"mutable","name":"store","nameLocation":"10378:5:21","nodeType":"VariableDeclaration","scope":6899,"src":"10361:22:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6882,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10361:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6883,"nodeType":"ArrayTypeName","src":"10361:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":6889,"initialValue":{"arguments":[{"expression":{"id":6886,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6874,"src":"10394:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":6887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10398:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6746,"src":"10394:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":6885,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6622,"src":"10386:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"}},"id":6888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10386:19:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10361:44:21"},{"assignments":[6894],"declarations":[{"constant":false,"id":6894,"mutability":"mutable","name":"result","nameLocation":"10432:6:21","nodeType":"VariableDeclaration","scope":6899,"src":"10415:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6892,"name":"address","nodeType":"ElementaryTypeName","src":"10415:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6893,"nodeType":"ArrayTypeName","src":"10415:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":6895,"nodeType":"VariableDeclarationStatement","src":"10415:23:21"},{"AST":{"nodeType":"YulBlock","src":"10501:39:21","statements":[{"nodeType":"YulAssignment","src":"10515:15:21","value":{"name":"store","nodeType":"YulIdentifier","src":"10525:5:21"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"10515:6:21"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":6894,"isOffset":false,"isSlot":false,"src":"10515:6:21","valueSize":1},{"declaration":6884,"isOffset":false,"isSlot":false,"src":"10525:5:21","valueSize":1}],"id":6896,"nodeType":"InlineAssembly","src":"10492:48:21"},{"expression":{"id":6897,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6894,"src":"10557:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":6879,"id":6898,"nodeType":"Return","src":"10550:13:21"}]},"documentation":{"id":6871,"nodeType":"StructuredDocumentation","src":"9736:529:21","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":6900,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"10279:6:21","nodeType":"FunctionDefinition","parameters":{"id":6875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6874,"mutability":"mutable","name":"set","nameLocation":"10305:3:21","nodeType":"VariableDeclaration","scope":6900,"src":"10286:22:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":6873,"nodeType":"UserDefinedTypeName","pathNode":{"id":6872,"name":"AddressSet","nameLocations":["10286:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":6747,"src":"10286:10:21"},"referencedDeclaration":6747,"src":"10286:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$6747_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"10285:24:21"},"returnParameters":{"id":6879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6878,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6900,"src":"10333:16:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6876,"name":"address","nodeType":"ElementaryTypeName","src":"10333:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6877,"nodeType":"ArrayTypeName","src":"10333:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"10332:18:21"},"scope":7034,"src":"10270:300:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.UintSet","id":6904,"members":[{"constant":false,"id":6903,"mutability":"mutable","name":"_inner","nameLocation":"10621:6:21","nodeType":"VariableDeclaration","scope":6904,"src":"10617:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6902,"nodeType":"UserDefinedTypeName","pathNode":{"id":6901,"name":"Set","nameLocations":["10617:3:21"],"nodeType":"IdentifierPath","referencedDeclaration":6432,"src":"10617:3:21"},"referencedDeclaration":6432,"src":"10617:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"UintSet","nameLocation":"10599:7:21","nodeType":"StructDefinition","scope":7034,"src":"10592:42:21","visibility":"public"},{"body":{"id":6924,"nodeType":"Block","src":"10877:56:21","statements":[{"expression":{"arguments":[{"expression":{"id":6916,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"10899:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10903:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6903,"src":"10899:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":6920,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"10919:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10911:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10911:7:21","typeDescriptions":{}}},"id":6921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10911:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6915,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"10894:4:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10894:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6914,"id":6923,"nodeType":"Return","src":"10887:39:21"}]},"documentation":{"id":6905,"nodeType":"StructuredDocumentation","src":"10640:159:21","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6925,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"10813:3:21","nodeType":"FunctionDefinition","parameters":{"id":6911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6908,"mutability":"mutable","name":"set","nameLocation":"10833:3:21","nodeType":"VariableDeclaration","scope":6925,"src":"10817:19:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6907,"nodeType":"UserDefinedTypeName","pathNode":{"id":6906,"name":"UintSet","nameLocations":["10817:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":6904,"src":"10817:7:21"},"referencedDeclaration":6904,"src":"10817:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":6910,"mutability":"mutable","name":"value","nameLocation":"10846:5:21","nodeType":"VariableDeclaration","scope":6925,"src":"10838:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6909,"name":"uint256","nodeType":"ElementaryTypeName","src":"10838:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10816:36:21"},"returnParameters":{"id":6914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6913,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6925,"src":"10871:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6912,"name":"bool","nodeType":"ElementaryTypeName","src":"10871:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10870:6:21"},"scope":7034,"src":"10804:129:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6945,"nodeType":"Block","src":"11177:59:21","statements":[{"expression":{"arguments":[{"expression":{"id":6937,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"11202:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6938,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11206:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6903,"src":"11202:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":6941,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"11222:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11214:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11214:7:21","typeDescriptions":{}}},"id":6942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11214:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6936,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"11194:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":6943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11194:35:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6935,"id":6944,"nodeType":"Return","src":"11187:42:21"}]},"documentation":{"id":6926,"nodeType":"StructuredDocumentation","src":"10939:157:21","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6946,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"11110:6:21","nodeType":"FunctionDefinition","parameters":{"id":6932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6929,"mutability":"mutable","name":"set","nameLocation":"11133:3:21","nodeType":"VariableDeclaration","scope":6946,"src":"11117:19:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6928,"nodeType":"UserDefinedTypeName","pathNode":{"id":6927,"name":"UintSet","nameLocations":["11117:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":6904,"src":"11117:7:21"},"referencedDeclaration":6904,"src":"11117:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":6931,"mutability":"mutable","name":"value","nameLocation":"11146:5:21","nodeType":"VariableDeclaration","scope":6946,"src":"11138:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6930,"name":"uint256","nodeType":"ElementaryTypeName","src":"11138:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11116:36:21"},"returnParameters":{"id":6935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6946,"src":"11171:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6933,"name":"bool","nodeType":"ElementaryTypeName","src":"11171:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11170:6:21"},"scope":7034,"src":"11101:135:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6966,"nodeType":"Block","src":"11400:61:21","statements":[{"expression":{"arguments":[{"expression":{"id":6958,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6950,"src":"11427:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11431:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6903,"src":"11427:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":6962,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6952,"src":"11447:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11439:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6960,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11439:7:21","typeDescriptions":{}}},"id":6963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11439:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6957,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"11417:9:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":6964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11417:37:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6956,"id":6965,"nodeType":"Return","src":"11410:44:21"}]},"documentation":{"id":6947,"nodeType":"StructuredDocumentation","src":"11242:70:21","text":" @dev Returns true if the value is in the set. O(1)."},"id":6967,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"11326:8:21","nodeType":"FunctionDefinition","parameters":{"id":6953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6950,"mutability":"mutable","name":"set","nameLocation":"11351:3:21","nodeType":"VariableDeclaration","scope":6967,"src":"11335:19:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6949,"nodeType":"UserDefinedTypeName","pathNode":{"id":6948,"name":"UintSet","nameLocations":["11335:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":6904,"src":"11335:7:21"},"referencedDeclaration":6904,"src":"11335:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":6952,"mutability":"mutable","name":"value","nameLocation":"11364:5:21","nodeType":"VariableDeclaration","scope":6967,"src":"11356:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6951,"name":"uint256","nodeType":"ElementaryTypeName","src":"11356:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11334:36:21"},"returnParameters":{"id":6956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6967,"src":"11394:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6954,"name":"bool","nodeType":"ElementaryTypeName","src":"11394:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11393:6:21"},"scope":7034,"src":"11317:144:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6981,"nodeType":"Block","src":"11611:43:21","statements":[{"expression":{"arguments":[{"expression":{"id":6977,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6971,"src":"11636:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11640:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6903,"src":"11636:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":6976,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6591,"src":"11628:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":6979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11628:19:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6975,"id":6980,"nodeType":"Return","src":"11621:26:21"}]},"documentation":{"id":6968,"nodeType":"StructuredDocumentation","src":"11467:70:21","text":" @dev Returns the number of values in the set. O(1)."},"id":6982,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"11551:6:21","nodeType":"FunctionDefinition","parameters":{"id":6972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6971,"mutability":"mutable","name":"set","nameLocation":"11574:3:21","nodeType":"VariableDeclaration","scope":6982,"src":"11558:19:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6970,"nodeType":"UserDefinedTypeName","pathNode":{"id":6969,"name":"UintSet","nameLocations":["11558:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":6904,"src":"11558:7:21"},"referencedDeclaration":6904,"src":"11558:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"}],"src":"11557:21:21"},"returnParameters":{"id":6975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6974,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6982,"src":"11602:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6973,"name":"uint256","nodeType":"ElementaryTypeName","src":"11602:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11601:9:21"},"scope":7034,"src":"11542:112:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7002,"nodeType":"Block","src":"12076:55:21","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":6996,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6986,"src":"12105:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":6997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12109:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6903,"src":"12105:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":6998,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6988,"src":"12117:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6995,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6608,"src":"12101:3:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":6999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12101:22:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12093:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6993,"name":"uint256","nodeType":"ElementaryTypeName","src":"12093:7:21","typeDescriptions":{}}},"id":7000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12093:31:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6992,"id":7001,"nodeType":"Return","src":"12086:38:21"}]},"documentation":{"id":6983,"nodeType":"StructuredDocumentation","src":"11660:331:21","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7003,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"12005:2:21","nodeType":"FunctionDefinition","parameters":{"id":6989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6986,"mutability":"mutable","name":"set","nameLocation":"12024:3:21","nodeType":"VariableDeclaration","scope":7003,"src":"12008:19:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":6985,"nodeType":"UserDefinedTypeName","pathNode":{"id":6984,"name":"UintSet","nameLocations":["12008:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":6904,"src":"12008:7:21"},"referencedDeclaration":6904,"src":"12008:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":6988,"mutability":"mutable","name":"index","nameLocation":"12037:5:21","nodeType":"VariableDeclaration","scope":7003,"src":"12029:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6987,"name":"uint256","nodeType":"ElementaryTypeName","src":"12029:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12007:36:21"},"returnParameters":{"id":6992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7003,"src":"12067:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6990,"name":"uint256","nodeType":"ElementaryTypeName","src":"12067:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12066:9:21"},"scope":7034,"src":"11996:135:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7032,"nodeType":"Block","src":"12749:219:21","statements":[{"assignments":[7017],"declarations":[{"constant":false,"id":7017,"mutability":"mutable","name":"store","nameLocation":"12776:5:21","nodeType":"VariableDeclaration","scope":7032,"src":"12759:22:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7015,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12759:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7016,"nodeType":"ArrayTypeName","src":"12759:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7022,"initialValue":{"arguments":[{"expression":{"id":7019,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"12792:3:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12796:6:21","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":6903,"src":"12792:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6432_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7018,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6622,"src":"12784:7:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6432_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"}},"id":7021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12784:19:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"12759:44:21"},{"assignments":[7027],"declarations":[{"constant":false,"id":7027,"mutability":"mutable","name":"result","nameLocation":"12830:6:21","nodeType":"VariableDeclaration","scope":7032,"src":"12813:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7025,"name":"uint256","nodeType":"ElementaryTypeName","src":"12813:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7026,"nodeType":"ArrayTypeName","src":"12813:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":7028,"nodeType":"VariableDeclarationStatement","src":"12813:23:21"},{"AST":{"nodeType":"YulBlock","src":"12899:39:21","statements":[{"nodeType":"YulAssignment","src":"12913:15:21","value":{"name":"store","nodeType":"YulIdentifier","src":"12923:5:21"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"12913:6:21"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":7027,"isOffset":false,"isSlot":false,"src":"12913:6:21","valueSize":1},{"declaration":7017,"isOffset":false,"isSlot":false,"src":"12923:5:21","valueSize":1}],"id":7029,"nodeType":"InlineAssembly","src":"12890:48:21"},{"expression":{"id":7030,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7027,"src":"12955:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":7012,"id":7031,"nodeType":"Return","src":"12948:13:21"}]},"documentation":{"id":7004,"nodeType":"StructuredDocumentation","src":"12137:529:21","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7033,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"12680:6:21","nodeType":"FunctionDefinition","parameters":{"id":7008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7007,"mutability":"mutable","name":"set","nameLocation":"12703:3:21","nodeType":"VariableDeclaration","scope":7033,"src":"12687:19:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7006,"nodeType":"UserDefinedTypeName","pathNode":{"id":7005,"name":"UintSet","nameLocations":["12687:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":6904,"src":"12687:7:21"},"referencedDeclaration":6904,"src":"12687:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"}],"src":"12686:21:21"},"returnParameters":{"id":7012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7033,"src":"12731:16:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7009,"name":"uint256","nodeType":"ElementaryTypeName","src":"12731:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7010,"nodeType":"ArrayTypeName","src":"12731:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12730:18:21"},"scope":7034,"src":"12671:297:21","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7035,"src":"1330:11640:21","usedErrors":[],"usedEvents":[]}],"src":"205:12766:21"},"id":21},"contracts/B3TRChallenges.sol":{"ast":{"absolutePath":"contracts/B3TRChallenges.sol","exportedSymbols":{"AccessControlUpgradeable":[362],"B3TRChallenges":[8579],"ChallengeCoreLogic":[10968],"ChallengeSettlementLogic":[12543],"ChallengeStorageTypes":[12655],"ChallengeTypes":[12871],"IB3TR":[13131],"IChallenges":[13860],"IVeBetterPassport":[15484],"IX2EarnApps":[16381],"IXAllocationVotingGovernor":[17346],"ReentrancyGuardUpgradeable":[973],"UUPSUpgradeable":[798]},"id":8580,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7036,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:22"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","id":7038,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":363,"src":"57:115:22","symbolAliases":[{"foreign":{"id":7037,"name":"AccessControlUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":362,"src":"66:24:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":7040,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":974,"src":"173:118:22","symbolAliases":[{"foreign":{"id":7039,"name":"ReentrancyGuardUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"182:26:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":7042,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":799,"src":"292:102:22","symbolAliases":[{"foreign":{"id":7041,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"301:15:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IChallenges.sol","file":"./interfaces/IChallenges.sol","id":7044,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":13861,"src":"395:59:22","symbolAliases":[{"foreign":{"id":7043,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"404:11:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IB3TR.sol","file":"./interfaces/IB3TR.sol","id":7046,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":13132,"src":"455:47:22","symbolAliases":[{"foreign":{"id":7045,"name":"IB3TR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"464:5:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IVeBetterPassport.sol","file":"./interfaces/IVeBetterPassport.sol","id":7048,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":15485,"src":"503:71:22","symbolAliases":[{"foreign":{"id":7047,"name":"IVeBetterPassport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"512:17:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IXAllocationVotingGovernor.sol","file":"./interfaces/IXAllocationVotingGovernor.sol","id":7050,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":17347,"src":"575:89:22","symbolAliases":[{"foreign":{"id":7049,"name":"IXAllocationVotingGovernor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17346,"src":"584:26:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IX2EarnApps.sol","file":"./interfaces/IX2EarnApps.sol","id":7052,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":16382,"src":"665:59:22","symbolAliases":[{"foreign":{"id":7051,"name":"IX2EarnApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16381,"src":"674:11:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeCoreLogic.sol","file":"./challenges/libraries/ChallengeCoreLogic.sol","id":7054,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":10969,"src":"725:83:22","symbolAliases":[{"foreign":{"id":7053,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"734:18:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeSettlementLogic.sol","file":"./challenges/libraries/ChallengeSettlementLogic.sol","id":7056,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":12544,"src":"809:95:22","symbolAliases":[{"foreign":{"id":7055,"name":"ChallengeSettlementLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"818:24:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeStorageTypes.sol","file":"./challenges/libraries/ChallengeStorageTypes.sol","id":7058,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":12656,"src":"905:89:22","symbolAliases":[{"foreign":{"id":7057,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"914:21:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeTypes.sol","file":"./challenges/libraries/ChallengeTypes.sol","id":7060,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8580,"sourceUnit":12872,"src":"995:75:22","symbolAliases":[{"foreign":{"id":7059,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"1004:14:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7062,"name":"IChallenges","nameLocations":["1448:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":13860,"src":"1448:11:22"},"id":7063,"nodeType":"InheritanceSpecifier","src":"1448:11:22"},{"baseName":{"id":7064,"name":"AccessControlUpgradeable","nameLocations":["1461:24:22"],"nodeType":"IdentifierPath","referencedDeclaration":362,"src":"1461:24:22"},"id":7065,"nodeType":"InheritanceSpecifier","src":"1461:24:22"},{"baseName":{"id":7066,"name":"ReentrancyGuardUpgradeable","nameLocations":["1487:26:22"],"nodeType":"IdentifierPath","referencedDeclaration":973,"src":"1487:26:22"},"id":7067,"nodeType":"InheritanceSpecifier","src":"1487:26:22"},{"baseName":{"id":7068,"name":"UUPSUpgradeable","nameLocations":["1515:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":798,"src":"1515:15:22"},"id":7069,"nodeType":"InheritanceSpecifier","src":"1515:15:22"}],"canonicalName":"B3TRChallenges","contractDependencies":[],"contractKind":"contract","documentation":{"id":7061,"nodeType":"StructuredDocumentation","src":"1072:349:22","text":"@title B3TRChallenges\n @notice Upgradeable entrypoint for creating, joining, settling, and administering B3TR challenges.\n @dev This contract owns storage, roles, and external access control while delegating challenge lifecycle and\n settlement logic to dedicated libraries. NatSpec for the external API is inherited from `IChallenges`."},"fullyImplemented":true,"id":8579,"linearizedBaseContracts":[8579,798,1125,973,362,1013,2040,1096,844,616,13860],"name":"B3TRChallenges","nameLocation":"1430:14:22","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"f72c0d8b","id":7074,"mutability":"constant","name":"UPGRADER_ROLE","nameLocation":"1559:13:22","nodeType":"VariableDeclaration","scope":8579,"src":"1535:66:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7070,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1535:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"55504752414445525f524f4c45","id":7072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1585:15:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3","typeString":"literal_string \"UPGRADER_ROLE\""},"value":"UPGRADER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3","typeString":"literal_string \"UPGRADER_ROLE\""}],"id":7071,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1575:9:22","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1575:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"952f2133","id":7079,"mutability":"constant","name":"CONTRACTS_ADDRESS_MANAGER_ROLE","nameLocation":"1629:30:22","nodeType":"VariableDeclaration","scope":8579,"src":"1605:100:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7075,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1605:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"434f4e5452414354535f414444524553535f4d414e414745525f524f4c45","id":7077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1672:32:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_56af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b7","typeString":"literal_string \"CONTRACTS_ADDRESS_MANAGER_ROLE\""},"value":"CONTRACTS_ADDRESS_MANAGER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_56af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b7","typeString":"literal_string \"CONTRACTS_ADDRESS_MANAGER_ROLE\""}],"id":7076,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1662:9:22","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1662:43:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"fa7626d0","id":7084,"mutability":"constant","name":"SETTINGS_MANAGER_ROLE","nameLocation":"1733:21:22","nodeType":"VariableDeclaration","scope":8579,"src":"1709:82:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7080,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1709:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"53455454494e47535f4d414e414745525f524f4c45","id":7082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1767:23:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_dfc0438b5754beb343462ff330f73266ff7457fdf879dfb68c958ccbe15765f3","typeString":"literal_string \"SETTINGS_MANAGER_ROLE\""},"value":"SETTINGS_MANAGER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_dfc0438b5754beb343462ff330f73266ff7457fdf879dfb68c958ccbe15765f3","typeString":"literal_string \"SETTINGS_MANAGER_ROLE\""}],"id":7081,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1757:9:22","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:34:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":7091,"nodeType":"Block","src":"1861:33:22","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7088,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"1867:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1867:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7090,"nodeType":"ExpressionStatement","src":"1867:22:22"}]},"documentation":{"id":7085,"nodeType":"StructuredDocumentation","src":"1796:48:22","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":7092,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7086,"nodeType":"ParameterList","parameters":[],"src":"1858:2:22"},"returnParameters":{"id":7087,"nodeType":"ParameterList","parameters":[],"src":"1861:0:22"},"scope":8579,"src":"1847:47:22","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[13574],"body":{"id":7279,"nodeType":"Block","src":"2084:1528:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7104,"name":"roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"2101:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData calldata"}},"id":7105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2107:5:22","memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":12736,"src":"2101:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2124:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2116:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7106,"name":"address","nodeType":"ElementaryTypeName","src":"2116:7:22","typeDescriptions":{}}},"id":7109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2116:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2101:25:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7111,"name":"roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"2136:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData calldata"}},"id":7112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2142:8:22","memberName":"upgrader","nodeType":"MemberAccess","referencedDeclaration":12738,"src":"2136:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2162:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2154:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7113,"name":"address","nodeType":"ElementaryTypeName","src":"2154:7:22","typeDescriptions":{}}},"id":7116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2136:28:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2101:63:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7119,"name":"roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"2174:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData calldata"}},"id":7120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2180:23:22","memberName":"contractsAddressManager","nodeType":"MemberAccess","referencedDeclaration":12740,"src":"2174:29:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2215:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2207:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7121,"name":"address","nodeType":"ElementaryTypeName","src":"2207:7:22","typeDescriptions":{}}},"id":7124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2207:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2174:43:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2101:116:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7127,"name":"roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"2227:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData calldata"}},"id":7128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2233:15:22","memberName":"settingsManager","nodeType":"MemberAccess","referencedDeclaration":12742,"src":"2227:21:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2260:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2252:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7129,"name":"address","nodeType":"ElementaryTypeName","src":"2252:7:22","typeDescriptions":{}}},"id":7132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2252:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2227:35:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2101:161:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7135,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2272:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2277:11:22","memberName":"b3trAddress","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"2272:16:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2300:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2292:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7137,"name":"address","nodeType":"ElementaryTypeName","src":"2292:7:22","typeDescriptions":{}}},"id":7140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2292:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2272:30:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2101:201:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7143,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2312:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2317:23:22","memberName":"veBetterPassportAddress","nodeType":"MemberAccess","referencedDeclaration":12721,"src":"2312:28:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2352:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2344:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7145,"name":"address","nodeType":"ElementaryTypeName","src":"2344:7:22","typeDescriptions":{}}},"id":7148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2344:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2312:42:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2101:253:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7151,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2364:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2369:24:22","memberName":"xAllocationVotingAddress","nodeType":"MemberAccess","referencedDeclaration":12723,"src":"2364:29:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2405:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2397:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7153,"name":"address","nodeType":"ElementaryTypeName","src":"2397:7:22","typeDescriptions":{}}},"id":7156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2397:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2364:43:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2101:306:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7159,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2417:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2422:17:22","memberName":"x2EarnAppsAddress","nodeType":"MemberAccess","referencedDeclaration":12725,"src":"2417:22:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2451:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2443:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7161,"name":"address","nodeType":"ElementaryTypeName","src":"2443:7:22","typeDescriptions":{}}},"id":7164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2443:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2417:36:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2101:352:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7171,"nodeType":"IfStatement","src":"2090:405:22","trueBody":{"id":7170,"nodeType":"Block","src":"2460:35:22","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7167,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13138,"src":"2475:11:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2475:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7169,"nodeType":"RevertStatement","src":"2468:20:22"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7172,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2511:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2516:20:22","memberName":"maxChallengeDuration","nodeType":"MemberAccess","referencedDeclaration":12727,"src":"2511:25:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2540:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2511:30:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7176,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2551:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2556:15:22","memberName":"maxSelectedApps","nodeType":"MemberAccess","referencedDeclaration":12729,"src":"2551:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2575:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2551:25:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2511:65:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7181,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2586:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2591:15:22","memberName":"maxParticipants","nodeType":"MemberAccess","referencedDeclaration":12731,"src":"2586:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2610:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2586:25:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2511:100:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7186,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2621:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2626:12:22","memberName":"minBetAmount","nodeType":"MemberAccess","referencedDeclaration":12733,"src":"2621:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2642:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2621:22:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2511:132:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7194,"nodeType":"IfStatement","src":"2500:172:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7191,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13140,"src":"2657:13:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":7192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2657:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7193,"nodeType":"RevertStatement","src":"2650:22:22"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7195,"name":"__AccessControl_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"2679:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2679:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7197,"nodeType":"ExpressionStatement","src":"2679:22:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7198,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"2707:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2707:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7200,"nodeType":"ExpressionStatement","src":"2707:24:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7201,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"2737:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2737:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7203,"nodeType":"ExpressionStatement","src":"2737:24:22"},{"assignments":[7208],"declarations":[{"constant":false,"id":7208,"mutability":"mutable","name":"$","nameLocation":"2816:1:22","nodeType":"VariableDeclaration","scope":7279,"src":"2768:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7207,"nodeType":"UserDefinedTypeName","pathNode":{"id":7206,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["2768:21:22","2790:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"2768:39:22"},"referencedDeclaration":12643,"src":"2768:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7212,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7209,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"2820:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2842:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"2820:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2820:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2768:96:22"},{"expression":{"id":7218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7213,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7208,"src":"2870:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2872:20:22","memberName":"maxChallengeDuration","nodeType":"MemberAccess","referencedDeclaration":12570,"src":"2870:22:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7216,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2895:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2900:20:22","memberName":"maxChallengeDuration","nodeType":"MemberAccess","referencedDeclaration":12727,"src":"2895:25:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2870:50:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7219,"nodeType":"ExpressionStatement","src":"2870:50:22"},{"expression":{"id":7225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7220,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7208,"src":"2926:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7222,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2928:15:22","memberName":"maxSelectedApps","nodeType":"MemberAccess","referencedDeclaration":12572,"src":"2926:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7223,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2946:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2951:15:22","memberName":"maxSelectedApps","nodeType":"MemberAccess","referencedDeclaration":12729,"src":"2946:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2926:40:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7226,"nodeType":"ExpressionStatement","src":"2926:40:22"},{"expression":{"id":7232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":7227,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7208,"src":"2972:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2974:15:22","memberName":"maxParticipants","nodeType":"MemberAccess","referencedDeclaration":12576,"src":"2972:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7230,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"2992:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2997:15:22","memberName":"maxParticipants","nodeType":"MemberAccess","referencedDeclaration":12731,"src":"2992:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2972:40:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7233,"nodeType":"ExpressionStatement","src":"2972:40:22"},{"expression":{"arguments":[{"expression":{"id":7235,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"3035:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3040:12:22","memberName":"minBetAmount","nodeType":"MemberAccess","referencedDeclaration":12733,"src":"3035:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7234,"name":"_setMinBetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8498,"src":"3018:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3018:35:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7238,"nodeType":"ExpressionStatement","src":"3018:35:22"},{"eventCall":{"arguments":[{"hexValue":"30","id":7240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3197:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":7241,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"3200:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3205:20:22","memberName":"maxChallengeDuration","nodeType":"MemberAccess","referencedDeclaration":12727,"src":"3200:25:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7239,"name":"MaxChallengeDurationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13393,"src":"3169:27:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":7243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3169:57:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7244,"nodeType":"EmitStatement","src":"3164:62:22"},{"eventCall":{"arguments":[{"hexValue":"30","id":7246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3260:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":7247,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"3263:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3268:15:22","memberName":"maxSelectedApps","nodeType":"MemberAccess","referencedDeclaration":12729,"src":"3263:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7245,"name":"MaxSelectedAppsUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"3237:22:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":7249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3237:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7250,"nodeType":"EmitStatement","src":"3232:52:22"},{"eventCall":{"arguments":[{"hexValue":"30","id":7252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3318:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":7253,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"3321:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3326:15:22","memberName":"maxParticipants","nodeType":"MemberAccess","referencedDeclaration":12731,"src":"3321:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7251,"name":"MaxParticipantsUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13407,"src":"3295:22:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":7255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3295:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7256,"nodeType":"EmitStatement","src":"3290:52:22"},{"expression":{"arguments":[{"expression":{"id":7258,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"3377:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3382:11:22","memberName":"b3trAddress","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"3377:16:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7260,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"3401:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3406:23:22","memberName":"veBetterPassportAddress","nodeType":"MemberAccess","referencedDeclaration":12721,"src":"3401:28:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7262,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"3437:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3442:24:22","memberName":"xAllocationVotingAddress","nodeType":"MemberAccess","referencedDeclaration":12723,"src":"3437:29:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7264,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"3474:4:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData calldata"}},"id":7265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3479:17:22","memberName":"x2EarnAppsAddress","nodeType":"MemberAccess","referencedDeclaration":12725,"src":"3474:22:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7257,"name":"_initializeAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8526,"src":"3349:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address,address)"}},"id":7266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3349:153:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7267,"nodeType":"ExpressionStatement","src":"3349:153:22"},{"expression":{"arguments":[{"expression":{"id":7269,"name":"roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"3525:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData calldata"}},"id":7270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3531:5:22","memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":12736,"src":"3525:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7271,"name":"roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"3538:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData calldata"}},"id":7272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3544:8:22","memberName":"upgrader","nodeType":"MemberAccess","referencedDeclaration":12738,"src":"3538:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7273,"name":"roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"3554:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData calldata"}},"id":7274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3560:23:22","memberName":"contractsAddressManager","nodeType":"MemberAccess","referencedDeclaration":12740,"src":"3554:29:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7275,"name":"roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"3585:5:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData calldata"}},"id":7276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3591:15:22","memberName":"settingsManager","nodeType":"MemberAccess","referencedDeclaration":12742,"src":"3585:21:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7268,"name":"_initializeRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8558,"src":"3508:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address,address)"}},"id":7277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3508:99:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7278,"nodeType":"ExpressionStatement","src":"3508:99:22"}]},"documentation":{"id":7093,"nodeType":"StructuredDocumentation","src":"1898:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"3cc376bb","id":7280,"implemented":true,"kind":"function","modifiers":[{"id":7102,"kind":"modifierInvocation","modifierName":{"id":7101,"name":"initializer","nameLocations":["2072:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":470,"src":"2072:11:22"},"nodeType":"ModifierInvocation","src":"2072:11:22"}],"name":"initialize","nameLocation":"1937:10:22","nodeType":"FunctionDefinition","parameters":{"id":7100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7096,"mutability":"mutable","name":"data","nameLocation":"1996:4:22","nodeType":"VariableDeclaration","scope":7280,"src":"1953:47:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData"},"typeName":{"id":7095,"nodeType":"UserDefinedTypeName","pathNode":{"id":7094,"name":"ChallengeTypes.InitializationData","nameLocations":["1953:14:22","1968:18:22"],"nodeType":"IdentifierPath","referencedDeclaration":12734,"src":"1953:33:22"},"referencedDeclaration":12734,"src":"1953:33:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_storage_ptr","typeString":"struct ChallengeTypes.InitializationData"}},"visibility":"internal"},{"constant":false,"id":7099,"mutability":"mutable","name":"roles","nameLocation":"2053:5:22","nodeType":"VariableDeclaration","scope":7280,"src":"2006:52:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData"},"typeName":{"id":7098,"nodeType":"UserDefinedTypeName","pathNode":{"id":7097,"name":"ChallengeTypes.InitializationRoleData","nameLocations":["2006:14:22","2021:22:22"],"nodeType":"IdentifierPath","referencedDeclaration":12743,"src":"2006:37:22"},"referencedDeclaration":12743,"src":"2006:37:22","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_storage_ptr","typeString":"struct ChallengeTypes.InitializationRoleData"}},"visibility":"internal"}],"src":"1947:115:22"},"returnParameters":{"id":7103,"nodeType":"ParameterList","parameters":[],"src":"2084:0:22"},"scope":8579,"src":"1928:1684:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7305,"nodeType":"Block","src":"3655:153:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3665:26:22","subExpression":{"arguments":[{"id":7285,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7282,"src":"3674:4:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7286,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3680:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3684:6:22","memberName":"sender","nodeType":"MemberAccess","src":"3680:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7284,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"3666:7:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":7288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3666:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":7295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3695:40:22","subExpression":{"arguments":[{"id":7291,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"3704:18:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7292,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3724:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3728:6:22","memberName":"sender","nodeType":"MemberAccess","src":"3724:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7290,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"3696:7:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":7294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3696:39:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3665:70:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7303,"nodeType":"IfStatement","src":"3661:136:22","trueBody":{"id":7302,"nodeType":"Block","src":"3737:60:22","statements":[{"errorCall":{"arguments":[{"expression":{"id":7298,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3779:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3783:6:22","memberName":"sender","nodeType":"MemberAccess","src":"3779:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7297,"name":"ChallengesUnauthorizedUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13329,"src":"3752:26:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":7300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3752:38:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7301,"nodeType":"RevertStatement","src":"3745:45:22"}]}},{"id":7304,"nodeType":"PlaceholderStatement","src":"3802:1:22"}]},"id":7306,"name":"onlyRoleOrAdmin","nameLocation":"3625:15:22","nodeType":"ModifierDefinition","parameters":{"id":7283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7282,"mutability":"mutable","name":"role","nameLocation":"3649:4:22","nodeType":"VariableDeclaration","scope":7306,"src":"3641:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7281,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3641:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3640:14:22"},"src":"3616:192:22","virtual":false,"visibility":"internal"},{"baseFunctions":[752],"body":{"id":7315,"nodeType":"Block","src":"3890:2:22","statements":[]},"id":7316,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":7312,"name":"UPGRADER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7074,"src":"3875:13:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":7313,"kind":"modifierInvocation","modifierName":{"id":7311,"name":"onlyRole","nameLocations":["3866:8:22"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"3866:8:22"},"nodeType":"ModifierInvocation","src":"3866:23:22"}],"name":"_authorizeUpgrade","nameLocation":"3821:17:22","nodeType":"FunctionDefinition","overrides":{"id":7310,"nodeType":"OverrideSpecifier","overrides":[],"src":"3857:8:22"},"parameters":{"id":7309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7308,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7316,"src":"3839:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7307,"name":"address","nodeType":"ElementaryTypeName","src":"3839:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3838:9:22"},"returnParameters":{"id":7314,"nodeType":"ParameterList","parameters":[],"src":"3890:0:22"},"scope":8579,"src":"3812:80:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[13580],"body":{"id":7324,"nodeType":"Block","src":"3983:21:22","statements":[{"expression":{"hexValue":"32","id":7322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3996:3:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_ad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5","typeString":"literal_string \"2\""},"value":"2"},"functionReturnParameters":7321,"id":7323,"nodeType":"Return","src":"3989:10:22"}]},"documentation":{"id":7317,"nodeType":"StructuredDocumentation","src":"3896:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"54fd4d50","id":7325,"implemented":true,"kind":"function","modifiers":[],"name":"version","nameLocation":"3935:7:22","nodeType":"FunctionDefinition","parameters":{"id":7318,"nodeType":"ParameterList","parameters":[],"src":"3942:2:22"},"returnParameters":{"id":7321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7325,"src":"3968:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7319,"name":"string","nodeType":"ElementaryTypeName","src":"3968:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3967:15:22"},"scope":8579,"src":"3926:78:22","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[13586],"body":{"id":7336,"nodeType":"Block","src":"4096:77:22","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7331,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"4109:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4131:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"4109:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4109:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4154:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"4109:59:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7330,"id":7335,"nodeType":"Return","src":"4102:66:22"}]},"documentation":{"id":7326,"nodeType":"StructuredDocumentation","src":"4008:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"a2f05725","id":7337,"implemented":true,"kind":"function","modifiers":[],"name":"challengeCount","nameLocation":"4047:14:22","nodeType":"FunctionDefinition","parameters":{"id":7327,"nodeType":"ParameterList","parameters":[],"src":"4061:2:22"},"returnParameters":{"id":7330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7329,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7337,"src":"4087:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7328,"name":"uint256","nodeType":"ElementaryTypeName","src":"4087:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4086:9:22"},"scope":8579,"src":"4038:135:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13592],"body":{"id":7348,"nodeType":"Block","src":"4271:83:22","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7343,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"4284:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4306:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"4284:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4284:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4329:20:22","memberName":"maxChallengeDuration","nodeType":"MemberAccess","referencedDeclaration":12570,"src":"4284:65:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7342,"id":7347,"nodeType":"Return","src":"4277:72:22"}]},"documentation":{"id":7338,"nodeType":"StructuredDocumentation","src":"4177:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"d2177bdd","id":7349,"implemented":true,"kind":"function","modifiers":[],"name":"maxChallengeDuration","nameLocation":"4216:20:22","nodeType":"FunctionDefinition","parameters":{"id":7339,"nodeType":"ParameterList","parameters":[],"src":"4236:2:22"},"returnParameters":{"id":7342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7341,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7349,"src":"4262:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7340,"name":"uint256","nodeType":"ElementaryTypeName","src":"4262:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4261:9:22"},"scope":8579,"src":"4207:147:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13598],"body":{"id":7360,"nodeType":"Block","src":"4447:78:22","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7355,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"4460:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4482:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"4460:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4460:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4505:15:22","memberName":"maxSelectedApps","nodeType":"MemberAccess","referencedDeclaration":12572,"src":"4460:60:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7354,"id":7359,"nodeType":"Return","src":"4453:67:22"}]},"documentation":{"id":7350,"nodeType":"StructuredDocumentation","src":"4358:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"f7806522","id":7361,"implemented":true,"kind":"function","modifiers":[],"name":"maxSelectedApps","nameLocation":"4397:15:22","nodeType":"FunctionDefinition","parameters":{"id":7351,"nodeType":"ParameterList","parameters":[],"src":"4412:2:22"},"returnParameters":{"id":7354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7361,"src":"4438:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7352,"name":"uint256","nodeType":"ElementaryTypeName","src":"4438:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4437:9:22"},"scope":8579,"src":"4388:137:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13604],"body":{"id":7372,"nodeType":"Block","src":"4618:78:22","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7367,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"4631:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4653:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"4631:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4631:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4676:15:22","memberName":"maxParticipants","nodeType":"MemberAccess","referencedDeclaration":12576,"src":"4631:60:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7366,"id":7371,"nodeType":"Return","src":"4624:67:22"}]},"documentation":{"id":7362,"nodeType":"StructuredDocumentation","src":"4529:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"24924bf7","id":7373,"implemented":true,"kind":"function","modifiers":[],"name":"maxParticipants","nameLocation":"4568:15:22","nodeType":"FunctionDefinition","parameters":{"id":7363,"nodeType":"ParameterList","parameters":[],"src":"4583:2:22"},"returnParameters":{"id":7366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7365,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7373,"src":"4609:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7364,"name":"uint256","nodeType":"ElementaryTypeName","src":"4609:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4608:9:22"},"scope":8579,"src":"4559:137:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13610],"body":{"id":7384,"nodeType":"Block","src":"4786:75:22","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7379,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"4799:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4821:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"4799:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4799:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4844:12:22","memberName":"minBetAmount","nodeType":"MemberAccess","referencedDeclaration":12626,"src":"4799:57:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7378,"id":7383,"nodeType":"Return","src":"4792:64:22"}]},"documentation":{"id":7374,"nodeType":"StructuredDocumentation","src":"4700:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"fa968eea","id":7385,"implemented":true,"kind":"function","modifiers":[],"name":"minBetAmount","nameLocation":"4739:12:22","nodeType":"FunctionDefinition","parameters":{"id":7375,"nodeType":"ParameterList","parameters":[],"src":"4751:2:22"},"returnParameters":{"id":7378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7377,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7385,"src":"4777:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7376,"name":"uint256","nodeType":"ElementaryTypeName","src":"4777:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4776:9:22"},"scope":8579,"src":"4730:131:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13619],"body":{"id":7500,"nodeType":"Block","src":"4998:1599:22","statements":[{"assignments":[7398],"declarations":[{"constant":false,"id":7398,"mutability":"mutable","name":"$","nameLocation":"5052:1:22","nodeType":"VariableDeclaration","scope":7500,"src":"5004:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7397,"nodeType":"UserDefinedTypeName","pathNode":{"id":7396,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["5004:21:22","5026:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"5004:39:22"},"referencedDeclaration":12643,"src":"5004:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7402,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7399,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"5056:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5078:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"5056:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5056:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5004:96:22"},{"expression":{"arguments":[{"id":7404,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"5129:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7405,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"5142:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5144:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"5142:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7403,"name":"_ensureChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"5106:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":7407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5106:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7408,"nodeType":"ExpressionStatement","src":"5106:53:22"},{"assignments":[7413],"declarations":[{"constant":false,"id":7413,"mutability":"mutable","name":"challenge","nameLocation":"5199:9:22","nodeType":"VariableDeclaration","scope":7500,"src":"5166:42:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":7412,"nodeType":"UserDefinedTypeName","pathNode":{"id":7411,"name":"ChallengeTypes.Challenge","nameLocations":["5166:14:22","5181:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"5166:24:22"},"referencedDeclaration":12806,"src":"5166:24:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":7418,"initialValue":{"baseExpression":{"expression":{"id":7414,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"5211:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7415,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5213:10:22","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"5211:12:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":7417,"indexExpression":{"id":7416,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"5224:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5211:25:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5166:70:22"},{"assignments":[7420],"declarations":[{"constant":false,"id":7420,"mutability":"mutable","name":"duration","nameLocation":"5250:8:22","nodeType":"VariableDeclaration","scope":7500,"src":"5242:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7419,"name":"uint256","nodeType":"ElementaryTypeName","src":"5242:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7428,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7421,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5261:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7422,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5271:8:22","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"5261:18:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":7423,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5282:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5292:10:22","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"5282:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5261:41:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5305:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5261:45:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5242:64:22"},{"expression":{"arguments":[{"id":7431,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"5370:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7432,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5395:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7433,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5405:4:22","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"5395:14:22","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},{"expression":{"id":7434,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5429:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5439:10:22","memberName":"visibility","nodeType":"MemberAccess","referencedDeclaration":12749,"src":"5429:20:22","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},{"expression":{"id":7436,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5472:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7437,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5482:13:22","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12752,"src":"5472:23:22","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},{"arguments":[{"arguments":[{"id":7442,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"5579:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7440,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"5542:18:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":7441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5561:17:22","memberName":"getComputedStatus","nodeType":"MemberAccess","referencedDeclaration":9792,"src":"5542:36:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_view$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) view returns (uint8)"}},"id":7443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5542:49:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":7438,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"5511:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":7439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5526:15:22","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"5511:30:22","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5511:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},{"expression":{"id":7445,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5616:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5626:14:22","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"5616:24:22","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},{"expression":{"id":7447,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5657:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5667:7:22","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"5657:17:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7449,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5695:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7450,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5705:11:22","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"5695:21:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7451,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5736:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7452,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5746:10:22","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"5736:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7453,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5774:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7454,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5784:8:22","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"5774:18:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7455,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7420,"src":"5810:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7456,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5837:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5847:9:22","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12770,"src":"5837:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7458,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5876:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5886:10:22","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12772,"src":"5876:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":7460,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5920:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7461,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5930:7:22","memberName":"winners","nodeType":"MemberAccess","referencedDeclaration":12794,"src":"5920:17:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5938:6:22","memberName":"length","nodeType":"MemberAccess","src":"5920:24:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7463,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"5968:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5978:14:22","memberName":"prizePerWinner","nodeType":"MemberAccess","referencedDeclaration":12774,"src":"5968:24:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7465,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6009:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6019:7:22","memberName":"allApps","nodeType":"MemberAccess","referencedDeclaration":12760,"src":"6009:17:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7467,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6046:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6056:10:22","memberName":"totalPrize","nodeType":"MemberAccess","referencedDeclaration":12776,"src":"6046:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":7469,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6092:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7470,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6102:12:22","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"6092:22:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6115:6:22","memberName":"length","nodeType":"MemberAccess","src":"6092:29:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":7472,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6143:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7473,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6153:7:22","memberName":"invited","nodeType":"MemberAccess","referencedDeclaration":12788,"src":"6143:17:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6161:6:22","memberName":"length","nodeType":"MemberAccess","src":"6143:24:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":7475,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6190:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7476,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6200:8:22","memberName":"declined","nodeType":"MemberAccess","referencedDeclaration":12791,"src":"6190:18:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6209:6:22","memberName":"length","nodeType":"MemberAccess","src":"6190:25:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":7478,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6242:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6252:6:22","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12797,"src":"6242:16:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6259:6:22","memberName":"length","nodeType":"MemberAccess","src":"6242:23:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":7481,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6287:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6297:7:22","memberName":"winners","nodeType":"MemberAccess","referencedDeclaration":12794,"src":"6287:17:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6305:6:22","memberName":"length","nodeType":"MemberAccess","src":"6287:24:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7484,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6330:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6340:9:22","memberName":"bestScore","nodeType":"MemberAccess","referencedDeclaration":12778,"src":"6330:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7486,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6368:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6378:9:22","memberName":"bestCount","nodeType":"MemberAccess","referencedDeclaration":12780,"src":"6368:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7488,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6411:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6421:14:22","memberName":"payoutsClaimed","nodeType":"MemberAccess","referencedDeclaration":12782,"src":"6411:24:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7490,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6450:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6460:5:22","memberName":"title","nodeType":"MemberAccess","referencedDeclaration":12799,"src":"6450:15:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"expression":{"id":7492,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6486:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6496:11:22","memberName":"description","nodeType":"MemberAccess","referencedDeclaration":12801,"src":"6486:21:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"expression":{"id":7494,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6525:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6535:8:22","memberName":"imageURI","nodeType":"MemberAccess","referencedDeclaration":12803,"src":"6525:18:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"expression":{"id":7496,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"6564:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":7497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6574:11:22","memberName":"metadataURI","nodeType":"MemberAccess","referencedDeclaration":12805,"src":"6564:21:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":7429,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"5320:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":7430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5335:13:22","memberName":"ChallengeView","nodeType":"MemberAccess","referencedDeclaration":12870,"src":"5320:28:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ChallengeView_$12870_storage_ptr_$","typeString":"type(struct ChallengeTypes.ChallengeView storage pointer)"}},"id":7498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5357:11:22","5389:4:22","5417:10:22","5457:13:22","5503:6:22","5600:14:22","5648:7:22","5682:11:22","5724:10:22","5764:8:22","5800:8:22","5826:9:22","5864:10:22","5904:14:22","5952:14:22","6000:7:22","6034:10:22","6074:16:22","6129:12:22","6175:13:22","6223:17:22","6273:12:22","6319:9:22","6357:9:22","6395:14:22","6443:5:22","6473:11:22","6515:8:22","6551:11:22"],"names":["challengeId","kind","visibility","challengeType","status","settlementMode","creator","stakeAmount","startRound","endRound","duration","threshold","numWinners","winnersClaimed","prizePerWinner","allApps","totalPrize","participantCount","invitedCount","declinedCount","selectedAppsCount","winnersCount","bestScore","bestCount","payoutsClaimed","title","description","imageURI","metadataURI"],"nodeType":"FunctionCall","src":"5320:1272:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengeView_$12870_memory_ptr","typeString":"struct ChallengeTypes.ChallengeView memory"}},"functionReturnParameters":7393,"id":7499,"nodeType":"Return","src":"5313:1279:22"}]},"documentation":{"id":7386,"nodeType":"StructuredDocumentation","src":"4865:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"1bdd4b74","id":7501,"implemented":true,"kind":"function","modifiers":[],"name":"getChallenge","nameLocation":"4904:12:22","nodeType":"FunctionDefinition","parameters":{"id":7389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7388,"mutability":"mutable","name":"challengeId","nameLocation":"4925:11:22","nodeType":"VariableDeclaration","scope":7501,"src":"4917:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7387,"name":"uint256","nodeType":"ElementaryTypeName","src":"4917:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4916:21:22"},"returnParameters":{"id":7393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7392,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7501,"src":"4961:35:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengeView_$12870_memory_ptr","typeString":"struct ChallengeTypes.ChallengeView"},"typeName":{"id":7391,"nodeType":"UserDefinedTypeName","pathNode":{"id":7390,"name":"ChallengeTypes.ChallengeView","nameLocations":["4961:14:22","4976:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":12870,"src":"4961:28:22"},"referencedDeclaration":12870,"src":"4961:28:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengeView_$12870_storage_ptr","typeString":"struct ChallengeTypes.ChallengeView"}},"visibility":"internal"}],"src":"4960:37:22"},"scope":8579,"src":"4895:1702:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13628],"body":{"id":7518,"nodeType":"Block","src":"6735:99:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":7514,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7504,"src":"6816:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7512,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"6779:18:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":7513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6798:17:22","memberName":"getComputedStatus","nodeType":"MemberAccess","referencedDeclaration":9792,"src":"6779:36:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_view$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) view returns (uint8)"}},"id":7515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6779:49:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":7510,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"6748:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":7511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6763:15:22","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"6748:30:22","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":7516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6748:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"functionReturnParameters":7509,"id":7517,"nodeType":"Return","src":"6741:88:22"}]},"documentation":{"id":7502,"nodeType":"StructuredDocumentation","src":"6601:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"832c8bc6","id":7519,"implemented":true,"kind":"function","modifiers":[],"name":"getChallengeStatus","nameLocation":"6640:18:22","nodeType":"FunctionDefinition","parameters":{"id":7505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7504,"mutability":"mutable","name":"challengeId","nameLocation":"6667:11:22","nodeType":"VariableDeclaration","scope":7519,"src":"6659:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7503,"name":"uint256","nodeType":"ElementaryTypeName","src":"6659:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6658:21:22"},"returnParameters":{"id":7509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7508,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7519,"src":"6703:30:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"typeName":{"id":7507,"nodeType":"UserDefinedTypeName","pathNode":{"id":7506,"name":"ChallengeTypes.ChallengeStatus","nameLocations":["6703:14:22","6718:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":12673,"src":"6703:30:22"},"referencedDeclaration":12673,"src":"6703:30:22","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"visibility":"internal"}],"src":"6702:32:22"},"scope":8579,"src":"6631:203:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13637],"body":{"id":7549,"nodeType":"Block","src":"6964:217:22","statements":[{"assignments":[7532],"declarations":[{"constant":false,"id":7532,"mutability":"mutable","name":"$","nameLocation":"7018:1:22","nodeType":"VariableDeclaration","scope":7549,"src":"6970:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7531,"nodeType":"UserDefinedTypeName","pathNode":{"id":7530,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["6970:21:22","6992:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"6970:39:22"},"referencedDeclaration":12643,"src":"6970:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7536,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7533,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"7022:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7044:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"7022:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7022:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6970:96:22"},{"expression":{"arguments":[{"id":7538,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7522,"src":"7095:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7539,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7532,"src":"7108:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7110:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"7108:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7537,"name":"_ensureChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"7072:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":7541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7072:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7542,"nodeType":"ExpressionStatement","src":"7072:53:22"},{"expression":{"expression":{"baseExpression":{"expression":{"id":7543,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7532,"src":"7138:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7140:10:22","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"7138:12:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":7546,"indexExpression":{"id":7545,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7522,"src":"7151:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7138:25:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"id":7547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7164:12:22","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"7138:38:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":7527,"id":7548,"nodeType":"Return","src":"7131:45:22"}]},"documentation":{"id":7520,"nodeType":"StructuredDocumentation","src":"6838:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"023bf958","id":7550,"implemented":true,"kind":"function","modifiers":[],"name":"getChallengeParticipants","nameLocation":"6877:24:22","nodeType":"FunctionDefinition","parameters":{"id":7523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7522,"mutability":"mutable","name":"challengeId","nameLocation":"6910:11:22","nodeType":"VariableDeclaration","scope":7550,"src":"6902:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7521,"name":"uint256","nodeType":"ElementaryTypeName","src":"6902:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6901:21:22"},"returnParameters":{"id":7527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7526,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7550,"src":"6946:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7524,"name":"address","nodeType":"ElementaryTypeName","src":"6946:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7525,"nodeType":"ArrayTypeName","src":"6946:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6945:18:22"},"scope":8579,"src":"6868:313:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13646],"body":{"id":7580,"nodeType":"Block","src":"7306:212:22","statements":[{"assignments":[7563],"declarations":[{"constant":false,"id":7563,"mutability":"mutable","name":"$","nameLocation":"7360:1:22","nodeType":"VariableDeclaration","scope":7580,"src":"7312:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7562,"nodeType":"UserDefinedTypeName","pathNode":{"id":7561,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["7312:21:22","7334:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"7312:39:22"},"referencedDeclaration":12643,"src":"7312:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7567,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7564,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"7364:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7386:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"7364:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7364:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7312:96:22"},{"expression":{"arguments":[{"id":7569,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7553,"src":"7437:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7570,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"7450:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7452:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"7450:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7568,"name":"_ensureChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"7414:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":7572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7414:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7573,"nodeType":"ExpressionStatement","src":"7414:53:22"},{"expression":{"expression":{"baseExpression":{"expression":{"id":7574,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"7480:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7482:10:22","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"7480:12:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":7577,"indexExpression":{"id":7576,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7553,"src":"7493:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7480:25:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"id":7578,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7506:7:22","memberName":"invited","nodeType":"MemberAccess","referencedDeclaration":12788,"src":"7480:33:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":7558,"id":7579,"nodeType":"Return","src":"7473:40:22"}]},"documentation":{"id":7551,"nodeType":"StructuredDocumentation","src":"7185:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"5de5720f","id":7581,"implemented":true,"kind":"function","modifiers":[],"name":"getChallengeInvited","nameLocation":"7224:19:22","nodeType":"FunctionDefinition","parameters":{"id":7554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7553,"mutability":"mutable","name":"challengeId","nameLocation":"7252:11:22","nodeType":"VariableDeclaration","scope":7581,"src":"7244:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7552,"name":"uint256","nodeType":"ElementaryTypeName","src":"7244:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7243:21:22"},"returnParameters":{"id":7558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7581,"src":"7288:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7555,"name":"address","nodeType":"ElementaryTypeName","src":"7288:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7556,"nodeType":"ArrayTypeName","src":"7288:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"7287:18:22"},"scope":8579,"src":"7215:303:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13655],"body":{"id":7611,"nodeType":"Block","src":"7644:213:22","statements":[{"assignments":[7594],"declarations":[{"constant":false,"id":7594,"mutability":"mutable","name":"$","nameLocation":"7698:1:22","nodeType":"VariableDeclaration","scope":7611,"src":"7650:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7593,"nodeType":"UserDefinedTypeName","pathNode":{"id":7592,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["7650:21:22","7672:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"7650:39:22"},"referencedDeclaration":12643,"src":"7650:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7598,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7595,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"7702:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7724:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"7702:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7702:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7650:96:22"},{"expression":{"arguments":[{"id":7600,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"7775:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7601,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7594,"src":"7788:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7790:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"7788:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7599,"name":"_ensureChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"7752:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":7603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7752:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7604,"nodeType":"ExpressionStatement","src":"7752:53:22"},{"expression":{"expression":{"baseExpression":{"expression":{"id":7605,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7594,"src":"7818:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7820:10:22","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"7818:12:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":7608,"indexExpression":{"id":7607,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"7831:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7818:25:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"id":7609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7844:8:22","memberName":"declined","nodeType":"MemberAccess","referencedDeclaration":12791,"src":"7818:34:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":7589,"id":7610,"nodeType":"Return","src":"7811:41:22"}]},"documentation":{"id":7582,"nodeType":"StructuredDocumentation","src":"7522:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"cf33e76c","id":7612,"implemented":true,"kind":"function","modifiers":[],"name":"getChallengeDeclined","nameLocation":"7561:20:22","nodeType":"FunctionDefinition","parameters":{"id":7585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7584,"mutability":"mutable","name":"challengeId","nameLocation":"7590:11:22","nodeType":"VariableDeclaration","scope":7612,"src":"7582:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7583,"name":"uint256","nodeType":"ElementaryTypeName","src":"7582:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7581:21:22"},"returnParameters":{"id":7589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7612,"src":"7626:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7586,"name":"address","nodeType":"ElementaryTypeName","src":"7626:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7587,"nodeType":"ArrayTypeName","src":"7626:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"7625:18:22"},"scope":8579,"src":"7552:305:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13664],"body":{"id":7642,"nodeType":"Block","src":"7987:211:22","statements":[{"assignments":[7625],"declarations":[{"constant":false,"id":7625,"mutability":"mutable","name":"$","nameLocation":"8041:1:22","nodeType":"VariableDeclaration","scope":7642,"src":"7993:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7624,"nodeType":"UserDefinedTypeName","pathNode":{"id":7623,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["7993:21:22","8015:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"7993:39:22"},"referencedDeclaration":12643,"src":"7993:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7629,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7626,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"8045:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8067:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"8045:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8045:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7993:96:22"},{"expression":{"arguments":[{"id":7631,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7615,"src":"8118:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7632,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"8131:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8133:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"8131:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7630,"name":"_ensureChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"8095:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":7634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8095:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7635,"nodeType":"ExpressionStatement","src":"8095:53:22"},{"expression":{"expression":{"baseExpression":{"expression":{"id":7636,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"8161:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8163:10:22","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"8161:12:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":7639,"indexExpression":{"id":7638,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7615,"src":"8174:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8161:25:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"id":7640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8187:6:22","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12797,"src":"8161:32:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"functionReturnParameters":7620,"id":7641,"nodeType":"Return","src":"8154:39:22"}]},"documentation":{"id":7613,"nodeType":"StructuredDocumentation","src":"7861:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"2b5adc1e","id":7643,"implemented":true,"kind":"function","modifiers":[],"name":"getChallengeSelectedApps","nameLocation":"7900:24:22","nodeType":"FunctionDefinition","parameters":{"id":7616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7615,"mutability":"mutable","name":"challengeId","nameLocation":"7933:11:22","nodeType":"VariableDeclaration","scope":7643,"src":"7925:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7614,"name":"uint256","nodeType":"ElementaryTypeName","src":"7925:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7924:21:22"},"returnParameters":{"id":7620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7619,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7643,"src":"7969:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7617,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7969:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7618,"nodeType":"ArrayTypeName","src":"7969:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"7968:18:22"},"scope":8579,"src":"7891:307:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13673],"body":{"id":7673,"nodeType":"Block","src":"8323:212:22","statements":[{"assignments":[7656],"declarations":[{"constant":false,"id":7656,"mutability":"mutable","name":"$","nameLocation":"8377:1:22","nodeType":"VariableDeclaration","scope":7673,"src":"8329:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7655,"nodeType":"UserDefinedTypeName","pathNode":{"id":7654,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["8329:21:22","8351:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"8329:39:22"},"referencedDeclaration":12643,"src":"8329:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7660,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7657,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"8381:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8403:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"8381:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8381:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8329:96:22"},{"expression":{"arguments":[{"id":7662,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"8454:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7663,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7656,"src":"8467:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8469:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"8467:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7661,"name":"_ensureChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"8431:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":7665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8431:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7666,"nodeType":"ExpressionStatement","src":"8431:53:22"},{"expression":{"expression":{"baseExpression":{"expression":{"id":7667,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7656,"src":"8497:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7668,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8499:10:22","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"8497:12:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":7670,"indexExpression":{"id":7669,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"8510:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8497:25:22","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"id":7671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8523:7:22","memberName":"winners","nodeType":"MemberAccess","referencedDeclaration":12794,"src":"8497:33:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":7651,"id":7672,"nodeType":"Return","src":"8490:40:22"}]},"documentation":{"id":7644,"nodeType":"StructuredDocumentation","src":"8202:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"039ddca9","id":7674,"implemented":true,"kind":"function","modifiers":[],"name":"getChallengeWinners","nameLocation":"8241:19:22","nodeType":"FunctionDefinition","parameters":{"id":7647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7646,"mutability":"mutable","name":"challengeId","nameLocation":"8269:11:22","nodeType":"VariableDeclaration","scope":7674,"src":"8261:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7645,"name":"uint256","nodeType":"ElementaryTypeName","src":"8261:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8260:21:22"},"returnParameters":{"id":7651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7674,"src":"8305:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7648,"name":"address","nodeType":"ElementaryTypeName","src":"8305:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7649,"nodeType":"ArrayTypeName","src":"8305:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"8304:18:22"},"scope":8579,"src":"8232:303:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13684],"body":{"id":7707,"nodeType":"Block","src":"8706:220:22","statements":[{"assignments":[7689],"declarations":[{"constant":false,"id":7689,"mutability":"mutable","name":"$","nameLocation":"8760:1:22","nodeType":"VariableDeclaration","scope":7707,"src":"8712:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7688,"nodeType":"UserDefinedTypeName","pathNode":{"id":7687,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["8712:21:22","8734:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"8712:39:22"},"referencedDeclaration":12643,"src":"8712:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7693,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7690,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"8764:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8786:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"8764:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8764:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8712:96:22"},{"expression":{"arguments":[{"id":7695,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"8837:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7696,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7689,"src":"8850:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7697,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8852:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"8850:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7694,"name":"_ensureChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"8814:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":7698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8814:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7699,"nodeType":"ExpressionStatement","src":"8814:53:22"},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":7700,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7689,"src":"8880:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8882:17:22","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"8880:19:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":7703,"indexExpression":{"id":7702,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"8900:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8880:32:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":7705,"indexExpression":{"id":7704,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7679,"src":"8913:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8880:41:22","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"functionReturnParameters":7684,"id":7706,"nodeType":"Return","src":"8873:48:22"}]},"documentation":{"id":7675,"nodeType":"StructuredDocumentation","src":"8539:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"81363aeb","id":7708,"implemented":true,"kind":"function","modifiers":[],"name":"getParticipantStatus","nameLocation":"8578:20:22","nodeType":"FunctionDefinition","parameters":{"id":7680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7677,"mutability":"mutable","name":"challengeId","nameLocation":"8612:11:22","nodeType":"VariableDeclaration","scope":7708,"src":"8604:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7676,"name":"uint256","nodeType":"ElementaryTypeName","src":"8604:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7679,"mutability":"mutable","name":"account","nameLocation":"8637:7:22","nodeType":"VariableDeclaration","scope":7708,"src":"8629:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7678,"name":"address","nodeType":"ElementaryTypeName","src":"8629:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8598:50:22"},"returnParameters":{"id":7684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7708,"src":"8672:32:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"},"typeName":{"id":7682,"nodeType":"UserDefinedTypeName","pathNode":{"id":7681,"name":"ChallengeTypes.ParticipantStatus","nameLocations":["8672:14:22","8687:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12683,"src":"8672:32:22"},"referencedDeclaration":12683,"src":"8672:32:22","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"visibility":"internal"}],"src":"8671:34:22"},"scope":8579,"src":"8569:357:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13694],"body":{"id":7740,"nodeType":"Block","src":"9057:221:22","statements":[{"assignments":[7722],"declarations":[{"constant":false,"id":7722,"mutability":"mutable","name":"$","nameLocation":"9111:1:22","nodeType":"VariableDeclaration","scope":7740,"src":"9063:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7721,"nodeType":"UserDefinedTypeName","pathNode":{"id":7720,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["9063:21:22","9085:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"9063:39:22"},"referencedDeclaration":12643,"src":"9063:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7726,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7723,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"9115:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9137:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"9115:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9115:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9063:96:22"},{"expression":{"arguments":[{"id":7728,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7711,"src":"9188:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7729,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7722,"src":"9201:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9203:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"9201:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7727,"name":"_ensureChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"9165:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":7731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9165:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7732,"nodeType":"ExpressionStatement","src":"9165:53:22"},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":7733,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7722,"src":"9231:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7734,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9233:18:22","memberName":"invitationEligible","nodeType":"MemberAccess","referencedDeclaration":12594,"src":"9231:20:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":7736,"indexExpression":{"id":7735,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7711,"src":"9252:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9231:33:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7738,"indexExpression":{"id":7737,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"9265:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9231:42:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7717,"id":7739,"nodeType":"Return","src":"9224:49:22"}]},"documentation":{"id":7709,"nodeType":"StructuredDocumentation","src":"8930:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"4a6ff70b","id":7741,"implemented":true,"kind":"function","modifiers":[],"name":"isInvitationEligible","nameLocation":"8969:20:22","nodeType":"FunctionDefinition","parameters":{"id":7714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7711,"mutability":"mutable","name":"challengeId","nameLocation":"8998:11:22","nodeType":"VariableDeclaration","scope":7741,"src":"8990:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7710,"name":"uint256","nodeType":"ElementaryTypeName","src":"8990:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7713,"mutability":"mutable","name":"account","nameLocation":"9019:7:22","nodeType":"VariableDeclaration","scope":7741,"src":"9011:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7712,"name":"address","nodeType":"ElementaryTypeName","src":"9011:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8989:38:22"},"returnParameters":{"id":7717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7741,"src":"9051:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7715,"name":"bool","nodeType":"ElementaryTypeName","src":"9051:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9050:6:22"},"scope":8579,"src":"8960:318:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13704],"body":{"id":7773,"nodeType":"Block","src":"9405:219:22","statements":[{"assignments":[7755],"declarations":[{"constant":false,"id":7755,"mutability":"mutable","name":"$","nameLocation":"9459:1:22","nodeType":"VariableDeclaration","scope":7773,"src":"9411:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":7754,"nodeType":"UserDefinedTypeName","pathNode":{"id":7753,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["9411:21:22","9433:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"9411:39:22"},"referencedDeclaration":12643,"src":"9411:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":7759,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7756,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"9463:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":7757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9485:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"9463:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":7758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9463:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9411:96:22"},{"expression":{"arguments":[{"id":7761,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7744,"src":"9536:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7762,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"9549:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9551:14:22","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"9549:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7760,"name":"_ensureChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"9513:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":7764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9513:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7765,"nodeType":"ExpressionStatement","src":"9513:53:22"},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":7766,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"9579:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":7767,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9581:16:22","memberName":"isSplitWinWinner","nodeType":"MemberAccess","referencedDeclaration":12632,"src":"9579:18:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":7769,"indexExpression":{"id":7768,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7744,"src":"9598:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9579:31:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":7771,"indexExpression":{"id":7770,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7746,"src":"9611:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9579:40:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7750,"id":7772,"nodeType":"Return","src":"9572:47:22"}]},"documentation":{"id":7742,"nodeType":"StructuredDocumentation","src":"9282:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"87d30164","id":7774,"implemented":true,"kind":"function","modifiers":[],"name":"isSplitWinWinner","nameLocation":"9321:16:22","nodeType":"FunctionDefinition","parameters":{"id":7747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7744,"mutability":"mutable","name":"challengeId","nameLocation":"9346:11:22","nodeType":"VariableDeclaration","scope":7774,"src":"9338:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7743,"name":"uint256","nodeType":"ElementaryTypeName","src":"9338:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7746,"mutability":"mutable","name":"account","nameLocation":"9367:7:22","nodeType":"VariableDeclaration","scope":7774,"src":"9359:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7745,"name":"address","nodeType":"ElementaryTypeName","src":"9359:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9337:38:22"},"returnParameters":{"id":7750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7774,"src":"9399:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7748,"name":"bool","nodeType":"ElementaryTypeName","src":"9399:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9398:6:22"},"scope":8579,"src":"9312:312:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13714],"body":{"id":7790,"nodeType":"Block","src":"9763:90:22","statements":[{"expression":{"arguments":[{"id":7786,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7777,"src":"9823:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7787,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7779,"src":"9836:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7784,"name":"ChallengeSettlementLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"9776:24:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeSettlementLogic_$12543_$","typeString":"type(library ChallengeSettlementLogic)"}},"id":7785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9801:21:22","memberName":"getParticipantActions","nodeType":"MemberAccess","referencedDeclaration":12134,"src":"9776:46:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":7788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9776:72:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7783,"id":7789,"nodeType":"Return","src":"9769:79:22"}]},"documentation":{"id":7775,"nodeType":"StructuredDocumentation","src":"9628:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"14cf9077","id":7791,"implemented":true,"kind":"function","modifiers":[],"name":"getParticipantActions","nameLocation":"9667:21:22","nodeType":"FunctionDefinition","parameters":{"id":7780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7777,"mutability":"mutable","name":"challengeId","nameLocation":"9697:11:22","nodeType":"VariableDeclaration","scope":7791,"src":"9689:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7776,"name":"uint256","nodeType":"ElementaryTypeName","src":"9689:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7779,"mutability":"mutable","name":"participant","nameLocation":"9718:11:22","nodeType":"VariableDeclaration","scope":7791,"src":"9710:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7778,"name":"address","nodeType":"ElementaryTypeName","src":"9710:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9688:42:22"},"returnParameters":{"id":7783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7791,"src":"9754:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7781,"name":"uint256","nodeType":"ElementaryTypeName","src":"9754:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9753:9:22"},"scope":8579,"src":"9658:195:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[13723],"body":{"id":7807,"nodeType":"Block","src":"10006:60:22","statements":[{"expression":{"arguments":[{"id":7804,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7795,"src":"10054:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_calldata_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_calldata_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams calldata"}],"expression":{"id":7802,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"10019:18:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":7803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10038:15:22","memberName":"createChallenge","nodeType":"MemberAccess","referencedDeclaration":9091,"src":"10019:34:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_CreateChallengeParams_$12717_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ChallengeTypes.CreateChallengeParams memory) returns (uint256)"}},"id":7805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10019:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7801,"id":7806,"nodeType":"Return","src":"10012:49:22"}]},"documentation":{"id":7792,"nodeType":"StructuredDocumentation","src":"9857:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"4caf6d5f","id":7808,"implemented":true,"kind":"function","modifiers":[{"id":7798,"kind":"modifierInvocation","modifierName":{"id":7797,"name":"nonReentrant","nameLocations":["9975:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"9975:12:22"},"nodeType":"ModifierInvocation","src":"9975:12:22"}],"name":"createChallenge","nameLocation":"9896:15:22","nodeType":"FunctionDefinition","parameters":{"id":7796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7795,"mutability":"mutable","name":"params","nameLocation":"9958:6:22","nodeType":"VariableDeclaration","scope":7808,"src":"9912:52:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_calldata_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"},"typeName":{"id":7794,"nodeType":"UserDefinedTypeName","pathNode":{"id":7793,"name":"ChallengeTypes.CreateChallengeParams","nameLocations":["9912:14:22","9927:21:22"],"nodeType":"IdentifierPath","referencedDeclaration":12717,"src":"9912:36:22"},"referencedDeclaration":12717,"src":"9912:36:22","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_storage_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"}},"visibility":"internal"}],"src":"9911:54:22"},"returnParameters":{"id":7801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7800,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7808,"src":"9997:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7799,"name":"uint256","nodeType":"ElementaryTypeName","src":"9997:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9996:9:22"},"scope":8579,"src":"9887:179:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13732],"body":{"id":7826,"nodeType":"Block","src":"10192:63:22","statements":[{"expression":{"arguments":[{"id":7822,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7811,"src":"10228:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7823,"name":"invitees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7814,"src":"10241:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"id":7819,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"10198:18:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":7821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10217:10:22","memberName":"addInvites","nodeType":"MemberAccess","referencedDeclaration":9147,"src":"10198:29:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256,address[] memory)"}},"id":7824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10198:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7825,"nodeType":"ExpressionStatement","src":"10198:52:22"}]},"documentation":{"id":7809,"nodeType":"StructuredDocumentation","src":"10070:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"262ad80b","id":7827,"implemented":true,"kind":"function","modifiers":[{"id":7817,"kind":"modifierInvocation","modifierName":{"id":7816,"name":"nonReentrant","nameLocations":["10179:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"10179:12:22"},"nodeType":"ModifierInvocation","src":"10179:12:22"}],"name":"addInvites","nameLocation":"10109:10:22","nodeType":"FunctionDefinition","parameters":{"id":7815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7811,"mutability":"mutable","name":"challengeId","nameLocation":"10128:11:22","nodeType":"VariableDeclaration","scope":7827,"src":"10120:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7810,"name":"uint256","nodeType":"ElementaryTypeName","src":"10120:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7814,"mutability":"mutable","name":"invitees","nameLocation":"10160:8:22","nodeType":"VariableDeclaration","scope":7827,"src":"10141:27:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7812,"name":"address","nodeType":"ElementaryTypeName","src":"10141:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7813,"nodeType":"ArrayTypeName","src":"10141:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"10119:50:22"},"returnParameters":{"id":7818,"nodeType":"ParameterList","parameters":[],"src":"10192:0:22"},"scope":8579,"src":"10100:155:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13738],"body":{"id":7841,"nodeType":"Block","src":"10355:56:22","statements":[{"expression":{"arguments":[{"id":7838,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7830,"src":"10394:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7835,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"10361:18:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":7837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10380:13:22","memberName":"joinChallenge","nodeType":"MemberAccess","referencedDeclaration":9326,"src":"10361:32:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10361:45:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7840,"nodeType":"ExpressionStatement","src":"10361:45:22"}]},"documentation":{"id":7828,"nodeType":"StructuredDocumentation","src":"10259:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"e448ee26","id":7842,"implemented":true,"kind":"function","modifiers":[{"id":7833,"kind":"modifierInvocation","modifierName":{"id":7832,"name":"nonReentrant","nameLocations":["10342:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"10342:12:22"},"nodeType":"ModifierInvocation","src":"10342:12:22"}],"name":"joinChallenge","nameLocation":"10298:13:22","nodeType":"FunctionDefinition","parameters":{"id":7831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7830,"mutability":"mutable","name":"challengeId","nameLocation":"10320:11:22","nodeType":"VariableDeclaration","scope":7842,"src":"10312:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7829,"name":"uint256","nodeType":"ElementaryTypeName","src":"10312:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10311:21:22"},"returnParameters":{"id":7834,"nodeType":"ParameterList","parameters":[],"src":"10355:0:22"},"scope":8579,"src":"10289:122:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13744],"body":{"id":7856,"nodeType":"Block","src":"10512:57:22","statements":[{"expression":{"arguments":[{"id":7853,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7845,"src":"10552:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7850,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"10518:18:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":7852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10537:14:22","memberName":"leaveChallenge","nodeType":"MemberAccess","referencedDeclaration":9460,"src":"10518:33:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10518:46:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7855,"nodeType":"ExpressionStatement","src":"10518:46:22"}]},"documentation":{"id":7843,"nodeType":"StructuredDocumentation","src":"10415:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"67fc8c89","id":7857,"implemented":true,"kind":"function","modifiers":[{"id":7848,"kind":"modifierInvocation","modifierName":{"id":7847,"name":"nonReentrant","nameLocations":["10499:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"10499:12:22"},"nodeType":"ModifierInvocation","src":"10499:12:22"}],"name":"leaveChallenge","nameLocation":"10454:14:22","nodeType":"FunctionDefinition","parameters":{"id":7846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7845,"mutability":"mutable","name":"challengeId","nameLocation":"10477:11:22","nodeType":"VariableDeclaration","scope":7857,"src":"10469:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7844,"name":"uint256","nodeType":"ElementaryTypeName","src":"10469:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10468:21:22"},"returnParameters":{"id":7849,"nodeType":"ParameterList","parameters":[],"src":"10512:0:22"},"scope":8579,"src":"10445:124:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13750],"body":{"id":7871,"nodeType":"Block","src":"10672:59:22","statements":[{"expression":{"arguments":[{"id":7868,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7860,"src":"10714:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7865,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"10678:18:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":7867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10697:16:22","memberName":"declineChallenge","nodeType":"MemberAccess","referencedDeclaration":9593,"src":"10678:35:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10678:48:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7870,"nodeType":"ExpressionStatement","src":"10678:48:22"}]},"documentation":{"id":7858,"nodeType":"StructuredDocumentation","src":"10573:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"0012462a","id":7872,"implemented":true,"kind":"function","modifiers":[{"id":7863,"kind":"modifierInvocation","modifierName":{"id":7862,"name":"nonReentrant","nameLocations":["10659:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"10659:12:22"},"nodeType":"ModifierInvocation","src":"10659:12:22"}],"name":"declineChallenge","nameLocation":"10612:16:22","nodeType":"FunctionDefinition","parameters":{"id":7861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7860,"mutability":"mutable","name":"challengeId","nameLocation":"10637:11:22","nodeType":"VariableDeclaration","scope":7872,"src":"10629:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7859,"name":"uint256","nodeType":"ElementaryTypeName","src":"10629:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10628:21:22"},"returnParameters":{"id":7864,"nodeType":"ParameterList","parameters":[],"src":"10672:0:22"},"scope":8579,"src":"10603:128:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13756],"body":{"id":7886,"nodeType":"Block","src":"10833:58:22","statements":[{"expression":{"arguments":[{"id":7883,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7875,"src":"10874:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7880,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"10839:18:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":7882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10858:15:22","memberName":"cancelChallenge","nodeType":"MemberAccess","referencedDeclaration":9639,"src":"10839:34:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10839:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7885,"nodeType":"ExpressionStatement","src":"10839:47:22"}]},"documentation":{"id":7873,"nodeType":"StructuredDocumentation","src":"10735:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"a41483e3","id":7887,"implemented":true,"kind":"function","modifiers":[{"id":7878,"kind":"modifierInvocation","modifierName":{"id":7877,"name":"nonReentrant","nameLocations":["10820:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"10820:12:22"},"nodeType":"ModifierInvocation","src":"10820:12:22"}],"name":"cancelChallenge","nameLocation":"10774:15:22","nodeType":"FunctionDefinition","parameters":{"id":7876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7875,"mutability":"mutable","name":"challengeId","nameLocation":"10798:11:22","nodeType":"VariableDeclaration","scope":7887,"src":"10790:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7874,"name":"uint256","nodeType":"ElementaryTypeName","src":"10790:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10789:21:22"},"returnParameters":{"id":7879,"nodeType":"ParameterList","parameters":[],"src":"10833:0:22"},"scope":8579,"src":"10765:126:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13765],"body":{"id":7906,"nodeType":"Block","src":"11032:95:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":7902,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7890,"src":"11109:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7900,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"11076:18:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":7901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11095:13:22","memberName":"syncChallenge","nodeType":"MemberAccess","referencedDeclaration":9722,"src":"11076:32:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) returns (uint8)"}},"id":7903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11076:45:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":7898,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"11045:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":7899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11060:15:22","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"11045:30:22","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":7904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11045:77:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"functionReturnParameters":7897,"id":7905,"nodeType":"Return","src":"11038:84:22"}]},"documentation":{"id":7888,"nodeType":"StructuredDocumentation","src":"10895:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"b30f0584","id":7907,"implemented":true,"kind":"function","modifiers":[{"id":7893,"kind":"modifierInvocation","modifierName":{"id":7892,"name":"nonReentrant","nameLocations":["10978:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"10978:12:22"},"nodeType":"ModifierInvocation","src":"10978:12:22"}],"name":"syncChallenge","nameLocation":"10934:13:22","nodeType":"FunctionDefinition","parameters":{"id":7891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7890,"mutability":"mutable","name":"challengeId","nameLocation":"10956:11:22","nodeType":"VariableDeclaration","scope":7907,"src":"10948:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7889,"name":"uint256","nodeType":"ElementaryTypeName","src":"10948:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10947:21:22"},"returnParameters":{"id":7897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7907,"src":"11000:30:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"typeName":{"id":7895,"nodeType":"UserDefinedTypeName","pathNode":{"id":7894,"name":"ChallengeTypes.ChallengeStatus","nameLocations":["11000:14:22","11015:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":12673,"src":"11000:30:22"},"referencedDeclaration":12673,"src":"11000:30:22","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"visibility":"internal"}],"src":"10999:32:22"},"scope":8579,"src":"10925:202:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13771],"body":{"id":7921,"nodeType":"Block","src":"11231:66:22","statements":[{"expression":{"arguments":[{"id":7918,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"11280:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7915,"name":"ChallengeSettlementLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"11237:24:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeSettlementLogic_$12543_$","typeString":"type(library ChallengeSettlementLogic)"}},"id":7917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11262:17:22","memberName":"completeChallenge","nodeType":"MemberAccess","referencedDeclaration":11314,"src":"11237:42:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11237:55:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7920,"nodeType":"ExpressionStatement","src":"11237:55:22"}]},"documentation":{"id":7908,"nodeType":"StructuredDocumentation","src":"11131:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"a7817bbc","id":7922,"implemented":true,"kind":"function","modifiers":[{"id":7913,"kind":"modifierInvocation","modifierName":{"id":7912,"name":"nonReentrant","nameLocations":["11218:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"11218:12:22"},"nodeType":"ModifierInvocation","src":"11218:12:22"}],"name":"completeChallenge","nameLocation":"11170:17:22","nodeType":"FunctionDefinition","parameters":{"id":7911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7910,"mutability":"mutable","name":"challengeId","nameLocation":"11196:11:22","nodeType":"VariableDeclaration","scope":7922,"src":"11188:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7909,"name":"uint256","nodeType":"ElementaryTypeName","src":"11188:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11187:21:22"},"returnParameters":{"id":7914,"nodeType":"ParameterList","parameters":[],"src":"11231:0:22"},"scope":8579,"src":"11161:136:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13779],"body":{"id":7937,"nodeType":"Block","src":"11422:76:22","statements":[{"expression":{"arguments":[{"id":7934,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"11481:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7932,"name":"ChallengeSettlementLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"11435:24:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeSettlementLogic_$12543_$","typeString":"type(library ChallengeSettlementLogic)"}},"id":7933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11460:20:22","memberName":"claimChallengePayout","nodeType":"MemberAccess","referencedDeclaration":11474,"src":"11435:45:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":7935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11435:58:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7931,"id":7936,"nodeType":"Return","src":"11428:65:22"}]},"documentation":{"id":7923,"nodeType":"StructuredDocumentation","src":"11301:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"87d6e213","id":7938,"implemented":true,"kind":"function","modifiers":[{"id":7928,"kind":"modifierInvocation","modifierName":{"id":7927,"name":"nonReentrant","nameLocations":["11391:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"11391:12:22"},"nodeType":"ModifierInvocation","src":"11391:12:22"}],"name":"claimChallengePayout","nameLocation":"11340:20:22","nodeType":"FunctionDefinition","parameters":{"id":7926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7925,"mutability":"mutable","name":"challengeId","nameLocation":"11369:11:22","nodeType":"VariableDeclaration","scope":7938,"src":"11361:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7924,"name":"uint256","nodeType":"ElementaryTypeName","src":"11361:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11360:21:22"},"returnParameters":{"id":7931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7938,"src":"11413:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7929,"name":"uint256","nodeType":"ElementaryTypeName","src":"11413:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11412:9:22"},"scope":8579,"src":"11331:167:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13787],"body":{"id":7953,"nodeType":"Block","src":"11621:74:22","statements":[{"expression":{"arguments":[{"id":7950,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7941,"src":"11678:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7948,"name":"ChallengeSettlementLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"11634:24:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeSettlementLogic_$12543_$","typeString":"type(library ChallengeSettlementLogic)"}},"id":7949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11659:18:22","memberName":"claimSplitWinPrize","nodeType":"MemberAccess","referencedDeclaration":11746,"src":"11634:43:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":7951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11634:56:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7947,"id":7952,"nodeType":"Return","src":"11627:63:22"}]},"documentation":{"id":7939,"nodeType":"StructuredDocumentation","src":"11502:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"a0427700","id":7954,"implemented":true,"kind":"function","modifiers":[{"id":7944,"kind":"modifierInvocation","modifierName":{"id":7943,"name":"nonReentrant","nameLocations":["11590:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"11590:12:22"},"nodeType":"ModifierInvocation","src":"11590:12:22"}],"name":"claimSplitWinPrize","nameLocation":"11541:18:22","nodeType":"FunctionDefinition","parameters":{"id":7942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7941,"mutability":"mutable","name":"challengeId","nameLocation":"11568:11:22","nodeType":"VariableDeclaration","scope":7954,"src":"11560:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7940,"name":"uint256","nodeType":"ElementaryTypeName","src":"11560:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11559:21:22"},"returnParameters":{"id":7947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7946,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7954,"src":"11612:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7945,"name":"uint256","nodeType":"ElementaryTypeName","src":"11612:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11611:9:22"},"scope":8579,"src":"11532:163:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13795],"body":{"id":7969,"nodeType":"Block","src":"11826:82:22","statements":[{"expression":{"arguments":[{"id":7966,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7957,"src":"11891:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7964,"name":"ChallengeSettlementLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"11839:24:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeSettlementLogic_$12543_$","typeString":"type(library ChallengeSettlementLogic)"}},"id":7965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11864:26:22","memberName":"claimCreatorSplitWinRefund","nodeType":"MemberAccess","referencedDeclaration":11976,"src":"11839:51:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":7967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11839:64:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7963,"id":7968,"nodeType":"Return","src":"11832:71:22"}]},"documentation":{"id":7955,"nodeType":"StructuredDocumentation","src":"11699:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"cb3e0d2b","id":7970,"implemented":true,"kind":"function","modifiers":[{"id":7960,"kind":"modifierInvocation","modifierName":{"id":7959,"name":"nonReentrant","nameLocations":["11795:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"11795:12:22"},"nodeType":"ModifierInvocation","src":"11795:12:22"}],"name":"claimCreatorSplitWinRefund","nameLocation":"11738:26:22","nodeType":"FunctionDefinition","parameters":{"id":7958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7957,"mutability":"mutable","name":"challengeId","nameLocation":"11773:11:22","nodeType":"VariableDeclaration","scope":7970,"src":"11765:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7956,"name":"uint256","nodeType":"ElementaryTypeName","src":"11765:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11764:21:22"},"returnParameters":{"id":7963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7962,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7970,"src":"11817:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7961,"name":"uint256","nodeType":"ElementaryTypeName","src":"11817:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11816:9:22"},"scope":8579,"src":"11729:179:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13803],"body":{"id":7985,"nodeType":"Block","src":"12033:76:22","statements":[{"expression":{"arguments":[{"id":7982,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7973,"src":"12092:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7980,"name":"ChallengeSettlementLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"12046:24:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeSettlementLogic_$12543_$","typeString":"type(library ChallengeSettlementLogic)"}},"id":7981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12071:20:22","memberName":"claimChallengeRefund","nodeType":"MemberAccess","referencedDeclaration":12109,"src":"12046:45:22","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":7983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12046:58:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7979,"id":7984,"nodeType":"Return","src":"12039:65:22"}]},"documentation":{"id":7971,"nodeType":"StructuredDocumentation","src":"11912:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"b58bd356","id":7986,"implemented":true,"kind":"function","modifiers":[{"id":7976,"kind":"modifierInvocation","modifierName":{"id":7975,"name":"nonReentrant","nameLocations":["12002:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"12002:12:22"},"nodeType":"ModifierInvocation","src":"12002:12:22"}],"name":"claimChallengeRefund","nameLocation":"11951:20:22","nodeType":"FunctionDefinition","parameters":{"id":7974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7973,"mutability":"mutable","name":"challengeId","nameLocation":"11980:11:22","nodeType":"VariableDeclaration","scope":7986,"src":"11972:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7972,"name":"uint256","nodeType":"ElementaryTypeName","src":"11972:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11971:21:22"},"returnParameters":{"id":7979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7978,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7986,"src":"12024:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7977,"name":"uint256","nodeType":"ElementaryTypeName","src":"12024:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12023:9:22"},"scope":8579,"src":"11942:167:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13811],"body":{"id":8063,"nodeType":"Block","src":"12247:458:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7999,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7989,"src":"12257:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12271:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12263:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8000,"name":"address","nodeType":"ElementaryTypeName","src":"12263:7:22","typeDescriptions":{}}},"id":8003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12263:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12257:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8008,"nodeType":"IfStatement","src":"12253:42:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8005,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13138,"src":"12282:11:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12282:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8007,"nodeType":"RevertStatement","src":"12275:20:22"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8009,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7991,"src":"12305:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12315:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12305:11:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8015,"nodeType":"IfStatement","src":"12301:39:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8012,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13140,"src":"12325:13:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12325:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8014,"nodeType":"RevertStatement","src":"12318:22:22"}},{"assignments":[8020],"declarations":[{"constant":false,"id":8020,"mutability":"mutable","name":"$","nameLocation":"12395:1:22","nodeType":"VariableDeclaration","scope":8063,"src":"12347:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8019,"nodeType":"UserDefinedTypeName","pathNode":{"id":8018,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["12347:21:22","12369:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"12347:39:22"},"referencedDeclaration":12643,"src":"12347:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8024,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8021,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"12399:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12421:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"12399:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12399:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12347:96:22"},{"assignments":[8026],"declarations":[{"constant":false,"id":8026,"mutability":"mutable","name":"available","nameLocation":"12457:9:22","nodeType":"VariableDeclaration","scope":8063,"src":"12449:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8025,"name":"uint256","nodeType":"ElementaryTypeName","src":"12449:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8035,"initialValue":{"arguments":[{"arguments":[{"id":8032,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12494:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_B3TRChallenges_$8579","typeString":"contract B3TRChallenges"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_B3TRChallenges_$8579","typeString":"contract B3TRChallenges"}],"id":8031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12486:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8030,"name":"address","nodeType":"ElementaryTypeName","src":"12486:7:22","typeDescriptions":{}}},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12486:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":8027,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"12469:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8028,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12471:4:22","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"12469:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":8029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12476:9:22","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":13010,"src":"12469:16:22","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12469:31:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12449:51:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8036,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7991,"src":"12510:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8037,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"12519:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12510:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8044,"nodeType":"IfStatement","src":"12506:79:22","trueBody":{"errorCall":{"arguments":[{"id":8040,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"12567:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8041,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7991,"src":"12578:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8039,"name":"InsufficientWithdrawableFunds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13325,"src":"12537:29:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":8042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12537:48:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8043,"nodeType":"RevertStatement","src":"12530:55:22"}},{"condition":{"id":8051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12596:28:22","subExpression":{"arguments":[{"id":8048,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7989,"src":"12613:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8049,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7991,"src":"12617:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":8045,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"12597:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12599:4:22","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"12597:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":8047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12604:8:22","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13116,"src":"12597:15:22","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12597:27:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8055,"nodeType":"IfStatement","src":"12592:57:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8052,"name":"TransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13319,"src":"12633:14:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12633:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8054,"nodeType":"RevertStatement","src":"12626:23:22"}},{"eventCall":{"arguments":[{"expression":{"id":8057,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12677:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12681:6:22","memberName":"sender","nodeType":"MemberAccess","src":"12677:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8059,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7989,"src":"12689:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8060,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7991,"src":"12693:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8056,"name":"AdminWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13423,"src":"12661:15:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12661:39:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8062,"nodeType":"EmitStatement","src":"12656:44:22"}]},"documentation":{"id":7987,"nodeType":"StructuredDocumentation","src":"12113:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"f3fef3a3","id":8064,"implemented":true,"kind":"function","modifiers":[{"id":7994,"kind":"modifierInvocation","modifierName":{"id":7993,"name":"nonReentrant","nameLocations":["12198:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"12198:12:22"},"nodeType":"ModifierInvocation","src":"12198:12:22"},{"arguments":[{"id":7996,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"12227:18:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":7997,"kind":"modifierInvocation","modifierName":{"id":7995,"name":"onlyRoleOrAdmin","nameLocations":["12211:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":7306,"src":"12211:15:22"},"nodeType":"ModifierInvocation","src":"12211:35:22"}],"name":"withdraw","nameLocation":"12152:8:22","nodeType":"FunctionDefinition","parameters":{"id":7992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7989,"mutability":"mutable","name":"to","nameLocation":"12169:2:22","nodeType":"VariableDeclaration","scope":8064,"src":"12161:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7988,"name":"address","nodeType":"ElementaryTypeName","src":"12161:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7991,"mutability":"mutable","name":"amount","nameLocation":"12181:6:22","nodeType":"VariableDeclaration","scope":8064,"src":"12173:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7990,"name":"uint256","nodeType":"ElementaryTypeName","src":"12173:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12160:28:22"},"returnParameters":{"id":7998,"nodeType":"ParameterList","parameters":[],"src":"12247:0:22"},"scope":8579,"src":"12143:562:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13817],"body":{"id":8079,"nodeType":"Block","src":"12853:38:22","statements":[{"expression":{"arguments":[{"id":8076,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8067,"src":"12875:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8075,"name":"_setB3TRAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8322,"src":"12859:15:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12859:27:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8078,"nodeType":"ExpressionStatement","src":"12859:27:22"}]},"documentation":{"id":8065,"nodeType":"StructuredDocumentation","src":"12709:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"47b0b33e","id":8080,"implemented":true,"kind":"function","modifiers":[{"id":8070,"kind":"modifierInvocation","modifierName":{"id":8069,"name":"nonReentrant","nameLocations":["12792:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"12792:12:22"},"nodeType":"ModifierInvocation","src":"12792:12:22"},{"arguments":[{"id":8072,"name":"CONTRACTS_ADDRESS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7079,"src":"12821:30:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8073,"kind":"modifierInvocation","modifierName":{"id":8071,"name":"onlyRoleOrAdmin","nameLocations":["12805:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":7306,"src":"12805:15:22"},"nodeType":"ModifierInvocation","src":"12805:47:22"}],"name":"setB3TRAddress","nameLocation":"12748:14:22","nodeType":"FunctionDefinition","parameters":{"id":8068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8067,"mutability":"mutable","name":"newAddress","nameLocation":"12771:10:22","nodeType":"VariableDeclaration","scope":8080,"src":"12763:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8066,"name":"address","nodeType":"ElementaryTypeName","src":"12763:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12762:20:22"},"returnParameters":{"id":8074,"nodeType":"ParameterList","parameters":[],"src":"12853:0:22"},"scope":8579,"src":"12739:152:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13823],"body":{"id":8095,"nodeType":"Block","src":"13051:50:22","statements":[{"expression":{"arguments":[{"id":8092,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8083,"src":"13085:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8091,"name":"_setVeBetterPassportAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"13057:27:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13057:39:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8094,"nodeType":"ExpressionStatement","src":"13057:39:22"}]},"documentation":{"id":8081,"nodeType":"StructuredDocumentation","src":"12895:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"3800ff4d","id":8096,"implemented":true,"kind":"function","modifiers":[{"id":8086,"kind":"modifierInvocation","modifierName":{"id":8085,"name":"nonReentrant","nameLocations":["12990:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"12990:12:22"},"nodeType":"ModifierInvocation","src":"12990:12:22"},{"arguments":[{"id":8088,"name":"CONTRACTS_ADDRESS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7079,"src":"13019:30:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8089,"kind":"modifierInvocation","modifierName":{"id":8087,"name":"onlyRoleOrAdmin","nameLocations":["13003:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":7306,"src":"13003:15:22"},"nodeType":"ModifierInvocation","src":"13003:47:22"}],"name":"setVeBetterPassportAddress","nameLocation":"12934:26:22","nodeType":"FunctionDefinition","parameters":{"id":8084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8083,"mutability":"mutable","name":"newAddress","nameLocation":"12969:10:22","nodeType":"VariableDeclaration","scope":8096,"src":"12961:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8082,"name":"address","nodeType":"ElementaryTypeName","src":"12961:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12960:20:22"},"returnParameters":{"id":8090,"nodeType":"ParameterList","parameters":[],"src":"13051:0:22"},"scope":8579,"src":"12925:176:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13829],"body":{"id":8111,"nodeType":"Block","src":"13262:51:22","statements":[{"expression":{"arguments":[{"id":8108,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8099,"src":"13297:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8107,"name":"_setXAllocationVotingAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8414,"src":"13268:28:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13268:40:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8110,"nodeType":"ExpressionStatement","src":"13268:40:22"}]},"documentation":{"id":8097,"nodeType":"StructuredDocumentation","src":"13105:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"3bb18a76","id":8112,"implemented":true,"kind":"function","modifiers":[{"id":8102,"kind":"modifierInvocation","modifierName":{"id":8101,"name":"nonReentrant","nameLocations":["13201:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"13201:12:22"},"nodeType":"ModifierInvocation","src":"13201:12:22"},{"arguments":[{"id":8104,"name":"CONTRACTS_ADDRESS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7079,"src":"13230:30:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8105,"kind":"modifierInvocation","modifierName":{"id":8103,"name":"onlyRoleOrAdmin","nameLocations":["13214:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":7306,"src":"13214:15:22"},"nodeType":"ModifierInvocation","src":"13214:47:22"}],"name":"setXAllocationVotingAddress","nameLocation":"13144:27:22","nodeType":"FunctionDefinition","parameters":{"id":8100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8099,"mutability":"mutable","name":"newAddress","nameLocation":"13180:10:22","nodeType":"VariableDeclaration","scope":8112,"src":"13172:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8098,"name":"address","nodeType":"ElementaryTypeName","src":"13172:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13171:20:22"},"returnParameters":{"id":8106,"nodeType":"ParameterList","parameters":[],"src":"13262:0:22"},"scope":8579,"src":"13135:178:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13835],"body":{"id":8127,"nodeType":"Block","src":"13467:44:22","statements":[{"expression":{"arguments":[{"id":8124,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8115,"src":"13495:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8123,"name":"_setX2EarnAppsAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8460,"src":"13473:21:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13473:33:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8126,"nodeType":"ExpressionStatement","src":"13473:33:22"}]},"documentation":{"id":8113,"nodeType":"StructuredDocumentation","src":"13317:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"c048f6c9","id":8128,"implemented":true,"kind":"function","modifiers":[{"id":8118,"kind":"modifierInvocation","modifierName":{"id":8117,"name":"nonReentrant","nameLocations":["13406:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"13406:12:22"},"nodeType":"ModifierInvocation","src":"13406:12:22"},{"arguments":[{"id":8120,"name":"CONTRACTS_ADDRESS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7079,"src":"13435:30:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8121,"kind":"modifierInvocation","modifierName":{"id":8119,"name":"onlyRoleOrAdmin","nameLocations":["13419:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":7306,"src":"13419:15:22"},"nodeType":"ModifierInvocation","src":"13419:47:22"}],"name":"setX2EarnAppsAddress","nameLocation":"13356:20:22","nodeType":"FunctionDefinition","parameters":{"id":8116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8115,"mutability":"mutable","name":"newAddress","nameLocation":"13385:10:22","nodeType":"VariableDeclaration","scope":8128,"src":"13377:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8114,"name":"address","nodeType":"ElementaryTypeName","src":"13377:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13376:20:22"},"returnParameters":{"id":8122,"nodeType":"ParameterList","parameters":[],"src":"13467:0:22"},"scope":8579,"src":"13347:164:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13841],"body":{"id":8171,"nodeType":"Block","src":"13657:300:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8139,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8131,"src":"13667:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13679:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13667:13:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8145,"nodeType":"IfStatement","src":"13663:41:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8142,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13140,"src":"13689:13:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13689:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8144,"nodeType":"RevertStatement","src":"13682:22:22"}},{"assignments":[8150],"declarations":[{"constant":false,"id":8150,"mutability":"mutable","name":"$","nameLocation":"13759:1:22","nodeType":"VariableDeclaration","scope":8171,"src":"13711:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8149,"nodeType":"UserDefinedTypeName","pathNode":{"id":8148,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["13711:21:22","13733:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"13711:39:22"},"referencedDeclaration":12643,"src":"13711:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8154,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8151,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"13763:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13785:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"13763:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13763:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"13711:96:22"},{"assignments":[8156],"declarations":[{"constant":false,"id":8156,"mutability":"mutable","name":"oldValue","nameLocation":"13821:8:22","nodeType":"VariableDeclaration","scope":8171,"src":"13813:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8155,"name":"uint256","nodeType":"ElementaryTypeName","src":"13813:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8159,"initialValue":{"expression":{"id":8157,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8150,"src":"13832:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13834:20:22","memberName":"maxChallengeDuration","nodeType":"MemberAccess","referencedDeclaration":12570,"src":"13832:22:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13813:41:22"},{"expression":{"id":8164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8160,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8150,"src":"13860:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13862:20:22","memberName":"maxChallengeDuration","nodeType":"MemberAccess","referencedDeclaration":12570,"src":"13860:22:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8163,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8131,"src":"13885:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13860:33:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8165,"nodeType":"ExpressionStatement","src":"13860:33:22"},{"eventCall":{"arguments":[{"id":8167,"name":"oldValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8156,"src":"13933:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8168,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8131,"src":"13943:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8166,"name":"MaxChallengeDurationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13393,"src":"13905:27:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13905:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8170,"nodeType":"EmitStatement","src":"13900:52:22"}]},"documentation":{"id":8129,"nodeType":"StructuredDocumentation","src":"13515:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"a934718c","id":8172,"implemented":true,"kind":"function","modifiers":[{"id":8134,"kind":"modifierInvocation","modifierName":{"id":8133,"name":"nonReentrant","nameLocations":["13605:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"13605:12:22"},"nodeType":"ModifierInvocation","src":"13605:12:22"},{"arguments":[{"id":8136,"name":"SETTINGS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7084,"src":"13634:21:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8137,"kind":"modifierInvocation","modifierName":{"id":8135,"name":"onlyRoleOrAdmin","nameLocations":["13618:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":7306,"src":"13618:15:22"},"nodeType":"ModifierInvocation","src":"13618:38:22"}],"name":"setMaxChallengeDuration","nameLocation":"13554:23:22","nodeType":"FunctionDefinition","parameters":{"id":8132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8131,"mutability":"mutable","name":"newValue","nameLocation":"13586:8:22","nodeType":"VariableDeclaration","scope":8172,"src":"13578:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8130,"name":"uint256","nodeType":"ElementaryTypeName","src":"13578:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13577:18:22"},"returnParameters":{"id":8138,"nodeType":"ParameterList","parameters":[],"src":"13657:0:22"},"scope":8579,"src":"13545:412:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13847],"body":{"id":8215,"nodeType":"Block","src":"14098:285:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8183,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"14108:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14120:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14108:13:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8189,"nodeType":"IfStatement","src":"14104:41:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8186,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13140,"src":"14130:13:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14130:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8188,"nodeType":"RevertStatement","src":"14123:22:22"}},{"assignments":[8194],"declarations":[{"constant":false,"id":8194,"mutability":"mutable","name":"$","nameLocation":"14200:1:22","nodeType":"VariableDeclaration","scope":8215,"src":"14152:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8193,"nodeType":"UserDefinedTypeName","pathNode":{"id":8192,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["14152:21:22","14174:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"14152:39:22"},"referencedDeclaration":12643,"src":"14152:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8198,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8195,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"14204:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14226:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"14204:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14204:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14152:96:22"},{"assignments":[8200],"declarations":[{"constant":false,"id":8200,"mutability":"mutable","name":"oldValue","nameLocation":"14262:8:22","nodeType":"VariableDeclaration","scope":8215,"src":"14254:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8199,"name":"uint256","nodeType":"ElementaryTypeName","src":"14254:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8203,"initialValue":{"expression":{"id":8201,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8194,"src":"14273:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14275:15:22","memberName":"maxSelectedApps","nodeType":"MemberAccess","referencedDeclaration":12572,"src":"14273:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14254:36:22"},{"expression":{"id":8208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8204,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8194,"src":"14296:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14298:15:22","memberName":"maxSelectedApps","nodeType":"MemberAccess","referencedDeclaration":12572,"src":"14296:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8207,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"14316:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14296:28:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8209,"nodeType":"ExpressionStatement","src":"14296:28:22"},{"eventCall":{"arguments":[{"id":8211,"name":"oldValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8200,"src":"14359:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8212,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"14369:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8210,"name":"MaxSelectedAppsUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13400,"src":"14336:22:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14336:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8214,"nodeType":"EmitStatement","src":"14331:47:22"}]},"documentation":{"id":8173,"nodeType":"StructuredDocumentation","src":"13961:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"21c688fa","id":8216,"implemented":true,"kind":"function","modifiers":[{"id":8178,"kind":"modifierInvocation","modifierName":{"id":8177,"name":"nonReentrant","nameLocations":["14046:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"14046:12:22"},"nodeType":"ModifierInvocation","src":"14046:12:22"},{"arguments":[{"id":8180,"name":"SETTINGS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7084,"src":"14075:21:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8181,"kind":"modifierInvocation","modifierName":{"id":8179,"name":"onlyRoleOrAdmin","nameLocations":["14059:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":7306,"src":"14059:15:22"},"nodeType":"ModifierInvocation","src":"14059:38:22"}],"name":"setMaxSelectedApps","nameLocation":"14000:18:22","nodeType":"FunctionDefinition","parameters":{"id":8176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8175,"mutability":"mutable","name":"newValue","nameLocation":"14027:8:22","nodeType":"VariableDeclaration","scope":8216,"src":"14019:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8174,"name":"uint256","nodeType":"ElementaryTypeName","src":"14019:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14018:18:22"},"returnParameters":{"id":8182,"nodeType":"ParameterList","parameters":[],"src":"14098:0:22"},"scope":8579,"src":"13991:392:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13853],"body":{"id":8259,"nodeType":"Block","src":"14524:285:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8227,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8219,"src":"14534:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14546:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14534:13:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8233,"nodeType":"IfStatement","src":"14530:41:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8230,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13140,"src":"14556:13:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14556:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8232,"nodeType":"RevertStatement","src":"14549:22:22"}},{"assignments":[8238],"declarations":[{"constant":false,"id":8238,"mutability":"mutable","name":"$","nameLocation":"14626:1:22","nodeType":"VariableDeclaration","scope":8259,"src":"14578:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8237,"nodeType":"UserDefinedTypeName","pathNode":{"id":8236,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["14578:21:22","14600:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"14578:39:22"},"referencedDeclaration":12643,"src":"14578:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8242,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8239,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"14630:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14652:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"14630:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14630:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14578:96:22"},{"assignments":[8244],"declarations":[{"constant":false,"id":8244,"mutability":"mutable","name":"oldValue","nameLocation":"14688:8:22","nodeType":"VariableDeclaration","scope":8259,"src":"14680:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8243,"name":"uint256","nodeType":"ElementaryTypeName","src":"14680:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8247,"initialValue":{"expression":{"id":8245,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8238,"src":"14699:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8246,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14701:15:22","memberName":"maxParticipants","nodeType":"MemberAccess","referencedDeclaration":12576,"src":"14699:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14680:36:22"},{"expression":{"id":8252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8248,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8238,"src":"14722:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14724:15:22","memberName":"maxParticipants","nodeType":"MemberAccess","referencedDeclaration":12576,"src":"14722:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8251,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8219,"src":"14742:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14722:28:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8253,"nodeType":"ExpressionStatement","src":"14722:28:22"},{"eventCall":{"arguments":[{"id":8255,"name":"oldValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8244,"src":"14785:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8256,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8219,"src":"14795:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8254,"name":"MaxParticipantsUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13407,"src":"14762:22:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14762:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8258,"nodeType":"EmitStatement","src":"14757:47:22"}]},"documentation":{"id":8217,"nodeType":"StructuredDocumentation","src":"14387:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"2bf7299b","id":8260,"implemented":true,"kind":"function","modifiers":[{"id":8222,"kind":"modifierInvocation","modifierName":{"id":8221,"name":"nonReentrant","nameLocations":["14472:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"14472:12:22"},"nodeType":"ModifierInvocation","src":"14472:12:22"},{"arguments":[{"id":8224,"name":"SETTINGS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7084,"src":"14501:21:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8225,"kind":"modifierInvocation","modifierName":{"id":8223,"name":"onlyRoleOrAdmin","nameLocations":["14485:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":7306,"src":"14485:15:22"},"nodeType":"ModifierInvocation","src":"14485:38:22"}],"name":"setMaxParticipants","nameLocation":"14426:18:22","nodeType":"FunctionDefinition","parameters":{"id":8220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8219,"mutability":"mutable","name":"newValue","nameLocation":"14453:8:22","nodeType":"VariableDeclaration","scope":8260,"src":"14445:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8218,"name":"uint256","nodeType":"ElementaryTypeName","src":"14445:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14444:18:22"},"returnParameters":{"id":8226,"nodeType":"ParameterList","parameters":[],"src":"14524:0:22"},"scope":8579,"src":"14417:392:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13859],"body":{"id":8275,"nodeType":"Block","src":"14947:37:22","statements":[{"expression":{"arguments":[{"id":8272,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8263,"src":"14970:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8271,"name":"_setMinBetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8498,"src":"14953:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":8273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14953:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8274,"nodeType":"ExpressionStatement","src":"14953:26:22"}]},"documentation":{"id":8261,"nodeType":"StructuredDocumentation","src":"14813:27:22","text":"@inheritdoc IChallenges"},"functionSelector":"6c188593","id":8276,"implemented":true,"kind":"function","modifiers":[{"id":8266,"kind":"modifierInvocation","modifierName":{"id":8265,"name":"nonReentrant","nameLocations":["14895:12:22"],"nodeType":"IdentifierPath","referencedDeclaration":913,"src":"14895:12:22"},"nodeType":"ModifierInvocation","src":"14895:12:22"},{"arguments":[{"id":8268,"name":"SETTINGS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7084,"src":"14924:21:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8269,"kind":"modifierInvocation","modifierName":{"id":8267,"name":"onlyRoleOrAdmin","nameLocations":["14908:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":7306,"src":"14908:15:22"},"nodeType":"ModifierInvocation","src":"14908:38:22"}],"name":"setMinBetAmount","nameLocation":"14852:15:22","nodeType":"FunctionDefinition","parameters":{"id":8264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8263,"mutability":"mutable","name":"newValue","nameLocation":"14876:8:22","nodeType":"VariableDeclaration","scope":8276,"src":"14868:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8262,"name":"uint256","nodeType":"ElementaryTypeName","src":"14868:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14867:18:22"},"returnParameters":{"id":8270,"nodeType":"ParameterList","parameters":[],"src":"14947:0:22"},"scope":8579,"src":"14843:141:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8321,"nodeType":"Block","src":"15041:292:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8281,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"15051:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15073:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15065:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8282,"name":"address","nodeType":"ElementaryTypeName","src":"15065:7:22","typeDescriptions":{}}},"id":8285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15065:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15051:24:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8290,"nodeType":"IfStatement","src":"15047:50:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8287,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13138,"src":"15084:11:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15084:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8289,"nodeType":"RevertStatement","src":"15077:20:22"}},{"assignments":[8295],"declarations":[{"constant":false,"id":8295,"mutability":"mutable","name":"$","nameLocation":"15152:1:22","nodeType":"VariableDeclaration","scope":8321,"src":"15104:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8294,"nodeType":"UserDefinedTypeName","pathNode":{"id":8293,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["15104:21:22","15126:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"15104:39:22"},"referencedDeclaration":12643,"src":"15104:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8299,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8296,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"15156:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15178:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"15156:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15156:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15104:96:22"},{"assignments":[8301],"declarations":[{"constant":false,"id":8301,"mutability":"mutable","name":"oldAddress","nameLocation":"15214:10:22","nodeType":"VariableDeclaration","scope":8321,"src":"15206:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8300,"name":"address","nodeType":"ElementaryTypeName","src":"15206:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8307,"initialValue":{"arguments":[{"expression":{"id":8304,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"15235:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15237:4:22","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"15235:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}],"id":8303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15227:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8302,"name":"address","nodeType":"ElementaryTypeName","src":"15227:7:22","typeDescriptions":{}}},"id":8306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15227:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15206:36:22"},{"expression":{"id":8314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8308,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"15248:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15250:4:22","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"15248:6:22","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8312,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"15263:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8311,"name":"IB3TR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"15257:5:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IB3TR_$13131_$","typeString":"type(contract IB3TR)"}},"id":8313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15257:17:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"src":"15248:26:22","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":8315,"nodeType":"ExpressionStatement","src":"15248:26:22"},{"eventCall":{"arguments":[{"id":8317,"name":"oldAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8301,"src":"15305:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8318,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"15317:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8316,"name":"B3TRAddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13365,"src":"15286:18:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15286:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8320,"nodeType":"EmitStatement","src":"15281:47:22"}]},"id":8322,"implemented":true,"kind":"function","modifiers":[],"name":"_setB3TRAddress","nameLocation":"14997:15:22","nodeType":"FunctionDefinition","parameters":{"id":8279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8278,"mutability":"mutable","name":"newAddress","nameLocation":"15021:10:22","nodeType":"VariableDeclaration","scope":8322,"src":"15013:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8277,"name":"address","nodeType":"ElementaryTypeName","src":"15013:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15012:20:22"},"returnParameters":{"id":8280,"nodeType":"ParameterList","parameters":[],"src":"15041:0:22"},"scope":8579,"src":"14988:345:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8367,"nodeType":"Block","src":"15402:340:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8327,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8324,"src":"15412:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15434:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15426:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8328,"name":"address","nodeType":"ElementaryTypeName","src":"15426:7:22","typeDescriptions":{}}},"id":8331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15426:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15412:24:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8336,"nodeType":"IfStatement","src":"15408:50:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8333,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13138,"src":"15445:11:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15445:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8335,"nodeType":"RevertStatement","src":"15438:20:22"}},{"assignments":[8341],"declarations":[{"constant":false,"id":8341,"mutability":"mutable","name":"$","nameLocation":"15513:1:22","nodeType":"VariableDeclaration","scope":8367,"src":"15465:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8340,"nodeType":"UserDefinedTypeName","pathNode":{"id":8339,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["15465:21:22","15487:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"15465:39:22"},"referencedDeclaration":12643,"src":"15465:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8345,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8342,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"15517:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15539:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"15517:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15517:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15465:96:22"},{"assignments":[8347],"declarations":[{"constant":false,"id":8347,"mutability":"mutable","name":"oldAddress","nameLocation":"15575:10:22","nodeType":"VariableDeclaration","scope":8367,"src":"15567:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8346,"name":"address","nodeType":"ElementaryTypeName","src":"15567:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8353,"initialValue":{"arguments":[{"expression":{"id":8350,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8341,"src":"15596:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15598:16:22","memberName":"veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":12562,"src":"15596:18:22","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}],"id":8349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15588:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8348,"name":"address","nodeType":"ElementaryTypeName","src":"15588:7:22","typeDescriptions":{}}},"id":8352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15588:27:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15567:48:22"},{"expression":{"id":8360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8354,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8341,"src":"15621:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15623:16:22","memberName":"veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":12562,"src":"15621:18:22","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8358,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8324,"src":"15660:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8357,"name":"IVeBetterPassport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"15642:17:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVeBetterPassport_$15484_$","typeString":"type(contract IVeBetterPassport)"}},"id":8359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15642:29:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"src":"15621:50:22","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":8361,"nodeType":"ExpressionStatement","src":"15621:50:22"},{"eventCall":{"arguments":[{"id":8363,"name":"oldAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8347,"src":"15714:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8364,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8324,"src":"15726:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8362,"name":"VeBetterPassportAddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13372,"src":"15683:30:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15683:54:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8366,"nodeType":"EmitStatement","src":"15678:59:22"}]},"id":8368,"implemented":true,"kind":"function","modifiers":[],"name":"_setVeBetterPassportAddress","nameLocation":"15346:27:22","nodeType":"FunctionDefinition","parameters":{"id":8325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8324,"mutability":"mutable","name":"newAddress","nameLocation":"15382:10:22","nodeType":"VariableDeclaration","scope":8368,"src":"15374:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8323,"name":"address","nodeType":"ElementaryTypeName","src":"15374:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15373:20:22"},"returnParameters":{"id":8326,"nodeType":"ParameterList","parameters":[],"src":"15402:0:22"},"scope":8579,"src":"15337:405:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8413,"nodeType":"Block","src":"15812:352:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8373,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"15822:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15844:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15836:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8374,"name":"address","nodeType":"ElementaryTypeName","src":"15836:7:22","typeDescriptions":{}}},"id":8377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15836:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15822:24:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8382,"nodeType":"IfStatement","src":"15818:50:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8379,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13138,"src":"15855:11:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15855:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8381,"nodeType":"RevertStatement","src":"15848:20:22"}},{"assignments":[8387],"declarations":[{"constant":false,"id":8387,"mutability":"mutable","name":"$","nameLocation":"15923:1:22","nodeType":"VariableDeclaration","scope":8413,"src":"15875:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8386,"nodeType":"UserDefinedTypeName","pathNode":{"id":8385,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["15875:21:22","15897:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"15875:39:22"},"referencedDeclaration":12643,"src":"15875:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8391,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8388,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"15927:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15949:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"15927:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15927:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15875:96:22"},{"assignments":[8393],"declarations":[{"constant":false,"id":8393,"mutability":"mutable","name":"oldAddress","nameLocation":"15985:10:22","nodeType":"VariableDeclaration","scope":8413,"src":"15977:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8392,"name":"address","nodeType":"ElementaryTypeName","src":"15977:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8399,"initialValue":{"arguments":[{"expression":{"id":8396,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8387,"src":"16006:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16008:17:22","memberName":"xAllocationVoting","nodeType":"MemberAccess","referencedDeclaration":12565,"src":"16006:19:22","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}],"id":8395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15998:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8394,"name":"address","nodeType":"ElementaryTypeName","src":"15998:7:22","typeDescriptions":{}}},"id":8398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15998:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15977:49:22"},{"expression":{"id":8406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8400,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8387,"src":"16032:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8402,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16034:17:22","memberName":"xAllocationVoting","nodeType":"MemberAccess","referencedDeclaration":12565,"src":"16032:19:22","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8404,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"16081:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8403,"name":"IXAllocationVotingGovernor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17346,"src":"16054:26:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IXAllocationVotingGovernor_$17346_$","typeString":"type(contract IXAllocationVotingGovernor)"}},"id":8405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:38:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"src":"16032:60:22","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":8407,"nodeType":"ExpressionStatement","src":"16032:60:22"},{"eventCall":{"arguments":[{"id":8409,"name":"oldAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8393,"src":"16136:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8410,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"16148:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8408,"name":"XAllocationVotingAddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13379,"src":"16104:31:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16104:55:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8412,"nodeType":"EmitStatement","src":"16099:60:22"}]},"id":8414,"implemented":true,"kind":"function","modifiers":[],"name":"_setXAllocationVotingAddress","nameLocation":"15755:28:22","nodeType":"FunctionDefinition","parameters":{"id":8371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8370,"mutability":"mutable","name":"newAddress","nameLocation":"15792:10:22","nodeType":"VariableDeclaration","scope":8414,"src":"15784:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8369,"name":"address","nodeType":"ElementaryTypeName","src":"15784:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15783:20:22"},"returnParameters":{"id":8372,"nodeType":"ParameterList","parameters":[],"src":"15812:0:22"},"scope":8579,"src":"15746:418:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8459,"nodeType":"Block","src":"16227:316:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8419,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8416,"src":"16237:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16259:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16251:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8420,"name":"address","nodeType":"ElementaryTypeName","src":"16251:7:22","typeDescriptions":{}}},"id":8423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16251:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16237:24:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8428,"nodeType":"IfStatement","src":"16233:50:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8425,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13138,"src":"16270:11:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16270:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8427,"nodeType":"RevertStatement","src":"16263:20:22"}},{"assignments":[8433],"declarations":[{"constant":false,"id":8433,"mutability":"mutable","name":"$","nameLocation":"16338:1:22","nodeType":"VariableDeclaration","scope":8459,"src":"16290:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8432,"nodeType":"UserDefinedTypeName","pathNode":{"id":8431,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["16290:21:22","16312:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"16290:39:22"},"referencedDeclaration":12643,"src":"16290:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8437,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8434,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"16342:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16364:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"16342:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16342:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16290:96:22"},{"assignments":[8439],"declarations":[{"constant":false,"id":8439,"mutability":"mutable","name":"oldAddress","nameLocation":"16400:10:22","nodeType":"VariableDeclaration","scope":8459,"src":"16392:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8438,"name":"address","nodeType":"ElementaryTypeName","src":"16392:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8445,"initialValue":{"arguments":[{"expression":{"id":8442,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"16421:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16423:10:22","memberName":"x2EarnApps","nodeType":"MemberAccess","referencedDeclaration":12568,"src":"16421:12:22","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"}],"id":8441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16413:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8440,"name":"address","nodeType":"ElementaryTypeName","src":"16413:7:22","typeDescriptions":{}}},"id":8444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16413:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16392:42:22"},{"expression":{"id":8452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8446,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"16440:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16442:10:22","memberName":"x2EarnApps","nodeType":"MemberAccess","referencedDeclaration":12568,"src":"16440:12:22","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8450,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8416,"src":"16467:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8449,"name":"IX2EarnApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16381,"src":"16455:11:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IX2EarnApps_$16381_$","typeString":"type(contract IX2EarnApps)"}},"id":8451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16455:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"}},"src":"16440:38:22","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"}},"id":8453,"nodeType":"ExpressionStatement","src":"16440:38:22"},{"eventCall":{"arguments":[{"id":8455,"name":"oldAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8439,"src":"16515:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8456,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8416,"src":"16527:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8454,"name":"X2EarnAppsAddressUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13386,"src":"16490:24:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16490:48:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8458,"nodeType":"EmitStatement","src":"16485:53:22"}]},"id":8460,"implemented":true,"kind":"function","modifiers":[],"name":"_setX2EarnAppsAddress","nameLocation":"16177:21:22","nodeType":"FunctionDefinition","parameters":{"id":8417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8416,"mutability":"mutable","name":"newAddress","nameLocation":"16207:10:22","nodeType":"VariableDeclaration","scope":8460,"src":"16199:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8415,"name":"address","nodeType":"ElementaryTypeName","src":"16199:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16198:20:22"},"returnParameters":{"id":8418,"nodeType":"ParameterList","parameters":[],"src":"16227:0:22"},"scope":8579,"src":"16168:375:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8497,"nodeType":"Block","src":"16599:276:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8465,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8462,"src":"16609:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16621:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16609:13:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8471,"nodeType":"IfStatement","src":"16605:41:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8468,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13140,"src":"16631:13:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16631:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8470,"nodeType":"RevertStatement","src":"16624:22:22"}},{"assignments":[8476],"declarations":[{"constant":false,"id":8476,"mutability":"mutable","name":"$","nameLocation":"16701:1:22","nodeType":"VariableDeclaration","scope":8497,"src":"16653:49:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8475,"nodeType":"UserDefinedTypeName","pathNode":{"id":8474,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["16653:21:22","16675:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"16653:39:22"},"referencedDeclaration":12643,"src":"16653:39:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8480,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8477,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"16705:21:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16727:20:22","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"16705:42:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16705:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16653:96:22"},{"assignments":[8482],"declarations":[{"constant":false,"id":8482,"mutability":"mutable","name":"oldValue","nameLocation":"16763:8:22","nodeType":"VariableDeclaration","scope":8497,"src":"16755:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8481,"name":"uint256","nodeType":"ElementaryTypeName","src":"16755:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8485,"initialValue":{"expression":{"id":8483,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"16774:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16776:12:22","memberName":"minBetAmount","nodeType":"MemberAccess","referencedDeclaration":12626,"src":"16774:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16755:33:22"},{"expression":{"id":8490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8486,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"16794:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8488,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16796:12:22","memberName":"minBetAmount","nodeType":"MemberAccess","referencedDeclaration":12626,"src":"16794:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8489,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8462,"src":"16811:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16794:25:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8491,"nodeType":"ExpressionStatement","src":"16794:25:22"},{"eventCall":{"arguments":[{"id":8493,"name":"oldValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8482,"src":"16851:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8494,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8462,"src":"16861:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8492,"name":"MinBetAmountUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"16831:19:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16831:39:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8496,"nodeType":"EmitStatement","src":"16826:44:22"}]},"id":8498,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinBetAmount","nameLocation":"16556:16:22","nodeType":"FunctionDefinition","parameters":{"id":8463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8462,"mutability":"mutable","name":"newValue","nameLocation":"16581:8:22","nodeType":"VariableDeclaration","scope":8498,"src":"16573:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8461,"name":"uint256","nodeType":"ElementaryTypeName","src":"16573:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16572:18:22"},"returnParameters":{"id":8464,"nodeType":"ParameterList","parameters":[],"src":"16599:0:22"},"scope":8579,"src":"16547:328:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8525,"nodeType":"Block","src":"17052:203:22","statements":[{"expression":{"arguments":[{"id":8510,"name":"b3trAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8500,"src":"17074:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8509,"name":"_setB3TRAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8322,"src":"17058:15:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17058:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8512,"nodeType":"ExpressionStatement","src":"17058:28:22"},{"expression":{"arguments":[{"id":8514,"name":"veBetterPassportAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8502,"src":"17120:23:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8513,"name":"_setVeBetterPassportAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"17092:27:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17092:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8516,"nodeType":"ExpressionStatement","src":"17092:52:22"},{"expression":{"arguments":[{"id":8518,"name":"xAllocationVotingAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8504,"src":"17179:24:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8517,"name":"_setXAllocationVotingAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8414,"src":"17150:28:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17150:54:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8520,"nodeType":"ExpressionStatement","src":"17150:54:22"},{"expression":{"arguments":[{"id":8522,"name":"x2EarnAppsAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"17232:17:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8521,"name":"_setX2EarnAppsAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8460,"src":"17210:21:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17210:40:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8524,"nodeType":"ExpressionStatement","src":"17210:40:22"}]},"id":8526,"implemented":true,"kind":"function","modifiers":[],"name":"_initializeAddresses","nameLocation":"16888:20:22","nodeType":"FunctionDefinition","parameters":{"id":8507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8500,"mutability":"mutable","name":"b3trAddress","nameLocation":"16922:11:22","nodeType":"VariableDeclaration","scope":8526,"src":"16914:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8499,"name":"address","nodeType":"ElementaryTypeName","src":"16914:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8502,"mutability":"mutable","name":"veBetterPassportAddress","nameLocation":"16947:23:22","nodeType":"VariableDeclaration","scope":8526,"src":"16939:31:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8501,"name":"address","nodeType":"ElementaryTypeName","src":"16939:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8504,"mutability":"mutable","name":"xAllocationVotingAddress","nameLocation":"16984:24:22","nodeType":"VariableDeclaration","scope":8526,"src":"16976:32:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8503,"name":"address","nodeType":"ElementaryTypeName","src":"16976:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8506,"mutability":"mutable","name":"x2EarnAppsAddress","nameLocation":"17022:17:22","nodeType":"VariableDeclaration","scope":8526,"src":"17014:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8505,"name":"address","nodeType":"ElementaryTypeName","src":"17014:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16908:135:22"},"returnParameters":{"id":8508,"nodeType":"ParameterList","parameters":[],"src":"17052:0:22"},"scope":8579,"src":"16879:376:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8557,"nodeType":"Block","src":"17404:218:22","statements":[{"expression":{"arguments":[{"id":8538,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"17421:18:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8539,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"17441:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8537,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"17410:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":8540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17410:37:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8541,"nodeType":"ExpressionStatement","src":"17410:37:22"},{"expression":{"arguments":[{"id":8543,"name":"UPGRADER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7074,"src":"17464:13:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8544,"name":"upgrader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8530,"src":"17479:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8542,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"17453:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":8545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17453:35:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8546,"nodeType":"ExpressionStatement","src":"17453:35:22"},{"expression":{"arguments":[{"id":8548,"name":"CONTRACTS_ADDRESS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7079,"src":"17505:30:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8549,"name":"contractsAddressManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"17537:23:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8547,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"17494:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":8550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17494:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8551,"nodeType":"ExpressionStatement","src":"17494:67:22"},{"expression":{"arguments":[{"id":8553,"name":"SETTINGS_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7084,"src":"17578:21:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8554,"name":"settingsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8534,"src":"17601:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8552,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"17567:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":8555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17567:50:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8556,"nodeType":"ExpressionStatement","src":"17567:50:22"}]},"id":8558,"implemented":true,"kind":"function","modifiers":[],"name":"_initializeRoles","nameLocation":"17268:16:22","nodeType":"FunctionDefinition","parameters":{"id":8535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8528,"mutability":"mutable","name":"admin","nameLocation":"17298:5:22","nodeType":"VariableDeclaration","scope":8558,"src":"17290:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8527,"name":"address","nodeType":"ElementaryTypeName","src":"17290:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8530,"mutability":"mutable","name":"upgrader","nameLocation":"17317:8:22","nodeType":"VariableDeclaration","scope":8558,"src":"17309:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8529,"name":"address","nodeType":"ElementaryTypeName","src":"17309:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8532,"mutability":"mutable","name":"contractsAddressManager","nameLocation":"17339:23:22","nodeType":"VariableDeclaration","scope":8558,"src":"17331:31:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8531,"name":"address","nodeType":"ElementaryTypeName","src":"17331:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8534,"mutability":"mutable","name":"settingsManager","nameLocation":"17376:15:22","nodeType":"VariableDeclaration","scope":8558,"src":"17368:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8533,"name":"address","nodeType":"ElementaryTypeName","src":"17368:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17284:111:22"},"returnParameters":{"id":8536,"nodeType":"ParameterList","parameters":[],"src":"17404:0:22"},"scope":8579,"src":"17259:363:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8577,"nodeType":"Block","src":"17717:107:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8565,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8560,"src":"17727:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17742:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17727:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8568,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8560,"src":"17747:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8569,"name":"challengeCount_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8562,"src":"17761:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17747:29:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17727:49:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8576,"nodeType":"IfStatement","src":"17723:96:22","trueBody":{"errorCall":{"arguments":[{"id":8573,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8560,"src":"17807:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8572,"name":"ChallengeDoesNotExist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13222,"src":"17785:21:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":8574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17785:34:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8575,"nodeType":"RevertStatement","src":"17778:41:22"}}]},"id":8578,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureChallengeExists","nameLocation":"17635:22:22","nodeType":"FunctionDefinition","parameters":{"id":8563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8560,"mutability":"mutable","name":"challengeId","nameLocation":"17666:11:22","nodeType":"VariableDeclaration","scope":8578,"src":"17658:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8559,"name":"uint256","nodeType":"ElementaryTypeName","src":"17658:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8562,"mutability":"mutable","name":"challengeCount_","nameLocation":"17687:15:22","nodeType":"VariableDeclaration","scope":8578,"src":"17679:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8561,"name":"uint256","nodeType":"ElementaryTypeName","src":"17679:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17657:46:22"},"returnParameters":{"id":8564,"nodeType":"ParameterList","parameters":[],"src":"17717:0:22"},"scope":8579,"src":"17626:198:22","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":8580,"src":"1421:16405:22","usedErrors":[379,382,643,648,875,1023,1026,1160,1173,1678,1681,13138,13140,13146,13152,13158,13160,13162,13170,13176,13182,13188,13194,13200,13206,13212,13218,13222,13226,13230,13234,13242,13250,13254,13261,13265,13269,13275,13281,13287,13293,13299,13305,13311,13317,13319,13325,13329,13333,13337,13347,13351,13358],"usedEvents":[387,1035,1044,1053,1139,13365,13372,13379,13386,13393,13400,13407,13414,13423,13460,13469,13476,13483,13490,13497,13502,13507,13512,13524,13533,13542,13555,13564]}],"src":"32:17795:22"},"id":22},"contracts/challenges/libraries/ChallengeCoreLogic.sol":{"ast":{"absolutePath":"contracts/challenges/libraries/ChallengeCoreLogic.sol","exportedSymbols":{"ChallengeCoreLogic":[10968],"ChallengeStorageTypes":[12655],"ChallengeTypes":[12871],"IChallenges":[13860]},"id":10969,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8581,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:23"},{"absolutePath":"contracts/interfaces/IChallenges.sol","file":"../../interfaces/IChallenges.sol","id":8583,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10969,"sourceUnit":13861,"src":"57:63:23","symbolAliases":[{"foreign":{"id":8582,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"66:11:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeStorageTypes.sol","file":"./ChallengeStorageTypes.sol","id":8585,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10969,"sourceUnit":12656,"src":"121:68:23","symbolAliases":[{"foreign":{"id":8584,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"130:21:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeTypes.sol","file":"./ChallengeTypes.sol","id":8587,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10969,"sourceUnit":12872,"src":"190:54:23","symbolAliases":[{"foreign":{"id":8586,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"199:14:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ChallengeCoreLogic","contractDependencies":[],"contractKind":"library","documentation":{"id":8588,"nodeType":"StructuredDocumentation","src":"246:287:23","text":"@title ChallengeCoreLogic Library\n @notice Handles challenge creation, invitations, participation, and lazy status transitions.\n @dev Participant, invite, and decline arrays are paired with index-plus-one mappings so membership updates stay\n O(1) via swap-and-pop removals."},"fullyImplemented":true,"id":10968,"linearizedBaseContracts":[10968],"name":"ChallengeCoreLogic","nameLocation":"541:18:23","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":8591,"mutability":"constant","name":"TITLE_MAX_BYTES","nameLocation":"589:15:23","nodeType":"VariableDeclaration","scope":10968,"src":"564:46:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8589,"name":"uint256","nodeType":"ElementaryTypeName","src":"564:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313230","id":8590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"607:3:23","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},"visibility":"private"},{"constant":true,"id":8594,"mutability":"constant","name":"DESCRIPTION_MAX_BYTES","nameLocation":"639:21:23","nodeType":"VariableDeclaration","scope":10968,"src":"614:52:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8592,"name":"uint256","nodeType":"ElementaryTypeName","src":"614:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":8593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"663:3:23","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"private"},{"constant":true,"id":8597,"mutability":"constant","name":"IMAGE_URI_MAX_BYTES","nameLocation":"695:19:23","nodeType":"VariableDeclaration","scope":10968,"src":"670:50:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8595,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353132","id":8596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"717:3:23","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"512"},"visibility":"private"},{"constant":true,"id":8600,"mutability":"constant","name":"METADATA_URI_MAX_BYTES","nameLocation":"749:22:23","nodeType":"VariableDeclaration","scope":10968,"src":"724:53:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8598,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353132","id":8599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"774:3:23","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"512"},"visibility":"private"},{"constant":true,"id":8603,"mutability":"constant","name":"MIN_PRIZE_PER_WINNER","nameLocation":"806:20:23","nodeType":"VariableDeclaration","scope":10968,"src":"781:55:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8601,"name":"uint256","nodeType":"ElementaryTypeName","src":"781:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":8602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"829:7:23","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1"},"visibility":"private"},{"constant":true,"id":8606,"mutability":"constant","name":"MAX_THRESHOLD","nameLocation":"865:13:23","nodeType":"VariableDeclaration","scope":10968,"src":"840:50:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8604,"name":"uint256","nodeType":"ElementaryTypeName","src":"840:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":8605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"881:9:23","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"anonymous":false,"documentation":{"id":8607,"nodeType":"StructuredDocumentation","src":"895:255:23","text":"@notice Emitted when a challenge is created and initially funded.\n @dev Split Win-specific configuration (numWinners, prizePerWinner) is emitted right after via\n `SplitWinConfigured` to keep this event signature within Solidity stack limits."},"eventSelector":"facaa812f3ddb00d0d30b86be7240dff1cd3372e8f77a7b421d35125891e3060","id":8643,"name":"ChallengeCreated","nameLocation":"1159:16:23","nodeType":"EventDefinition","parameters":{"id":8642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8609,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"1197:11:23","nodeType":"VariableDeclaration","scope":8643,"src":"1181:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8608,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8611,"indexed":true,"mutability":"mutable","name":"creator","nameLocation":"1230:7:23","nodeType":"VariableDeclaration","scope":8643,"src":"1214:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8610,"name":"address","nodeType":"ElementaryTypeName","src":"1214:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8613,"indexed":true,"mutability":"mutable","name":"endRound","nameLocation":"1259:8:23","nodeType":"VariableDeclaration","scope":8643,"src":"1243:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8612,"name":"uint256","nodeType":"ElementaryTypeName","src":"1243:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8616,"indexed":false,"mutability":"mutable","name":"kind","nameLocation":"1302:4:23","nodeType":"VariableDeclaration","scope":8643,"src":"1273:33:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"typeName":{"id":8615,"nodeType":"UserDefinedTypeName","pathNode":{"id":8614,"name":"ChallengeTypes.ChallengeKind","nameLocations":["1273:14:23","1288:13:23"],"nodeType":"IdentifierPath","referencedDeclaration":12660,"src":"1273:28:23"},"referencedDeclaration":12660,"src":"1273:28:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"visibility":"internal"},{"constant":false,"id":8619,"indexed":false,"mutability":"mutable","name":"visibility","nameLocation":"1347:10:23","nodeType":"VariableDeclaration","scope":8643,"src":"1312:45:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},"typeName":{"id":8618,"nodeType":"UserDefinedTypeName","pathNode":{"id":8617,"name":"ChallengeTypes.ChallengeVisibility","nameLocations":["1312:14:23","1327:19:23"],"nodeType":"IdentifierPath","referencedDeclaration":12663,"src":"1312:34:23"},"referencedDeclaration":12663,"src":"1312:34:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"visibility":"internal"},{"constant":false,"id":8622,"indexed":false,"mutability":"mutable","name":"challengeType","nameLocation":"1392:13:23","nodeType":"VariableDeclaration","scope":8643,"src":"1363:42:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"typeName":{"id":8621,"nodeType":"UserDefinedTypeName","pathNode":{"id":8620,"name":"ChallengeTypes.ChallengeType","nameLocations":["1363:14:23","1378:13:23"],"nodeType":"IdentifierPath","referencedDeclaration":12667,"src":"1363:28:23"},"referencedDeclaration":12667,"src":"1363:28:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"visibility":"internal"},{"constant":false,"id":8624,"indexed":false,"mutability":"mutable","name":"stakeAmount","nameLocation":"1419:11:23","nodeType":"VariableDeclaration","scope":8643,"src":"1411:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8623,"name":"uint256","nodeType":"ElementaryTypeName","src":"1411:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8626,"indexed":false,"mutability":"mutable","name":"startRound","nameLocation":"1444:10:23","nodeType":"VariableDeclaration","scope":8643,"src":"1436:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8625,"name":"uint256","nodeType":"ElementaryTypeName","src":"1436:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8628,"indexed":false,"mutability":"mutable","name":"threshold","nameLocation":"1468:9:23","nodeType":"VariableDeclaration","scope":8643,"src":"1460:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8627,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8630,"indexed":false,"mutability":"mutable","name":"allApps","nameLocation":"1488:7:23","nodeType":"VariableDeclaration","scope":8643,"src":"1483:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8629,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8633,"indexed":false,"mutability":"mutable","name":"selectedApps","nameLocation":"1511:12:23","nodeType":"VariableDeclaration","scope":8643,"src":"1501:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":8631,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1501:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8632,"nodeType":"ArrayTypeName","src":"1501:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":8635,"indexed":false,"mutability":"mutable","name":"title","nameLocation":"1536:5:23","nodeType":"VariableDeclaration","scope":8643,"src":"1529:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8634,"name":"string","nodeType":"ElementaryTypeName","src":"1529:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8637,"indexed":false,"mutability":"mutable","name":"description","nameLocation":"1554:11:23","nodeType":"VariableDeclaration","scope":8643,"src":"1547:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8636,"name":"string","nodeType":"ElementaryTypeName","src":"1547:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8639,"indexed":false,"mutability":"mutable","name":"imageURI","nameLocation":"1578:8:23","nodeType":"VariableDeclaration","scope":8643,"src":"1571:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8638,"name":"string","nodeType":"ElementaryTypeName","src":"1571:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8641,"indexed":false,"mutability":"mutable","name":"metadataURI","nameLocation":"1599:11:23","nodeType":"VariableDeclaration","scope":8643,"src":"1592:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8640,"name":"string","nodeType":"ElementaryTypeName","src":"1592:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1175:439:23"},"src":"1153:462:23"},{"anonymous":false,"documentation":{"id":8644,"nodeType":"StructuredDocumentation","src":"1619:87:23","text":"@notice Emitted immediately after `ChallengeCreated` for Split Win challenges only."},"eventSelector":"632e7af18aa775a9a28c2f3530920c3dc0924efe616499de9943f6dc93c699a5","id":8652,"name":"SplitWinConfigured","nameLocation":"1715:18:23","nodeType":"EventDefinition","parameters":{"id":8651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8646,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"1750:11:23","nodeType":"VariableDeclaration","scope":8652,"src":"1734:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8645,"name":"uint256","nodeType":"ElementaryTypeName","src":"1734:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8648,"indexed":false,"mutability":"mutable","name":"numWinners","nameLocation":"1771:10:23","nodeType":"VariableDeclaration","scope":8652,"src":"1763:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8647,"name":"uint256","nodeType":"ElementaryTypeName","src":"1763:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8650,"indexed":false,"mutability":"mutable","name":"prizePerWinner","nameLocation":"1791:14:23","nodeType":"VariableDeclaration","scope":8652,"src":"1783:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8649,"name":"uint256","nodeType":"ElementaryTypeName","src":"1783:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1733:73:23"},"src":"1709:98:23"},{"anonymous":false,"documentation":{"id":8653,"nodeType":"StructuredDocumentation","src":"1811:63:23","text":"@notice Emitted when a new invitee is added to a challenge."},"eventSelector":"9a32db57826ebc3e7487a5b33bf9b4eeec26e87e54fbaa4d09df62f3fb627314","id":8659,"name":"ChallengeInviteAdded","nameLocation":"1883:20:23","nodeType":"EventDefinition","parameters":{"id":8658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8655,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"1920:11:23","nodeType":"VariableDeclaration","scope":8659,"src":"1904:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8654,"name":"uint256","nodeType":"ElementaryTypeName","src":"1904:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8657,"indexed":true,"mutability":"mutable","name":"invitee","nameLocation":"1949:7:23","nodeType":"VariableDeclaration","scope":8659,"src":"1933:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8656,"name":"address","nodeType":"ElementaryTypeName","src":"1933:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1903:54:23"},"src":"1877:81:23"},{"anonymous":false,"documentation":{"id":8660,"nodeType":"StructuredDocumentation","src":"1962:57:23","text":"@notice Emitted when a participant joins a challenge."},"eventSelector":"690ecbabe96222b39728b512682860cc6460002a670ff94954038286bea0ba69","id":8666,"name":"ChallengeJoined","nameLocation":"2028:15:23","nodeType":"EventDefinition","parameters":{"id":8665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8662,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"2060:11:23","nodeType":"VariableDeclaration","scope":8666,"src":"2044:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8661,"name":"uint256","nodeType":"ElementaryTypeName","src":"2044:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8664,"indexed":true,"mutability":"mutable","name":"participant","nameLocation":"2089:11:23","nodeType":"VariableDeclaration","scope":8666,"src":"2073:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8663,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2043:58:23"},"src":"2022:80:23"},{"anonymous":false,"documentation":{"id":8667,"nodeType":"StructuredDocumentation","src":"2106:75:23","text":"@notice Emitted when a participant leaves a challenge before it starts."},"eventSelector":"a1132418813654d1519f5c54cbeaa3aef5c41c01f9fad4cf6bd730eca8f43575","id":8673,"name":"ChallengeLeft","nameLocation":"2190:13:23","nodeType":"EventDefinition","parameters":{"id":8672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8669,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"2220:11:23","nodeType":"VariableDeclaration","scope":8673,"src":"2204:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8668,"name":"uint256","nodeType":"ElementaryTypeName","src":"2204:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8671,"indexed":true,"mutability":"mutable","name":"participant","nameLocation":"2249:11:23","nodeType":"VariableDeclaration","scope":8673,"src":"2233:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8670,"name":"address","nodeType":"ElementaryTypeName","src":"2233:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2203:58:23"},"src":"2184:78:23"},{"anonymous":false,"documentation":{"id":8674,"nodeType":"StructuredDocumentation","src":"2266:57:23","text":"@notice Emitted when an invitee declines a challenge."},"eventSelector":"622307417dca07086bf34ab5f56032aa32328c417e8fd3020ae0394eb9180837","id":8680,"name":"ChallengeDeclined","nameLocation":"2332:17:23","nodeType":"EventDefinition","parameters":{"id":8679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8676,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"2366:11:23","nodeType":"VariableDeclaration","scope":8680,"src":"2350:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8675,"name":"uint256","nodeType":"ElementaryTypeName","src":"2350:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8678,"indexed":true,"mutability":"mutable","name":"participant","nameLocation":"2395:11:23","nodeType":"VariableDeclaration","scope":8680,"src":"2379:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8677,"name":"address","nodeType":"ElementaryTypeName","src":"2379:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2349:58:23"},"src":"2326:82:23"},{"anonymous":false,"documentation":{"id":8681,"nodeType":"StructuredDocumentation","src":"2412:73:23","text":"@notice Emitted when a pending challenge is cancelled by its creator."},"eventSelector":"8f468517950218b9c61ac630652209be7aeda4de4f6eda5e0d4b106d784fa4e9","id":8685,"name":"ChallengeCancelled","nameLocation":"2494:18:23","nodeType":"EventDefinition","parameters":{"id":8684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8683,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"2529:11:23","nodeType":"VariableDeclaration","scope":8685,"src":"2513:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8682,"name":"uint256","nodeType":"ElementaryTypeName","src":"2513:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2512:29:23"},"src":"2488:54:23"},{"anonymous":false,"documentation":{"id":8686,"nodeType":"StructuredDocumentation","src":"2546:60:23","text":"@notice Emitted when a pending challenge becomes active."},"eventSelector":"15aacf6098564d68b408a7200e71ed0dcdc4b4538f11437b0fe1f3976afef914","id":8690,"name":"ChallengeActivated","nameLocation":"2615:18:23","nodeType":"EventDefinition","parameters":{"id":8689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8688,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"2650:11:23","nodeType":"VariableDeclaration","scope":8690,"src":"2634:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8687,"name":"uint256","nodeType":"ElementaryTypeName","src":"2634:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2633:29:23"},"src":"2609:54:23"},{"anonymous":false,"documentation":{"id":8691,"nodeType":"StructuredDocumentation","src":"2667:75:23","text":"@notice Emitted when a pending challenge becomes invalid at start time."},"eventSelector":"d483b2246f0bbcfae793b6618f6da27d09bc5d458d1ed0ca1c0003c4b696cd1b","id":8695,"name":"ChallengeInvalidated","nameLocation":"2751:20:23","nodeType":"EventDefinition","parameters":{"id":8694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8693,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"2788:11:23","nodeType":"VariableDeclaration","scope":8695,"src":"2772:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8692,"name":"uint256","nodeType":"ElementaryTypeName","src":"2772:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2771:29:23"},"src":"2745:56:23"},{"body":{"id":9090,"nodeType":"Block","src":"3170:3371:23","statements":[{"assignments":[8708],"declarations":[{"constant":false,"id":8708,"mutability":"mutable","name":"$","nameLocation":"3224:1:23","nodeType":"VariableDeclaration","scope":9090,"src":"3176:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":8707,"nodeType":"UserDefinedTypeName","pathNode":{"id":8706,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["3176:21:23","3198:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"3176:39:23"},"referencedDeclaration":12643,"src":"3176:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":8712,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8709,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"3228:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":8710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3250:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"3228:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":8711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3228:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3176:96:23"},{"assignments":[8714],"declarations":[{"constant":false,"id":8714,"mutability":"mutable","name":"currentRound","nameLocation":"3286:12:23","nodeType":"VariableDeclaration","scope":9090,"src":"3278:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8713,"name":"uint256","nodeType":"ElementaryTypeName","src":"3278:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8718,"initialValue":{"arguments":[{"id":8716,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"3315:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}],"id":8715,"name":"_currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10927,"src":"3301:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ChallengesStorage_$12643_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct ChallengeStorageTypes.ChallengesStorage storage pointer) view returns (uint256)"}},"id":8717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3301:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3278:39:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8719,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"3328:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8720,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3335:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12694,"src":"3328:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3350:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3328:23:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8728,"nodeType":"IfStatement","src":"3324:63:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8723,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"3360:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":8725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3372:13:23","memberName":"InvalidAmount","nodeType":"MemberAccess","referencedDeclaration":13140,"src":"3360:25:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3360:27:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8727,"nodeType":"RevertStatement","src":"3353:34:23"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8729,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"3397:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3404:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12694,"src":"3397:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8731,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"3418:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3420:12:23","memberName":"minBetAmount","nodeType":"MemberAccess","referencedDeclaration":12626,"src":"3418:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3397:35:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8744,"nodeType":"IfStatement","src":"3393:132:23","trueBody":{"id":8743,"nodeType":"Block","src":"3434:91:23","statements":[{"errorCall":{"arguments":[{"expression":{"id":8737,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"3483:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3490:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12694,"src":"3483:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8739,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"3503:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3505:12:23","memberName":"minBetAmount","nodeType":"MemberAccess","referencedDeclaration":12626,"src":"3503:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8734,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"3449:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":8736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3461:21:23","memberName":"BetAmountBelowMinimum","nodeType":"MemberAccess","referencedDeclaration":13146,"src":"3449:33:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":8741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3449:69:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8742,"nodeType":"RevertStatement","src":"3442:76:23"}]}},{"assignments":[8746],"declarations":[{"constant":false,"id":8746,"mutability":"mutable","name":"startRound","nameLocation":"3645:10:23","nodeType":"VariableDeclaration","scope":9090,"src":"3637:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8745,"name":"uint256","nodeType":"ElementaryTypeName","src":"3637:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8757,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8747,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"3658:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3665:10:23","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12696,"src":"3658:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3679:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3658:22:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":8754,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"3702:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3709:10:23","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12696,"src":"3702:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3658:61:23","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8751,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"3683:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":8752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3698:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3683:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3637:82:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8758,"name":"startRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8746,"src":"3729:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8759,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"3743:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3729:26:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8768,"nodeType":"IfStatement","src":"3725:94:23","trueBody":{"errorCall":{"arguments":[{"id":8764,"name":"startRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8746,"src":"3794:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8765,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"3806:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8761,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"3764:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":8763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3776:17:23","memberName":"InvalidStartRound","nodeType":"MemberAccess","referencedDeclaration":13152,"src":"3764:29:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":8766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3764:55:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8767,"nodeType":"RevertStatement","src":"3757:62:23"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8769,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"3829:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3836:8:23","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12698,"src":"3829:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8771,"name":"startRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8746,"src":"3847:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3829:28:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8781,"nodeType":"IfStatement","src":"3825:97:23","trueBody":{"errorCall":{"arguments":[{"id":8776,"name":"startRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8746,"src":"3894:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8777,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"3906:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3913:8:23","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12698,"src":"3906:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8773,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"3866:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":8775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3878:15:23","memberName":"InvalidEndRound","nodeType":"MemberAccess","referencedDeclaration":13158,"src":"3866:27:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":8779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3866:56:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8780,"nodeType":"RevertStatement","src":"3859:63:23"}},{"assignments":[8783],"declarations":[{"constant":false,"id":8783,"mutability":"mutable","name":"duration","nameLocation":"3937:8:23","nodeType":"VariableDeclaration","scope":9090,"src":"3929:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8782,"name":"uint256","nodeType":"ElementaryTypeName","src":"3929:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8790,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8784,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"3948:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8785,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3955:8:23","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12698,"src":"3948:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8786,"name":"startRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8746,"src":"3966:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3948:28:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":8788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3979:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3948:32:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3929:51:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8791,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8783,"src":"3990:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":8792,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"4001:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8793,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4003:20:23","memberName":"maxChallengeDuration","nodeType":"MemberAccess","referencedDeclaration":12570,"src":"4001:22:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3990:33:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8804,"nodeType":"IfStatement","src":"3986:135:23","trueBody":{"id":8803,"nodeType":"Block","src":"4025:96:23","statements":[{"errorCall":{"arguments":[{"id":8798,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8783,"src":"4081:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8799,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"4091:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4093:20:23","memberName":"maxChallengeDuration","nodeType":"MemberAccess","referencedDeclaration":12570,"src":"4091:22:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8795,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"4040:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":8797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4052:28:23","memberName":"MaxChallengeDurationExceeded","nodeType":"MemberAccess","referencedDeclaration":13206,"src":"4040:40:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":8801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4040:74:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8802,"nodeType":"RevertStatement","src":"4033:81:23"}]}},{"assignments":[8806],"declarations":[{"constant":false,"id":8806,"mutability":"mutable","name":"allApps","nameLocation":"4219:7:23","nodeType":"VariableDeclaration","scope":9090,"src":"4214:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8805,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":8812,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8807,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4229:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4236:6:23","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12705,"src":"4229:13:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":8809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4243:6:23","memberName":"length","nodeType":"MemberAccess","src":"4229:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4253:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4229:25:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4214:40:23"},{"condition":{"id":8814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4264:8:23","subExpression":{"id":8813,"name":"allApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8806,"src":"4265:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8839,"nodeType":"IfStatement","src":"4260:212:23","trueBody":{"id":8838,"nodeType":"Block","src":"4274:198:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8815,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4286:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8816,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4293:6:23","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12705,"src":"4286:13:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":8817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4300:6:23","memberName":"length","nodeType":"MemberAccess","src":"4286:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":8818,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"4309:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4311:15:23","memberName":"maxSelectedApps","nodeType":"MemberAccess","referencedDeclaration":12572,"src":"4309:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4286:40:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8832,"nodeType":"IfStatement","src":"4282:148:23","trueBody":{"id":8831,"nodeType":"Block","src":"4328:102:23","statements":[{"errorCall":{"arguments":[{"expression":{"expression":{"id":8824,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4381:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8825,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4388:6:23","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12705,"src":"4381:13:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":8826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4395:6:23","memberName":"length","nodeType":"MemberAccess","src":"4381:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8827,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"4403:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8828,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4405:15:23","memberName":"maxSelectedApps","nodeType":"MemberAccess","referencedDeclaration":12572,"src":"4403:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8821,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"4345:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":8823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4357:23:23","memberName":"MaxSelectedAppsExceeded","nodeType":"MemberAccess","referencedDeclaration":13212,"src":"4345:35:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":8829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4345:76:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8830,"nodeType":"RevertStatement","src":"4338:83:23"}]}},{"expression":{"arguments":[{"expression":{"id":8834,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4451:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4458:6:23","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12705,"src":"4451:13:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"id":8833,"name":"_validateApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"4437:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$","typeString":"function (bytes32[] memory) view"}},"id":8836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4437:28:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8837,"nodeType":"ExpressionStatement","src":"4437:28:23"}]}},{"expression":{"arguments":[{"id":8841,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4505:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}],"id":8840,"name":"_validateTypeConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9925,"src":"4478:26:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CreateChallengeParams_$12717_memory_ptr_$returns$__$","typeString":"function (struct ChallengeTypes.CreateChallengeParams memory) pure"}},"id":8842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4478:34:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8843,"nodeType":"ExpressionStatement","src":"4478:34:23"},{"expression":{"arguments":[{"id":8845,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4543:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}],"id":8844,"name":"_validateMetadataLengths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10015,"src":"4518:24:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CreateChallengeParams_$12717_memory_ptr_$returns$__$","typeString":"function (struct ChallengeTypes.CreateChallengeParams memory) pure"}},"id":8846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4518:32:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8847,"nodeType":"ExpressionStatement","src":"4518:32:23"},{"expression":{"id":8852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8848,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8702,"src":"4557:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4571:18:23","subExpression":{"expression":{"id":8849,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"4573:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4575:14:23","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"4573:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4557:32:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8853,"nodeType":"ExpressionStatement","src":"4557:32:23"},{"assignments":[8858],"declarations":[{"constant":false,"id":8858,"mutability":"mutable","name":"challenge","nameLocation":"4628:9:23","nodeType":"VariableDeclaration","scope":9090,"src":"4595:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":8857,"nodeType":"UserDefinedTypeName","pathNode":{"id":8856,"name":"ChallengeTypes.Challenge","nameLocations":["4595:14:23","4610:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"4595:24:23"},"referencedDeclaration":12806,"src":"4595:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":8863,"initialValue":{"baseExpression":{"expression":{"id":8859,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"4640:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":8860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4642:10:23","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"4640:12:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":8862,"indexExpression":{"id":8861,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8702,"src":"4653:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4640:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4595:70:23"},{"expression":{"id":8869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8864,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"4672:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4682:4:23","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"4672:14:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8867,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4689:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8868,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4696:4:23","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12686,"src":"4689:11:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"src":"4672:28:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"id":8870,"nodeType":"ExpressionStatement","src":"4672:28:23"},{"expression":{"id":8876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8871,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"4706:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4716:10:23","memberName":"visibility","nodeType":"MemberAccess","referencedDeclaration":12749,"src":"4706:20:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8874,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4729:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4736:10:23","memberName":"visibility","nodeType":"MemberAccess","referencedDeclaration":12689,"src":"4729:17:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"src":"4706:40:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"id":8877,"nodeType":"ExpressionStatement","src":"4706:40:23"},{"expression":{"id":8883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8878,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"4752:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8880,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4762:13:23","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12752,"src":"4752:23:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8881,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4778:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8882,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4785:13:23","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12692,"src":"4778:20:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"4752:46:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"id":8884,"nodeType":"ExpressionStatement","src":"4752:46:23"},{"expression":{"id":8891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8885,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"4804:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4814:6:23","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"4804:16:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":8888,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"4823:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":8889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4838:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"4823:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":8890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4854:7:23","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"4823:38:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"4804:57:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"id":8892,"nodeType":"ExpressionStatement","src":"4804:57:23"},{"expression":{"id":8899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8893,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"4867:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8895,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4877:14:23","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"4867:24:23","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":8896,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"4894:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":8897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4909:14:23","memberName":"SettlementMode","nodeType":"MemberAccess","referencedDeclaration":12678,"src":"4894:29:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SettlementMode_$12678_$","typeString":"type(enum ChallengeTypes.SettlementMode)"}},"id":8898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4924:4:23","memberName":"None","nodeType":"MemberAccess","referencedDeclaration":12674,"src":"4894:34:23","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"src":"4867:61:23","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"id":8900,"nodeType":"ExpressionStatement","src":"4867:61:23"},{"expression":{"id":8906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8901,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"4934:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4944:7:23","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"4934:17:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8904,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4954:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4958:6:23","memberName":"sender","nodeType":"MemberAccess","src":"4954:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4934:30:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8907,"nodeType":"ExpressionStatement","src":"4934:30:23"},{"expression":{"id":8913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8908,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"4970:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4980:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"4970:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8911,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"4994:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5001:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12694,"src":"4994:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4970:42:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8914,"nodeType":"ExpressionStatement","src":"4970:42:23"},{"expression":{"id":8919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8915,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5018:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5028:10:23","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"5018:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8918,"name":"startRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8746,"src":"5041:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5018:33:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8920,"nodeType":"ExpressionStatement","src":"5018:33:23"},{"expression":{"id":8926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8921,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5057:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5067:8:23","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"5057:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8924,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5078:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5085:8:23","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12698,"src":"5078:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5057:36:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8927,"nodeType":"ExpressionStatement","src":"5057:36:23"},{"expression":{"id":8933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8928,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5099:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5109:9:23","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12770,"src":"5099:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8931,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5121:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5128:9:23","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12700,"src":"5121:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5099:38:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8934,"nodeType":"ExpressionStatement","src":"5099:38:23"},{"expression":{"id":8940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8935,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5143:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5153:10:23","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12772,"src":"5143:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8938,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5166:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5173:10:23","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12702,"src":"5166:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5143:40:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8941,"nodeType":"ExpressionStatement","src":"5143:40:23"},{"expression":{"id":8946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8942,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5189:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8944,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5199:7:23","memberName":"allApps","nodeType":"MemberAccess","referencedDeclaration":12760,"src":"5189:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8945,"name":"allApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8806,"src":"5209:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5189:27:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8947,"nodeType":"ExpressionStatement","src":"5189:27:23"},{"expression":{"id":8953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8948,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5222:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8950,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5232:10:23","memberName":"totalPrize","nodeType":"MemberAccess","referencedDeclaration":12776,"src":"5222:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8951,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5245:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8952,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5252:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12694,"src":"5245:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5222:41:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8954,"nodeType":"ExpressionStatement","src":"5222:41:23"},{"expression":{"id":8960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8955,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5269:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5279:5:23","memberName":"title","nodeType":"MemberAccess","referencedDeclaration":12799,"src":"5269:15:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8958,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5287:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5294:5:23","memberName":"title","nodeType":"MemberAccess","referencedDeclaration":12710,"src":"5287:12:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"5269:30:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8961,"nodeType":"ExpressionStatement","src":"5269:30:23"},{"expression":{"id":8967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8962,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5305:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5315:11:23","memberName":"description","nodeType":"MemberAccess","referencedDeclaration":12801,"src":"5305:21:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8965,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5329:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8966,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5336:11:23","memberName":"description","nodeType":"MemberAccess","referencedDeclaration":12712,"src":"5329:18:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"5305:42:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8968,"nodeType":"ExpressionStatement","src":"5305:42:23"},{"expression":{"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8969,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5353:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5363:8:23","memberName":"imageURI","nodeType":"MemberAccess","referencedDeclaration":12803,"src":"5353:18:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8972,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5374:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8973,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5381:8:23","memberName":"imageURI","nodeType":"MemberAccess","referencedDeclaration":12714,"src":"5374:15:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"5353:36:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8975,"nodeType":"ExpressionStatement","src":"5353:36:23"},{"expression":{"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8976,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5395:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5405:11:23","memberName":"metadataURI","nodeType":"MemberAccess","referencedDeclaration":12805,"src":"5395:21:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8979,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5419:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5426:11:23","memberName":"metadataURI","nodeType":"MemberAccess","referencedDeclaration":12716,"src":"5419:18:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"5395:42:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8982,"nodeType":"ExpressionStatement","src":"5395:42:23"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":8988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8983,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5635:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5642:13:23","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12692,"src":"5635:20:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":8985,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"5659:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":8986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5674:13:23","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"5659:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":8987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5688:8:23","memberName":"SplitWin","nodeType":"MemberAccess","referencedDeclaration":12666,"src":"5659:37:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"5635:61:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9000,"nodeType":"IfStatement","src":"5631:147:23","trueBody":{"id":8999,"nodeType":"Block","src":"5698:80:23","statements":[{"expression":{"id":8997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8989,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5706:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":8991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5716:14:23","memberName":"prizePerWinner","nodeType":"MemberAccess","referencedDeclaration":12774,"src":"5706:24:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8992,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5733:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5740:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12694,"src":"5733:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":8994,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5754:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":8995,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5761:10:23","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12702,"src":"5754:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5733:38:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5706:65:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8998,"nodeType":"ExpressionStatement","src":"5706:65:23"}]}},{"body":{"id":9023,"nodeType":"Block","src":"5831:54:23","statements":[{"expression":{"arguments":[{"baseExpression":{"expression":{"id":9017,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5861:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9018,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5868:6:23","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12705,"src":"5861:13:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":9020,"indexExpression":{"id":9019,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"5875:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5861:16:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":9012,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"5839:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5849:6:23","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12797,"src":"5839:16:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":9016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5856:4:23","memberName":"push","nodeType":"MemberAccess","src":"5839:21:23","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer,bytes32)"}},"id":9021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5839:39:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9022,"nodeType":"ExpressionStatement","src":"5839:39:23"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9004,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"5800:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":9005,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5804:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9006,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5811:6:23","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12705,"src":"5804:13:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":9007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5818:6:23","memberName":"length","nodeType":"MemberAccess","src":"5804:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5800:24:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9024,"initializationExpression":{"assignments":[9002],"declarations":[{"constant":false,"id":9002,"mutability":"mutable","name":"i","nameLocation":"5797:1:23","nodeType":"VariableDeclaration","scope":9024,"src":"5789:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9001,"name":"uint256","nodeType":"ElementaryTypeName","src":"5789:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9003,"nodeType":"VariableDeclarationStatement","src":"5789:9:23"},"loopExpression":{"expression":{"id":9010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5826:3:23","subExpression":{"id":9009,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"5826:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9011,"nodeType":"ExpressionStatement","src":"5826:3:23"},"nodeType":"ForStatement","src":"5784:101:23"},{"condition":{"id":9037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5895:67:23","subExpression":{"arguments":[{"expression":{"id":9028,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5916:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5920:6:23","memberName":"sender","nodeType":"MemberAccess","src":"5916:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9032,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5936:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_ChallengeCoreLogic_$10968","typeString":"library ChallengeCoreLogic"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChallengeCoreLogic_$10968","typeString":"library ChallengeCoreLogic"}],"id":9031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5928:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9030,"name":"address","nodeType":"ElementaryTypeName","src":"5928:7:23","typeDescriptions":{}}},"id":9033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5928:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9034,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"5943:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9035,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5950:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12694,"src":"5943:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":9025,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"5896:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5898:4:23","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"5896:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":9027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5903:12:23","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":13127,"src":"5896:19:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":9036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5896:66:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9043,"nodeType":"IfStatement","src":"5891:108:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9038,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"5971:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5983:14:23","memberName":"TransferFailed","nodeType":"MemberAccess","referencedDeclaration":13319,"src":"5971:26:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5971:28:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9042,"nodeType":"RevertStatement","src":"5964:35:23"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"id":9049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9044,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"6229:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6236:4:23","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12686,"src":"6229:11:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9046,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"6244:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6259:13:23","memberName":"ChallengeKind","nodeType":"MemberAccess","referencedDeclaration":12660,"src":"6244:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeKind_$12660_$","typeString":"type(enum ChallengeTypes.ChallengeKind)"}},"id":9048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6273:5:23","memberName":"Stake","nodeType":"MemberAccess","referencedDeclaration":12658,"src":"6244:34:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"src":"6229:49:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9063,"nodeType":"IfStatement","src":"6225:147:23","trueBody":{"id":9062,"nodeType":"Block","src":"6280:92:23","statements":[{"expression":{"arguments":[{"id":9051,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"6303:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},{"expression":{"id":9052,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6306:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6310:6:23","memberName":"sender","nodeType":"MemberAccess","src":"6306:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9050,"name":"_requirePerson","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"6288:14:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ChallengesStorage_$12643_storage_ptr_$_t_address_$returns$__$","typeString":"function (struct ChallengeStorageTypes.ChallengesStorage storage pointer,address) view"}},"id":9054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6288:29:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9055,"nodeType":"ExpressionStatement","src":"6288:29:23"},{"expression":{"arguments":[{"id":9057,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8702,"src":"6341:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9058,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6354:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6358:6:23","memberName":"sender","nodeType":"MemberAccess","src":"6354:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9056,"name":"_addParticipant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10378,"src":"6325:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6325:40:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9061,"nodeType":"ExpressionStatement","src":"6325:40:23"}]}},{"expression":{"arguments":[{"id":9065,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8702,"src":"6400:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9066,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"6413:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}],"id":9064,"name":"_emitChallengeCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"6378:21:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_struct$_Challenge_$12806_storage_ptr_$returns$__$","typeString":"function (uint256,struct ChallengeTypes.Challenge storage pointer)"}},"id":9067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6378:45:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9068,"nodeType":"ExpressionStatement","src":"6378:45:23"},{"body":{"id":9088,"nodeType":"Block","src":"6479:58:23","statements":[{"expression":{"arguments":[{"id":9081,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8702,"src":"6498:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":9082,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"6511:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6518:8:23","memberName":"invitees","nodeType":"MemberAccess","referencedDeclaration":12708,"src":"6511:15:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9085,"indexExpression":{"id":9084,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9070,"src":"6527:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6511:18:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9080,"name":"_addInvite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10302,"src":"6487:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6487:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9087,"nodeType":"ExpressionStatement","src":"6487:43:23"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9072,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9070,"src":"6446:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":9073,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8699,"src":"6450:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6457:8:23","memberName":"invitees","nodeType":"MemberAccess","referencedDeclaration":12708,"src":"6450:15:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6466:6:23","memberName":"length","nodeType":"MemberAccess","src":"6450:22:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6446:26:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9089,"initializationExpression":{"assignments":[9070],"declarations":[{"constant":false,"id":9070,"mutability":"mutable","name":"i","nameLocation":"6443:1:23","nodeType":"VariableDeclaration","scope":9089,"src":"6435:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9069,"name":"uint256","nodeType":"ElementaryTypeName","src":"6435:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9071,"nodeType":"VariableDeclarationStatement","src":"6435:9:23"},"loopExpression":{"expression":{"id":9078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6474:3:23","subExpression":{"id":9077,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9070,"src":"6474:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9079,"nodeType":"ExpressionStatement","src":"6474:3:23"},"nodeType":"ForStatement","src":"6430:107:23"}]},"documentation":{"id":8696,"nodeType":"StructuredDocumentation","src":"2805:246:23","text":"@notice Creates a new challenge and escrows the initial funds.\n @dev An empty app list means actions from all apps are counted.\n @param params Challenge creation payload.\n @return challengeId Newly created challenge identifier."},"functionSelector":"e0e65a54","id":9091,"implemented":true,"kind":"function","modifiers":[],"name":"createChallenge","nameLocation":"3063:15:23","nodeType":"FunctionDefinition","parameters":{"id":8700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8699,"mutability":"mutable","name":"params","nameLocation":"3123:6:23","nodeType":"VariableDeclaration","scope":9091,"src":"3079:50:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"},"typeName":{"id":8698,"nodeType":"UserDefinedTypeName","pathNode":{"id":8697,"name":"ChallengeTypes.CreateChallengeParams","nameLocations":["3079:14:23","3094:21:23"],"nodeType":"IdentifierPath","referencedDeclaration":12717,"src":"3079:36:23"},"referencedDeclaration":12717,"src":"3079:36:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_storage_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"}},"visibility":"internal"}],"src":"3078:52:23"},"returnParameters":{"id":8703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8702,"mutability":"mutable","name":"challengeId","nameLocation":"3157:11:23","nodeType":"VariableDeclaration","scope":9091,"src":"3149:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8701,"name":"uint256","nodeType":"ElementaryTypeName","src":"3149:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3148:21:23"},"scope":10968,"src":"3054:3487:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9146,"nodeType":"Block","src":"6763:336:23","statements":[{"assignments":[9104],"declarations":[{"constant":false,"id":9104,"mutability":"mutable","name":"challenge","nameLocation":"6802:9:23","nodeType":"VariableDeclaration","scope":9146,"src":"6769:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":9103,"nodeType":"UserDefinedTypeName","pathNode":{"id":9102,"name":"ChallengeTypes.Challenge","nameLocations":["6769:14:23","6784:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"6769:24:23"},"referencedDeclaration":12806,"src":"6769:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":9108,"initialValue":{"arguments":[{"id":9106,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9094,"src":"6828:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9105,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10967,"src":"6814:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":9107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6814:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6769:71:23"},{"expression":{"arguments":[{"id":9110,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9094,"src":"6871:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9111,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9104,"src":"6884:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}],"id":9109,"name":"_ensurePendingChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"6847:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_Challenge_$12806_storage_ptr_$returns$__$","typeString":"function (uint256,struct ChallengeTypes.Challenge storage pointer) view"}},"id":9112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9113,"nodeType":"ExpressionStatement","src":"6847:47:23"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9114,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6905:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6909:6:23","memberName":"sender","nodeType":"MemberAccess","src":"6905:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":9116,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9104,"src":"6919:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6929:7:23","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"6919:17:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6905:31:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9126,"nodeType":"IfStatement","src":"6901:94:23","trueBody":{"errorCall":{"arguments":[{"expression":{"id":9122,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6984:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6988:6:23","memberName":"sender","nodeType":"MemberAccess","src":"6984:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9119,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"6945:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6957:26:23","memberName":"ChallengesUnauthorizedUser","nodeType":"MemberAccess","referencedDeclaration":13329,"src":"6945:38:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":9124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6945:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9125,"nodeType":"RevertStatement","src":"6938:57:23"}},{"body":{"id":9144,"nodeType":"Block","src":"7044:51:23","statements":[{"expression":{"arguments":[{"id":9138,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9094,"src":"7063:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":9139,"name":"invitees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9097,"src":"7076:8:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9141,"indexExpression":{"id":9140,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9128,"src":"7085:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7076:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9137,"name":"_addInvite","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10302,"src":"7052:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7052:36:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9143,"nodeType":"ExpressionStatement","src":"7052:36:23"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9130,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9128,"src":"7018:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9131,"name":"invitees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9097,"src":"7022:8:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7031:6:23","memberName":"length","nodeType":"MemberAccess","src":"7022:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7018:19:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9145,"initializationExpression":{"assignments":[9128],"declarations":[{"constant":false,"id":9128,"mutability":"mutable","name":"i","nameLocation":"7015:1:23","nodeType":"VariableDeclaration","scope":9145,"src":"7007:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9127,"name":"uint256","nodeType":"ElementaryTypeName","src":"7007:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9129,"nodeType":"VariableDeclarationStatement","src":"7007:9:23"},"loopExpression":{"expression":{"id":9135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7039:3:23","subExpression":{"id":9134,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9128,"src":"7039:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9136,"nodeType":"ExpressionStatement","src":"7039:3:23"},"nodeType":"ForStatement","src":"7002:93:23"}]},"documentation":{"id":9092,"nodeType":"StructuredDocumentation","src":"6545:138:23","text":"@notice Adds invitees to a pending challenge.\n @param challengeId Challenge identifier.\n @param invitees Accounts to invite."},"functionSelector":"262ad80b","id":9147,"implemented":true,"kind":"function","modifiers":[],"name":"addInvites","nameLocation":"6695:10:23","nodeType":"FunctionDefinition","parameters":{"id":9098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9094,"mutability":"mutable","name":"challengeId","nameLocation":"6714:11:23","nodeType":"VariableDeclaration","scope":9147,"src":"6706:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9093,"name":"uint256","nodeType":"ElementaryTypeName","src":"6706:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9097,"mutability":"mutable","name":"invitees","nameLocation":"6744:8:23","nodeType":"VariableDeclaration","scope":9147,"src":"6727:25:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9095,"name":"address","nodeType":"ElementaryTypeName","src":"6727:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9096,"nodeType":"ArrayTypeName","src":"6727:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6705:48:23"},"returnParameters":{"id":9099,"nodeType":"ParameterList","parameters":[],"src":"6763:0:23"},"scope":10968,"src":"6686:413:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9325,"nodeType":"Block","src":"7244:1677:23","statements":[{"assignments":[9157],"declarations":[{"constant":false,"id":9157,"mutability":"mutable","name":"$","nameLocation":"7298:1:23","nodeType":"VariableDeclaration","scope":9325,"src":"7250:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":9156,"nodeType":"UserDefinedTypeName","pathNode":{"id":9155,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["7250:21:23","7272:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"7250:39:23"},"referencedDeclaration":12643,"src":"7250:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":9161,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9158,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"7302:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":9159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7324:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"7302:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":9160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7302:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7250:96:23"},{"assignments":[9166],"declarations":[{"constant":false,"id":9166,"mutability":"mutable","name":"challenge","nameLocation":"7385:9:23","nodeType":"VariableDeclaration","scope":9325,"src":"7352:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":9165,"nodeType":"UserDefinedTypeName","pathNode":{"id":9164,"name":"ChallengeTypes.Challenge","nameLocations":["7352:14:23","7367:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"7352:24:23"},"referencedDeclaration":12806,"src":"7352:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":9170,"initialValue":{"arguments":[{"id":9168,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"7411:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9167,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10967,"src":"7397:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":9169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7397:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7352:71:23"},{"expression":{"arguments":[{"id":9172,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"7454:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9173,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"7467:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}],"id":9171,"name":"_ensurePendingChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"7430:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_Challenge_$12806_storage_ptr_$returns$__$","typeString":"function (uint256,struct ChallengeTypes.Challenge storage pointer) view"}},"id":9174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7430:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9175,"nodeType":"ExpressionStatement","src":"7430:47:23"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9176,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7488:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7492:6:23","memberName":"sender","nodeType":"MemberAccess","src":"7488:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9178,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"7502:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7512:7:23","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"7502:17:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7488:31:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9187,"nodeType":"IfStatement","src":"7484:86:23","trueBody":{"errorCall":{"arguments":[{"id":9184,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"7558:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9181,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"7528:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7540:17:23","memberName":"CreatorCannotJoin","nodeType":"MemberAccess","referencedDeclaration":13265,"src":"7528:29:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7528:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9186,"nodeType":"RevertStatement","src":"7521:49:23"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},"id":9193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9188,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"7581:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7591:10:23","memberName":"visibility","nodeType":"MemberAccess","referencedDeclaration":12749,"src":"7581:20:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9190,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"7605:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7620:19:23","memberName":"ChallengeVisibility","nodeType":"MemberAccess","referencedDeclaration":12663,"src":"7605:34:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeVisibility_$12663_$","typeString":"type(enum ChallengeTypes.ChallengeVisibility)"}},"id":9192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7640:7:23","memberName":"Private","nodeType":"MemberAccess","referencedDeclaration":12662,"src":"7605:42:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"src":"7581:66:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":9201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7651:46:23","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9194,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"7652:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9195,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7654:18:23","memberName":"invitationEligible","nodeType":"MemberAccess","referencedDeclaration":12594,"src":"7652:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":9197,"indexExpression":{"id":9196,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"7673:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7652:33:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9200,"indexExpression":{"expression":{"id":9198,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7686:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7690:6:23","memberName":"sender","nodeType":"MemberAccess","src":"7686:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7652:45:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7581:116:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9212,"nodeType":"IfStatement","src":"7577:191:23","trueBody":{"id":9211,"nodeType":"Block","src":"7699:69:23","statements":[{"errorCall":{"arguments":[{"id":9206,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"7737:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9207,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7750:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7754:6:23","memberName":"sender","nodeType":"MemberAccess","src":"7750:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9203,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"7714:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7726:10:23","memberName":"NotInvited","nodeType":"MemberAccess","referencedDeclaration":13287,"src":"7714:22:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":9209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7714:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9210,"nodeType":"RevertStatement","src":"7707:54:23"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"},"id":9223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9213,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"7778:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7780:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"7778:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":9216,"indexExpression":{"id":9215,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"7798:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7778:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":9219,"indexExpression":{"expression":{"id":9217,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7811:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7815:6:23","memberName":"sender","nodeType":"MemberAccess","src":"7811:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7778:44:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9220,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"7826:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7841:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"7826:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":9222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7859:6:23","memberName":"Joined","nodeType":"MemberAccess","referencedDeclaration":12682,"src":"7826:39:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"7778:87:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9233,"nodeType":"IfStatement","src":"7774:172:23","trueBody":{"id":9232,"nodeType":"Block","src":"7867:79:23","statements":[{"errorCall":{"arguments":[{"id":9227,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"7915:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9228,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7928:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7932:6:23","memberName":"sender","nodeType":"MemberAccess","src":"7928:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9224,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"7882:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7894:20:23","memberName":"AlreadyParticipating","nodeType":"MemberAccess","referencedDeclaration":13275,"src":"7882:32:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":9230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7882:57:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9231,"nodeType":"RevertStatement","src":"7875:64:23"}]}},{"expression":{"arguments":[{"id":9235,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"8080:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},{"expression":{"id":9236,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8083:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8087:6:23","memberName":"sender","nodeType":"MemberAccess","src":"8083:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9234,"name":"_requirePerson","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"8065:14:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ChallengesStorage_$12643_storage_ptr_$_t_address_$returns$__$","typeString":"function (struct ChallengeStorageTypes.ChallengesStorage storage pointer,address) view"}},"id":9238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8065:29:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9239,"nodeType":"ExpressionStatement","src":"8065:29:23"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":9245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9240,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"8214:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8224:13:23","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12752,"src":"8214:23:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9242,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"8241:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8256:13:23","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"8241:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":9244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8270:10:23","memberName":"MaxActions","nodeType":"MemberAccess","referencedDeclaration":12665,"src":"8241:39:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"8214:66:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9246,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"8290:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8300:12:23","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"8290:22:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8313:6:23","memberName":"length","nodeType":"MemberAccess","src":"8290:29:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":9249,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"8323:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8325:15:23","memberName":"maxParticipants","nodeType":"MemberAccess","referencedDeclaration":12576,"src":"8323:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8290:50:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8214:126:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9266,"nodeType":"IfStatement","src":"8203:255:23","trueBody":{"id":9265,"nodeType":"Block","src":"8347:111:23","statements":[{"errorCall":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9256,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"8398:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8408:12:23","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"8398:22:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8421:6:23","memberName":"length","nodeType":"MemberAccess","src":"8398:29:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8430:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8398:33:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9261,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"8433:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8435:15:23","memberName":"maxParticipants","nodeType":"MemberAccess","referencedDeclaration":12576,"src":"8433:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9253,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"8362:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8374:23:23","memberName":"MaxParticipantsExceeded","nodeType":"MemberAccess","referencedDeclaration":13218,"src":"8362:35:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":9263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8362:89:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9264,"nodeType":"RevertStatement","src":"8355:96:23"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"id":9272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9267,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"8468:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8478:4:23","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"8468:14:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9269,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"8486:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8501:13:23","memberName":"ChallengeKind","nodeType":"MemberAccess","referencedDeclaration":12660,"src":"8486:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeKind_$12660_$","typeString":"type(enum ChallengeTypes.ChallengeKind)"}},"id":9271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8515:5:23","memberName":"Stake","nodeType":"MemberAccess","referencedDeclaration":12658,"src":"8486:34:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"src":"8468:52:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9300,"nodeType":"IfStatement","src":"8464:237:23","trueBody":{"id":9299,"nodeType":"Block","src":"8522:179:23","statements":[{"expression":{"id":9278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9273,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"8530:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8540:10:23","memberName":"totalPrize","nodeType":"MemberAccess","referencedDeclaration":12776,"src":"8530:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":9276,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"8554:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9277,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8564:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"8554:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8530:45:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9279,"nodeType":"ExpressionStatement","src":"8530:45:23"},{"condition":{"id":9292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8587:70:23","subExpression":{"arguments":[{"expression":{"id":9283,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8608:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8612:6:23","memberName":"sender","nodeType":"MemberAccess","src":"8608:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9287,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8628:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_ChallengeCoreLogic_$10968","typeString":"library ChallengeCoreLogic"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChallengeCoreLogic_$10968","typeString":"library ChallengeCoreLogic"}],"id":9286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8620:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9285,"name":"address","nodeType":"ElementaryTypeName","src":"8620:7:23","typeDescriptions":{}}},"id":9288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8620:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9289,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"8635:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8645:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"8635:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":9280,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"8588:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8590:4:23","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"8588:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":9282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8595:12:23","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":13127,"src":"8588:19:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":9291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8588:69:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9298,"nodeType":"IfStatement","src":"8583:111:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9293,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"8666:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8678:14:23","memberName":"TransferFailed","nodeType":"MemberAccess","referencedDeclaration":13319,"src":"8666:26:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8666:28:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9297,"nodeType":"RevertStatement","src":"8659:35:23"}}]}},{"expression":{"arguments":[{"id":9302,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"8735:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9303,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8748:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8752:6:23","memberName":"sender","nodeType":"MemberAccess","src":"8748:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9301,"name":"_removeFromInvitedIfPresent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10753,"src":"8707:27:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8707:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9306,"nodeType":"ExpressionStatement","src":"8707:52:23"},{"expression":{"arguments":[{"id":9308,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"8794:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9309,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8807:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8811:6:23","memberName":"sender","nodeType":"MemberAccess","src":"8807:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9307,"name":"_removeFromDeclinedIfPresent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10856,"src":"8765:28:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:53:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9312,"nodeType":"ExpressionStatement","src":"8765:53:23"},{"expression":{"arguments":[{"id":9314,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"8840:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9315,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8853:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8857:6:23","memberName":"sender","nodeType":"MemberAccess","src":"8853:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9313,"name":"_addParticipant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10378,"src":"8824:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8824:40:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9318,"nodeType":"ExpressionStatement","src":"8824:40:23"},{"eventCall":{"arguments":[{"id":9320,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"8892:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9321,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8905:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8909:6:23","memberName":"sender","nodeType":"MemberAccess","src":"8905:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9319,"name":"ChallengeJoined","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8666,"src":"8876:15:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8876:40:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9324,"nodeType":"EmitStatement","src":"8871:45:23"}]},"documentation":{"id":9148,"nodeType":"StructuredDocumentation","src":"7103:85:23","text":"@notice Joins a pending challenge.\n @param challengeId Challenge identifier."},"functionSelector":"e448ee26","id":9326,"implemented":true,"kind":"function","modifiers":[],"name":"joinChallenge","nameLocation":"7200:13:23","nodeType":"FunctionDefinition","parameters":{"id":9151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9150,"mutability":"mutable","name":"challengeId","nameLocation":"7222:11:23","nodeType":"VariableDeclaration","scope":9326,"src":"7214:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9149,"name":"uint256","nodeType":"ElementaryTypeName","src":"7214:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7213:21:23"},"returnParameters":{"id":9152,"nodeType":"ParameterList","parameters":[],"src":"7244:0:23"},"scope":10968,"src":"7191:1730:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9459,"nodeType":"Block","src":"9096:1042:23","statements":[{"assignments":[9336],"declarations":[{"constant":false,"id":9336,"mutability":"mutable","name":"$","nameLocation":"9150:1:23","nodeType":"VariableDeclaration","scope":9459,"src":"9102:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":9335,"nodeType":"UserDefinedTypeName","pathNode":{"id":9334,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["9102:21:23","9124:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"9102:39:23"},"referencedDeclaration":12643,"src":"9102:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":9340,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9337,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"9154:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":9338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9176:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"9154:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":9339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9154:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9102:96:23"},{"assignments":[9345],"declarations":[{"constant":false,"id":9345,"mutability":"mutable","name":"challenge","nameLocation":"9237:9:23","nodeType":"VariableDeclaration","scope":9459,"src":"9204:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":9344,"nodeType":"UserDefinedTypeName","pathNode":{"id":9343,"name":"ChallengeTypes.Challenge","nameLocations":["9204:14:23","9219:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"9204:24:23"},"referencedDeclaration":12806,"src":"9204:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":9349,"initialValue":{"arguments":[{"id":9347,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"9263:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9346,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10967,"src":"9249:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":9348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9249:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9204:71:23"},{"expression":{"arguments":[{"id":9351,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"9306:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9352,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9345,"src":"9319:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}],"id":9350,"name":"_ensurePendingChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"9282:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_Challenge_$12806_storage_ptr_$returns$__$","typeString":"function (uint256,struct ChallengeTypes.Challenge storage pointer) view"}},"id":9353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9282:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9354,"nodeType":"ExpressionStatement","src":"9282:47:23"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9355,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9340:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9344:6:23","memberName":"sender","nodeType":"MemberAccess","src":"9340:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9357,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9345,"src":"9354:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9364:7:23","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"9354:17:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9340:31:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9366,"nodeType":"IfStatement","src":"9336:87:23","trueBody":{"errorCall":{"arguments":[{"id":9363,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"9411:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9360,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"9380:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9392:18:23","memberName":"CreatorCannotLeave","nodeType":"MemberAccess","referencedDeclaration":13269,"src":"9380:30:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9380:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9365,"nodeType":"RevertStatement","src":"9373:50:23"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"},"id":9377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9367,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9336,"src":"9433:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9368,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9435:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"9433:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":9370,"indexExpression":{"id":9369,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"9453:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9433:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":9373,"indexExpression":{"expression":{"id":9371,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9466:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9470:6:23","memberName":"sender","nodeType":"MemberAccess","src":"9466:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9433:44:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":9374,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"9481:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9496:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"9481:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":9376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9514:6:23","memberName":"Joined","nodeType":"MemberAccess","referencedDeclaration":12682,"src":"9481:39:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"9433:87:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9387,"nodeType":"IfStatement","src":"9429:168:23","trueBody":{"id":9386,"nodeType":"Block","src":"9522:75:23","statements":[{"errorCall":{"arguments":[{"id":9381,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"9566:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9382,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9579:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9583:6:23","memberName":"sender","nodeType":"MemberAccess","src":"9579:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9378,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"9537:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9549:16:23","memberName":"NotParticipating","nodeType":"MemberAccess","referencedDeclaration":13281,"src":"9537:28:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":9384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9537:53:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9385,"nodeType":"RevertStatement","src":"9530:60:23"}]}},{"expression":{"arguments":[{"id":9389,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"9622:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9390,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9635:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9639:6:23","memberName":"sender","nodeType":"MemberAccess","src":"9635:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9388,"name":"_removeParticipant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10486,"src":"9603:18:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9603:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9393,"nodeType":"ExpressionStatement","src":"9603:43:23"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"id":9399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9394,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9345,"src":"9657:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9667:4:23","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"9657:14:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9396,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"9675:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9690:13:23","memberName":"ChallengeKind","nodeType":"MemberAccess","referencedDeclaration":12660,"src":"9675:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeKind_$12660_$","typeString":"type(enum ChallengeTypes.ChallengeKind)"}},"id":9398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9704:5:23","memberName":"Stake","nodeType":"MemberAccess","referencedDeclaration":12658,"src":"9675:34:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"src":"9657:52:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9423,"nodeType":"IfStatement","src":"9653:218:23","trueBody":{"id":9422,"nodeType":"Block","src":"9711:160:23","statements":[{"expression":{"id":9405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9400,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9345,"src":"9719:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9402,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9729:10:23","memberName":"totalPrize","nodeType":"MemberAccess","referencedDeclaration":12776,"src":"9719:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"expression":{"id":9403,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9345,"src":"9743:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9753:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"9743:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9719:45:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9406,"nodeType":"ExpressionStatement","src":"9719:45:23"},{"condition":{"id":9415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9776:51:23","subExpression":{"arguments":[{"expression":{"id":9410,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9793:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9797:6:23","memberName":"sender","nodeType":"MemberAccess","src":"9793:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9412,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9345,"src":"9805:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9815:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"9805:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":9407,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9336,"src":"9777:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9779:4:23","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"9777:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":9409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9784:8:23","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13116,"src":"9777:15:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":9414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9777:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9421,"nodeType":"IfStatement","src":"9772:92:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9416,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"9836:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9848:14:23","memberName":"TransferFailed","nodeType":"MemberAccess","referencedDeclaration":13319,"src":"9836:26:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9836:28:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9420,"nodeType":"RevertStatement","src":"9829:35:23"}}]}},{"condition":{"baseExpression":{"baseExpression":{"expression":{"id":9424,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9336,"src":"9881:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9883:18:23","memberName":"invitationEligible","nodeType":"MemberAccess","referencedDeclaration":12594,"src":"9881:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":9427,"indexExpression":{"id":9426,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"9902:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9881:33:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9430,"indexExpression":{"expression":{"id":9428,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9915:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9919:6:23","memberName":"sender","nodeType":"MemberAccess","src":"9915:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9881:45:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9451,"nodeType":"Block","src":"9985:99:23","statements":[{"expression":{"id":9449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":9438,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9336,"src":"9993:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9995:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"9993:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":9444,"indexExpression":{"id":9440,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"10013:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9993:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":9445,"indexExpression":{"expression":{"id":9441,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10026:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10030:6:23","memberName":"sender","nodeType":"MemberAccess","src":"10026:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9993:44:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":9446,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"10040:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10055:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"10040:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":9448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10073:4:23","memberName":"None","nodeType":"MemberAccess","referencedDeclaration":12679,"src":"10040:37:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"9993:84:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"id":9450,"nodeType":"ExpressionStatement","src":"9993:84:23"}]},"id":9452,"nodeType":"IfStatement","src":"9877:207:23","trueBody":{"id":9437,"nodeType":"Block","src":"9928:51:23","statements":[{"expression":{"arguments":[{"id":9432,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"9948:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9433,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9961:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9965:6:23","memberName":"sender","nodeType":"MemberAccess","src":"9961:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9431,"name":"_addInvited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10568,"src":"9936:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9936:36:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9436,"nodeType":"ExpressionStatement","src":"9936:36:23"}]}},{"eventCall":{"arguments":[{"id":9454,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"10109:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9455,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10122:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10126:6:23","memberName":"sender","nodeType":"MemberAccess","src":"10122:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9453,"name":"ChallengeLeft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8673,"src":"10095:13:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10095:38:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9458,"nodeType":"EmitStatement","src":"10090:43:23"}]},"documentation":{"id":9327,"nodeType":"StructuredDocumentation","src":"8925:114:23","text":"@notice Leaves a pending challenge before the challenge starts.\n @param challengeId Challenge identifier."},"functionSelector":"67fc8c89","id":9460,"implemented":true,"kind":"function","modifiers":[],"name":"leaveChallenge","nameLocation":"9051:14:23","nodeType":"FunctionDefinition","parameters":{"id":9330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9329,"mutability":"mutable","name":"challengeId","nameLocation":"9074:11:23","nodeType":"VariableDeclaration","scope":9460,"src":"9066:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9328,"name":"uint256","nodeType":"ElementaryTypeName","src":"9066:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9065:21:23"},"returnParameters":{"id":9331,"nodeType":"ParameterList","parameters":[],"src":"9096:0:23"},"scope":10968,"src":"9042:1096:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9592,"nodeType":"Block","src":"10300:1055:23","statements":[{"assignments":[9470],"declarations":[{"constant":false,"id":9470,"mutability":"mutable","name":"$","nameLocation":"10354:1:23","nodeType":"VariableDeclaration","scope":9592,"src":"10306:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":9469,"nodeType":"UserDefinedTypeName","pathNode":{"id":9468,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["10306:21:23","10328:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"10306:39:23"},"referencedDeclaration":12643,"src":"10306:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":9474,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9471,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"10358:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":9472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10380:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"10358:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":9473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10358:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10306:96:23"},{"assignments":[9479],"declarations":[{"constant":false,"id":9479,"mutability":"mutable","name":"challenge","nameLocation":"10441:9:23","nodeType":"VariableDeclaration","scope":9592,"src":"10408:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":9478,"nodeType":"UserDefinedTypeName","pathNode":{"id":9477,"name":"ChallengeTypes.Challenge","nameLocations":["10408:14:23","10423:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"10408:24:23"},"referencedDeclaration":12806,"src":"10408:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":9483,"initialValue":{"arguments":[{"id":9481,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"10467:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9480,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10967,"src":"10453:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":9482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10453:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10408:71:23"},{"expression":{"arguments":[{"id":9485,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"10510:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9486,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"10523:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}],"id":9484,"name":"_ensurePendingChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"10486:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_Challenge_$12806_storage_ptr_$returns$__$","typeString":"function (uint256,struct ChallengeTypes.Challenge storage pointer) view"}},"id":9487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10486:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9488,"nodeType":"ExpressionStatement","src":"10486:47:23"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9489,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10544:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10548:6:23","memberName":"sender","nodeType":"MemberAccess","src":"10544:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9491,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"10558:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10568:7:23","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"10558:17:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10544:31:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9501,"nodeType":"IfStatement","src":"10540:94:23","trueBody":{"errorCall":{"arguments":[{"expression":{"id":9497,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10623:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10627:6:23","memberName":"sender","nodeType":"MemberAccess","src":"10623:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9494,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"10584:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10596:26:23","memberName":"ChallengesUnauthorizedUser","nodeType":"MemberAccess","referencedDeclaration":13329,"src":"10584:38:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":9499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10584:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9500,"nodeType":"RevertStatement","src":"10577:57:23"}},{"condition":{"id":9509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10644:46:23","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9502,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9470,"src":"10645:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10647:18:23","memberName":"invitationEligible","nodeType":"MemberAccess","referencedDeclaration":12594,"src":"10645:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":9505,"indexExpression":{"id":9504,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"10666:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10645:33:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9508,"indexExpression":{"expression":{"id":9506,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10679:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10683:6:23","memberName":"sender","nodeType":"MemberAccess","src":"10679:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10645:45:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9518,"nodeType":"IfStatement","src":"10640:106:23","trueBody":{"errorCall":{"arguments":[{"id":9513,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"10722:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9514,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10735:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10739:6:23","memberName":"sender","nodeType":"MemberAccess","src":"10735:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9510,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"10699:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10711:10:23","memberName":"NotInvited","nodeType":"MemberAccess","referencedDeclaration":13287,"src":"10699:22:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":9516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10699:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9517,"nodeType":"RevertStatement","src":"10692:54:23"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"},"id":9529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9519,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9470,"src":"10757:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10759:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"10757:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":9522,"indexExpression":{"id":9521,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"10777:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10757:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":9525,"indexExpression":{"expression":{"id":9523,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10790:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10794:6:23","memberName":"sender","nodeType":"MemberAccess","src":"10790:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10757:44:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9526,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"10805:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10820:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"10805:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":9528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10838:6:23","memberName":"Joined","nodeType":"MemberAccess","referencedDeclaration":12682,"src":"10805:39:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"10757:87:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9567,"nodeType":"IfStatement","src":"10753:383:23","trueBody":{"id":9566,"nodeType":"Block","src":"10846:290:23","statements":[{"expression":{"arguments":[{"id":9531,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"10873:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9532,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10886:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10890:6:23","memberName":"sender","nodeType":"MemberAccess","src":"10886:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9530,"name":"_removeParticipant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10486,"src":"10854:18:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10854:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9535,"nodeType":"ExpressionStatement","src":"10854:43:23"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"id":9541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9536,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"10910:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9537,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10920:4:23","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"10910:14:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9538,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"10928:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10943:13:23","memberName":"ChallengeKind","nodeType":"MemberAccess","referencedDeclaration":12660,"src":"10928:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeKind_$12660_$","typeString":"type(enum ChallengeTypes.ChallengeKind)"}},"id":9540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10957:5:23","memberName":"Stake","nodeType":"MemberAccess","referencedDeclaration":12658,"src":"10928:34:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"src":"10910:52:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9565,"nodeType":"IfStatement","src":"10906:224:23","trueBody":{"id":9564,"nodeType":"Block","src":"10964:166:23","statements":[{"expression":{"id":9547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9542,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"10974:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10984:10:23","memberName":"totalPrize","nodeType":"MemberAccess","referencedDeclaration":12776,"src":"10974:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"expression":{"id":9545,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"10998:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11008:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"10998:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10974:45:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9548,"nodeType":"ExpressionStatement","src":"10974:45:23"},{"condition":{"id":9557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11033:51:23","subExpression":{"arguments":[{"expression":{"id":9552,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11050:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11054:6:23","memberName":"sender","nodeType":"MemberAccess","src":"11050:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9554,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"11062:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11072:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"11062:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":9549,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9470,"src":"11034:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":9550,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11036:4:23","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"11034:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":9551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11041:8:23","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13116,"src":"11034:15:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":9556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11034:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9563,"nodeType":"IfStatement","src":"11029:92:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9558,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"11093:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11105:14:23","memberName":"TransferFailed","nodeType":"MemberAccess","referencedDeclaration":13319,"src":"11093:26:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11093:28:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9562,"nodeType":"RevertStatement","src":"11086:35:23"}}]}}]}},{"expression":{"arguments":[{"id":9569,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"11170:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9570,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11183:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11187:6:23","memberName":"sender","nodeType":"MemberAccess","src":"11183:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9568,"name":"_removeFromInvitedIfPresent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10753,"src":"11142:27:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11142:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9573,"nodeType":"ExpressionStatement","src":"11142:52:23"},{"expression":{"arguments":[{"id":9575,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"11229:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9576,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11242:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11246:6:23","memberName":"sender","nodeType":"MemberAccess","src":"11242:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9574,"name":"_removeFromDeclinedIfPresent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10856,"src":"11200:28:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11200:53:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9579,"nodeType":"ExpressionStatement","src":"11200:53:23"},{"expression":{"arguments":[{"id":9581,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"11272:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9582,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11285:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11289:6:23","memberName":"sender","nodeType":"MemberAccess","src":"11285:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9580,"name":"_addDeclined","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10650,"src":"11259:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11259:37:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9585,"nodeType":"ExpressionStatement","src":"11259:37:23"},{"eventCall":{"arguments":[{"id":9587,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"11326:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9588,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11339:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11343:6:23","memberName":"sender","nodeType":"MemberAccess","src":"11339:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9586,"name":"ChallengeDeclined","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8680,"src":"11308:17:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11308:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9591,"nodeType":"EmitStatement","src":"11303:47:23"}]},"documentation":{"id":9461,"nodeType":"StructuredDocumentation","src":"10142:99:23","text":"@notice Declines a pending challenge invitation.\n @param challengeId Challenge identifier."},"functionSelector":"0012462a","id":9593,"implemented":true,"kind":"function","modifiers":[],"name":"declineChallenge","nameLocation":"10253:16:23","nodeType":"FunctionDefinition","parameters":{"id":9464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9463,"mutability":"mutable","name":"challengeId","nameLocation":"10278:11:23","nodeType":"VariableDeclaration","scope":9593,"src":"10270:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9462,"name":"uint256","nodeType":"ElementaryTypeName","src":"10270:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10269:21:23"},"returnParameters":{"id":9465,"nodeType":"ParameterList","parameters":[],"src":"10300:0:23"},"scope":10968,"src":"10244:1111:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9638,"nodeType":"Block","src":"11504:346:23","statements":[{"assignments":[9603],"declarations":[{"constant":false,"id":9603,"mutability":"mutable","name":"challenge","nameLocation":"11543:9:23","nodeType":"VariableDeclaration","scope":9638,"src":"11510:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":9602,"nodeType":"UserDefinedTypeName","pathNode":{"id":9601,"name":"ChallengeTypes.Challenge","nameLocations":["11510:14:23","11525:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"11510:24:23"},"referencedDeclaration":12806,"src":"11510:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":9607,"initialValue":{"arguments":[{"id":9605,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"11569:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9604,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10967,"src":"11555:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":9606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11555:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11510:71:23"},{"expression":{"arguments":[{"id":9609,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"11612:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9610,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"11625:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}],"id":9608,"name":"_ensurePendingChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"11588:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_Challenge_$12806_storage_ptr_$returns$__$","typeString":"function (uint256,struct ChallengeTypes.Challenge storage pointer) view"}},"id":9611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11588:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9612,"nodeType":"ExpressionStatement","src":"11588:47:23"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9613,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11646:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11650:6:23","memberName":"sender","nodeType":"MemberAccess","src":"11646:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":9615,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"11660:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11670:7:23","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"11660:17:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11646:31:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9625,"nodeType":"IfStatement","src":"11642:94:23","trueBody":{"errorCall":{"arguments":[{"expression":{"id":9621,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11725:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11729:6:23","memberName":"sender","nodeType":"MemberAccess","src":"11725:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9618,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"11686:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11698:26:23","memberName":"ChallengesUnauthorizedUser","nodeType":"MemberAccess","referencedDeclaration":13329,"src":"11686:38:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":9623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11686:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9624,"nodeType":"RevertStatement","src":"11679:57:23"}},{"expression":{"id":9632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9626,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9603,"src":"11743:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11753:6:23","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"11743:16:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":9629,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"11762:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11777:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"11762:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":9631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11793:9:23","memberName":"Cancelled","nodeType":"MemberAccess","referencedDeclaration":12671,"src":"11762:40:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"11743:59:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"id":9633,"nodeType":"ExpressionStatement","src":"11743:59:23"},{"eventCall":{"arguments":[{"id":9635,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"11833:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9634,"name":"ChallengeCancelled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8685,"src":"11814:18:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11814:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9637,"nodeType":"EmitStatement","src":"11809:36:23"}]},"documentation":{"id":9594,"nodeType":"StructuredDocumentation","src":"11359:87:23","text":"@notice Cancels a pending challenge.\n @param challengeId Challenge identifier."},"functionSelector":"a41483e3","id":9639,"implemented":true,"kind":"function","modifiers":[],"name":"cancelChallenge","nameLocation":"11458:15:23","nodeType":"FunctionDefinition","parameters":{"id":9597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9596,"mutability":"mutable","name":"challengeId","nameLocation":"11482:11:23","nodeType":"VariableDeclaration","scope":9639,"src":"11474:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9595,"name":"uint256","nodeType":"ElementaryTypeName","src":"11474:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11473:21:23"},"returnParameters":{"id":9598,"nodeType":"ParameterList","parameters":[],"src":"11504:0:23"},"scope":10968,"src":"11449:401:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9721,"nodeType":"Block","src":"12110:743:23","statements":[{"assignments":[9651],"declarations":[{"constant":false,"id":9651,"mutability":"mutable","name":"challenge","nameLocation":"12149:9:23","nodeType":"VariableDeclaration","scope":9721,"src":"12116:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":9650,"nodeType":"UserDefinedTypeName","pathNode":{"id":9649,"name":"ChallengeTypes.Challenge","nameLocations":["12116:14:23","12131:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"12116:24:23"},"referencedDeclaration":12806,"src":"12116:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":9655,"initialValue":{"arguments":[{"id":9653,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"12175:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9652,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10967,"src":"12161:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":9654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12161:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12116:71:23"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":9661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9656,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9651,"src":"12198:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12208:6:23","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"12198:16:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":9658,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"12218:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12233:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"12218:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":9660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12249:7:23","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"12218:38:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"12198:58:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9669,"nodeType":"IfStatement","src":"12194:109:23","trueBody":{"id":9668,"nodeType":"Block","src":"12258:45:23","statements":[{"expression":{"arguments":[{"expression":{"id":9664,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9651,"src":"12279:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12289:6:23","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"12279:16:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"id":9663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12273:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":9662,"name":"uint8","nodeType":"ElementaryTypeName","src":"12273:5:23","typeDescriptions":{}}},"id":9666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12273:23:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9646,"id":9667,"nodeType":"Return","src":"12266:30:23"}]}},{"assignments":[9674],"declarations":[{"constant":false,"id":9674,"mutability":"mutable","name":"computed","nameLocation":"12443:8:23","nodeType":"VariableDeclaration","scope":9721,"src":"12412:39:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"typeName":{"id":9673,"nodeType":"UserDefinedTypeName","pathNode":{"id":9672,"name":"ChallengeTypes.ChallengeStatus","nameLocations":["12412:14:23","12427:15:23"],"nodeType":"IdentifierPath","referencedDeclaration":12673,"src":"12412:30:23"},"referencedDeclaration":12673,"src":"12412:30:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"visibility":"internal"}],"id":9681,"initialValue":{"arguments":[{"arguments":[{"id":9678,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"12503:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9677,"name":"getComputedStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9792,"src":"12485:17:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) view returns (uint8)"}},"id":9679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12485:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":9675,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"12454:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12469:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"12454:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":9680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12454:62:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"VariableDeclarationStatement","src":"12412:104:23"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":9686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9682,"name":"computed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"12526:8:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9683,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"12538:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12553:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"12538:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":9685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12569:7:23","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"12538:38:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"12526:50:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9693,"nodeType":"IfStatement","src":"12522:93:23","trueBody":{"id":9692,"nodeType":"Block","src":"12578:37:23","statements":[{"expression":{"arguments":[{"id":9689,"name":"computed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"12599:8:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"id":9688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12593:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":9687,"name":"uint8","nodeType":"ElementaryTypeName","src":"12593:5:23","typeDescriptions":{}}},"id":9690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12593:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9646,"id":9691,"nodeType":"Return","src":"12586:22:23"}]}},{"expression":{"id":9698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9694,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9651,"src":"12621:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12631:6:23","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"12621:16:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9697,"name":"computed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"12640:8:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"12621:27:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"id":9699,"nodeType":"ExpressionStatement","src":"12621:27:23"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":9704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9700,"name":"computed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"12659:8:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9701,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"12671:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12686:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"12671:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":9703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12702:6:23","memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":12669,"src":"12671:37:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"12659:49:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9714,"nodeType":"Block","src":"12767:53:23","statements":[{"eventCall":{"arguments":[{"id":9711,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"12801:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9710,"name":"ChallengeInvalidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8695,"src":"12780:20:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12780:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9713,"nodeType":"EmitStatement","src":"12775:38:23"}]},"id":9715,"nodeType":"IfStatement","src":"12655:165:23","trueBody":{"id":9709,"nodeType":"Block","src":"12710:51:23","statements":[{"eventCall":{"arguments":[{"id":9706,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"12742:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9705,"name":"ChallengeActivated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8690,"src":"12723:18:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12723:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9708,"nodeType":"EmitStatement","src":"12718:36:23"}]}},{"expression":{"arguments":[{"id":9718,"name":"computed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9674,"src":"12839:8:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"id":9717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12833:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":9716,"name":"uint8","nodeType":"ElementaryTypeName","src":"12833:5:23","typeDescriptions":{}}},"id":9719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12833:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9646,"id":9720,"nodeType":"Return","src":"12826:22:23"}]},"documentation":{"id":9640,"nodeType":"StructuredDocumentation","src":"11854:184:23","text":"@notice Syncs a pending challenge with the current round and participant state.\n @param challengeId Challenge identifier.\n @return Current persisted status after syncing."},"functionSelector":"b30f0584","id":9722,"implemented":true,"kind":"function","modifiers":[],"name":"syncChallenge","nameLocation":"12050:13:23","nodeType":"FunctionDefinition","parameters":{"id":9643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9642,"mutability":"mutable","name":"challengeId","nameLocation":"12072:11:23","nodeType":"VariableDeclaration","scope":9722,"src":"12064:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9641,"name":"uint256","nodeType":"ElementaryTypeName","src":"12064:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12063:21:23"},"returnParameters":{"id":9646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9645,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9722,"src":"12103:5:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9644,"name":"uint8","nodeType":"ElementaryTypeName","src":"12103:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"12102:7:23"},"scope":10968,"src":"12041:812:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9791,"nodeType":"Block","src":"13123:547:23","statements":[{"assignments":[9734],"declarations":[{"constant":false,"id":9734,"mutability":"mutable","name":"$","nameLocation":"13177:1:23","nodeType":"VariableDeclaration","scope":9791,"src":"13129:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":9733,"nodeType":"UserDefinedTypeName","pathNode":{"id":9732,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["13129:21:23","13151:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"13129:39:23"},"referencedDeclaration":12643,"src":"13129:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":9738,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9735,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"13181:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":9736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13203:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"13181:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":9737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13181:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"13129:96:23"},{"assignments":[9743],"declarations":[{"constant":false,"id":9743,"mutability":"mutable","name":"challenge","nameLocation":"13264:9:23","nodeType":"VariableDeclaration","scope":9791,"src":"13231:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":9742,"nodeType":"UserDefinedTypeName","pathNode":{"id":9741,"name":"ChallengeTypes.Challenge","nameLocations":["13231:14:23","13246:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"13231:24:23"},"referencedDeclaration":12806,"src":"13231:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":9747,"initialValue":{"arguments":[{"id":9745,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9725,"src":"13290:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9744,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10967,"src":"13276:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":9746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13276:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"13231:71:23"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":9753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9748,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"13313:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13323:6:23","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"13313:16:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":9750,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13333:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13348:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"13333:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":9752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13364:7:23","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"13333:38:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"13313:58:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9761,"nodeType":"IfStatement","src":"13309:109:23","trueBody":{"id":9760,"nodeType":"Block","src":"13373:45:23","statements":[{"expression":{"arguments":[{"expression":{"id":9756,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"13394:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13404:6:23","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"13394:16:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"id":9755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13388:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":9754,"name":"uint8","nodeType":"ElementaryTypeName","src":"13388:5:23","typeDescriptions":{}}},"id":9758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13388:23:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9729,"id":9759,"nodeType":"Return","src":"13381:30:23"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9763,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9734,"src":"13442:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}],"id":9762,"name":"_currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10927,"src":"13428:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ChallengesStorage_$12643_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct ChallengeStorageTypes.ChallengesStorage storage pointer) view returns (uint256)"}},"id":9764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13428:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9765,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"13447:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":9766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13457:10:23","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"13447:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13428:39:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9776,"nodeType":"IfStatement","src":"13424:112:23","trueBody":{"id":9775,"nodeType":"Block","src":"13469:67:23","statements":[{"expression":{"arguments":[{"expression":{"expression":{"id":9770,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13490:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13505:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"13490:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":9772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13521:7:23","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"13490:38:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"id":9769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13484:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":9768,"name":"uint8","nodeType":"ElementaryTypeName","src":"13484:5:23","typeDescriptions":{}}},"id":9773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13484:45:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9729,"id":9774,"nodeType":"Return","src":"13477:52:23"}]}},{"expression":{"arguments":[{"condition":{"arguments":[{"id":9780,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"13573:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}],"id":9779,"name":"_isChallengeValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10913,"src":"13555:17:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Challenge_$12806_storage_ptr_$returns$_t_bool_$","typeString":"function (struct ChallengeTypes.Challenge storage pointer) view returns (bool)"}},"id":9781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13555:28:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"expression":{"id":9785,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13626:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13641:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"13626:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":9787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13657:7:23","memberName":"Invalid","nodeType":"MemberAccess","referencedDeclaration":12672,"src":"13626:38:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"id":9788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13555:109:23","trueExpression":{"expression":{"expression":{"id":9782,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13586:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13601:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"13586:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":9784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13617:6:23","memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":12669,"src":"13586:37:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"id":9778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13549:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":9777,"name":"uint8","nodeType":"ElementaryTypeName","src":"13549:5:23","typeDescriptions":{}}},"id":9789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13549:116:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":9729,"id":9790,"nodeType":"Return","src":"13542:123:23"}]},"documentation":{"id":9723,"nodeType":"StructuredDocumentation","src":"12857:187:23","text":"@notice Computes the latest status for a challenge without mutating storage.\n @param challengeId Challenge identifier.\n @return Computed challenge status encoded as `uint8`."},"functionSelector":"9ed14864","id":9792,"implemented":true,"kind":"function","modifiers":[],"name":"getComputedStatus","nameLocation":"13056:17:23","nodeType":"FunctionDefinition","parameters":{"id":9726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9725,"mutability":"mutable","name":"challengeId","nameLocation":"13082:11:23","nodeType":"VariableDeclaration","scope":9792,"src":"13074:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9724,"name":"uint256","nodeType":"ElementaryTypeName","src":"13074:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13073:21:23"},"returnParameters":{"id":9729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9728,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9792,"src":"13116:5:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9727,"name":"uint8","nodeType":"ElementaryTypeName","src":"13116:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"13115:7:23"},"scope":10968,"src":"13047:623:23","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":9924,"nodeType":"Block","src":"14295:1437:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"id":9804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9799,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"14305:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14312:4:23","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12686,"src":"14305:11:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9801,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"14320:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14335:13:23","memberName":"ChallengeKind","nodeType":"MemberAccess","referencedDeclaration":12660,"src":"14320:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeKind_$12660_$","typeString":"type(enum ChallengeTypes.ChallengeKind)"}},"id":9803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14349:5:23","memberName":"Stake","nodeType":"MemberAccess","referencedDeclaration":12658,"src":"14320:34:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"src":"14305:49:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9846,"nodeType":"Block","src":"14693:332:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},"id":9831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9826,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"14807:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14814:10:23","memberName":"visibility","nodeType":"MemberAccess","referencedDeclaration":12689,"src":"14807:17:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9828,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"14828:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14843:19:23","memberName":"ChallengeVisibility","nodeType":"MemberAccess","referencedDeclaration":12663,"src":"14828:34:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeVisibility_$12663_$","typeString":"type(enum ChallengeTypes.ChallengeVisibility)"}},"id":9830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14863:6:23","memberName":"Public","nodeType":"MemberAccess","referencedDeclaration":12661,"src":"14828:41:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"src":"14807:62:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":9837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9832,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"14881:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14888:13:23","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12692,"src":"14881:20:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":9834,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"14905:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14920:13:23","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"14905:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":9836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14934:8:23","memberName":"SplitWin","nodeType":"MemberAccess","referencedDeclaration":12666,"src":"14905:37:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"14881:61:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14807:135:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9845,"nodeType":"IfStatement","src":"14794:225:23","trueBody":{"id":9844,"nodeType":"Block","src":"14951:68:23","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9839,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"14968:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14980:28:23","memberName":"InvalidChallengeTypeForCombo","nodeType":"MemberAccess","referencedDeclaration":13160,"src":"14968:40:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14968:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9843,"nodeType":"RevertStatement","src":"14961:49:23"}]}}]},"id":9847,"nodeType":"IfStatement","src":"14301:724:23","trueBody":{"id":9825,"nodeType":"Block","src":"14356:331:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},"id":9810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9805,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"14466:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14473:10:23","memberName":"visibility","nodeType":"MemberAccess","referencedDeclaration":12689,"src":"14466:17:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":9807,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"14487:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14502:19:23","memberName":"ChallengeVisibility","nodeType":"MemberAccess","referencedDeclaration":12663,"src":"14487:34:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeVisibility_$12663_$","typeString":"type(enum ChallengeTypes.ChallengeVisibility)"}},"id":9809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14522:7:23","memberName":"Private","nodeType":"MemberAccess","referencedDeclaration":12662,"src":"14487:42:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"src":"14466:63:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":9816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9811,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"14541:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9812,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14548:13:23","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12692,"src":"14541:20:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":9813,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"14565:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14580:13:23","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"14565:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":9815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14594:10:23","memberName":"MaxActions","nodeType":"MemberAccess","referencedDeclaration":12665,"src":"14565:39:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"14541:63:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14466:138:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9824,"nodeType":"IfStatement","src":"14453:228:23","trueBody":{"id":9823,"nodeType":"Block","src":"14613:68:23","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9818,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"14630:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14642:28:23","memberName":"InvalidChallengeTypeForCombo","nodeType":"MemberAccess","referencedDeclaration":13160,"src":"14630:40:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14630:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9822,"nodeType":"RevertStatement","src":"14623:49:23"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":9853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9848,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15035:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9849,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15042:13:23","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12692,"src":"15035:20:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9850,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"15059:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":9851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15074:13:23","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"15059:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":9852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15088:10:23","memberName":"MaxActions","nodeType":"MemberAccess","referencedDeclaration":12665,"src":"15059:39:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"15035:63:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9871,"nodeType":"IfStatement","src":"15031:196:23","trueBody":{"id":9870,"nodeType":"Block","src":"15100:127:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9854,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15112:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15119:9:23","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12700,"src":"15112:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15132:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15112:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9858,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15137:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15144:10:23","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12702,"src":"15137:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15158:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15137:22:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15112:47:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9868,"nodeType":"IfStatement","src":"15108:98:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9863,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"15168:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15180:24:23","memberName":"InvalidTypeConfiguration","nodeType":"MemberAccess","referencedDeclaration":13162,"src":"15168:36:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15168:38:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9867,"nodeType":"RevertStatement","src":"15161:45:23"}},{"functionReturnParameters":9798,"id":9869,"nodeType":"Return","src":"15214:7:23"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9872,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15280:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15287:9:23","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12700,"src":"15280:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15300:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15280:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9876,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15305:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9877,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15312:10:23","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12702,"src":"15305:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15326:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15305:22:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15280:47:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9886,"nodeType":"IfStatement","src":"15276:98:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9881,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"15336:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15348:24:23","memberName":"InvalidTypeConfiguration","nodeType":"MemberAccess","referencedDeclaration":13162,"src":"15336:36:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15336:38:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9885,"nodeType":"RevertStatement","src":"15329:45:23"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9887,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15384:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9888,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15391:9:23","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12700,"src":"15384:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9889,"name":"MAX_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8606,"src":"15403:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15384:32:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9900,"nodeType":"IfStatement","src":"15380:121:23","trueBody":{"id":9899,"nodeType":"Block","src":"15418:83:23","statements":[{"errorCall":{"arguments":[{"expression":{"id":9894,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15462:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9895,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15469:9:23","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12700,"src":"15462:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9896,"name":"MAX_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8606,"src":"15480:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9891,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"15433:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15445:16:23","memberName":"ThresholdTooHigh","nodeType":"MemberAccess","referencedDeclaration":13176,"src":"15433:28:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":9897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15433:61:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9898,"nodeType":"RevertStatement","src":"15426:68:23"}]}},{"assignments":[9902],"declarations":[{"constant":false,"id":9902,"mutability":"mutable","name":"minStake","nameLocation":"15515:8:23","nodeType":"VariableDeclaration","scope":9924,"src":"15507:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9901,"name":"uint256","nodeType":"ElementaryTypeName","src":"15507:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9907,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9903,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15526:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15533:10:23","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12702,"src":"15526:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9905,"name":"MIN_PRIZE_PER_WINNER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"15546:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15526:40:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15507:59:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9908,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15576:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15583:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12694,"src":"15576:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9910,"name":"minStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9902,"src":"15597:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15576:29:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9923,"nodeType":"IfStatement","src":"15572:156:23","trueBody":{"id":9922,"nodeType":"Block","src":"15607:121:23","statements":[{"errorCall":{"arguments":[{"expression":{"id":9915,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15661:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9916,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15668:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12694,"src":"15661:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9917,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"15681:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15688:10:23","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12702,"src":"15681:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9919,"name":"MIN_PRIZE_PER_WINNER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"15700:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9912,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"15622:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15634:26:23","memberName":"InsufficientPrizePerWinner","nodeType":"MemberAccess","referencedDeclaration":13170,"src":"15622:38:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":9920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15622:99:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9921,"nodeType":"RevertStatement","src":"15615:106:23"}]}}]},"documentation":{"id":9793,"nodeType":"StructuredDocumentation","src":"13674:517:23","text":"@dev Enforces the allowed (kind, visibility, challengeType) matrix and per-type field constraints.\n Allowed combinations:\n - Stake + Private + MaxActions (no threshold, no numWinners)\n - Sponsored + Public + SplitWin (0 < threshold <= MAX_THRESHOLD, numWinners > 0, stakeAmount >= numWinners * 1 ether)\n - Sponsored + Private + MaxActions (no threshold, no numWinners)\n - Sponsored + Private + SplitWin (0 < threshold <= MAX_THRESHOLD, numWinners > 0, stakeAmount >= numWinners * 1 ether)"},"id":9925,"implemented":true,"kind":"function","modifiers":[],"name":"_validateTypeConfiguration","nameLocation":"14203:26:23","nodeType":"FunctionDefinition","parameters":{"id":9797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9796,"mutability":"mutable","name":"params","nameLocation":"14274:6:23","nodeType":"VariableDeclaration","scope":9925,"src":"14230:50:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"},"typeName":{"id":9795,"nodeType":"UserDefinedTypeName","pathNode":{"id":9794,"name":"ChallengeTypes.CreateChallengeParams","nameLocations":["14230:14:23","14245:21:23"],"nodeType":"IdentifierPath","referencedDeclaration":12717,"src":"14230:36:23"},"referencedDeclaration":12717,"src":"14230:36:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_storage_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"}},"visibility":"internal"}],"src":"14229:52:23"},"returnParameters":{"id":9798,"nodeType":"ParameterList","parameters":[],"src":"14295:0:23"},"scope":10968,"src":"14194:1538:23","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":10014,"nodeType":"Block","src":"15835:783:23","statements":[{"assignments":[9932],"declarations":[{"constant":false,"id":9932,"mutability":"mutable","name":"titleLength","nameLocation":"15849:11:23","nodeType":"VariableDeclaration","scope":10014,"src":"15841:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9931,"name":"uint256","nodeType":"ElementaryTypeName","src":"15841:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9939,"initialValue":{"expression":{"arguments":[{"expression":{"id":9935,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9928,"src":"15869:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15876:5:23","memberName":"title","nodeType":"MemberAccess","referencedDeclaration":12710,"src":"15869:12:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15863:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9933,"name":"bytes","nodeType":"ElementaryTypeName","src":"15863:5:23","typeDescriptions":{}}},"id":9937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15863:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15883:6:23","memberName":"length","nodeType":"MemberAccess","src":"15863:26:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15841:48:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9940,"name":"titleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9932,"src":"15899:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9941,"name":"TITLE_MAX_BYTES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"15913:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15899:29:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9950,"nodeType":"IfStatement","src":"15895:96:23","trueBody":{"errorCall":{"arguments":[{"id":9946,"name":"titleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9932,"src":"15962:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9947,"name":"TITLE_MAX_BYTES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"15975:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9943,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"15937:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15949:12:23","memberName":"TitleTooLong","nodeType":"MemberAccess","referencedDeclaration":13182,"src":"15937:24:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":9948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15937:54:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9949,"nodeType":"RevertStatement","src":"15930:61:23"}},{"assignments":[9952],"declarations":[{"constant":false,"id":9952,"mutability":"mutable","name":"descriptionLength","nameLocation":"16006:17:23","nodeType":"VariableDeclaration","scope":10014,"src":"15998:25:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9951,"name":"uint256","nodeType":"ElementaryTypeName","src":"15998:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9959,"initialValue":{"expression":{"arguments":[{"expression":{"id":9955,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9928,"src":"16032:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16039:11:23","memberName":"description","nodeType":"MemberAccess","referencedDeclaration":12712,"src":"16032:18:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16026:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9953,"name":"bytes","nodeType":"ElementaryTypeName","src":"16026:5:23","typeDescriptions":{}}},"id":9957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16026:25:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16052:6:23","memberName":"length","nodeType":"MemberAccess","src":"16026:32:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15998:60:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9960,"name":"descriptionLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9952,"src":"16068:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9961,"name":"DESCRIPTION_MAX_BYTES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8594,"src":"16088:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16068:41:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9971,"nodeType":"IfStatement","src":"16064:141:23","trueBody":{"id":9970,"nodeType":"Block","src":"16111:94:23","statements":[{"errorCall":{"arguments":[{"id":9966,"name":"descriptionLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9952,"src":"16157:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9967,"name":"DESCRIPTION_MAX_BYTES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8594,"src":"16176:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9963,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"16126:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16138:18:23","memberName":"DescriptionTooLong","nodeType":"MemberAccess","referencedDeclaration":13188,"src":"16126:30:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":9968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16126:72:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9969,"nodeType":"RevertStatement","src":"16119:79:23"}]}},{"assignments":[9973],"declarations":[{"constant":false,"id":9973,"mutability":"mutable","name":"imageURILength","nameLocation":"16219:14:23","nodeType":"VariableDeclaration","scope":10014,"src":"16211:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9972,"name":"uint256","nodeType":"ElementaryTypeName","src":"16211:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9980,"initialValue":{"expression":{"arguments":[{"expression":{"id":9976,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9928,"src":"16242:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16249:8:23","memberName":"imageURI","nodeType":"MemberAccess","referencedDeclaration":12714,"src":"16242:15:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16236:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9974,"name":"bytes","nodeType":"ElementaryTypeName","src":"16236:5:23","typeDescriptions":{}}},"id":9978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16236:22:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16259:6:23","memberName":"length","nodeType":"MemberAccess","src":"16236:29:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16211:54:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9981,"name":"imageURILength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"16275:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9982,"name":"IMAGE_URI_MAX_BYTES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8597,"src":"16292:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16275:36:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9992,"nodeType":"IfStatement","src":"16271:128:23","trueBody":{"id":9991,"nodeType":"Block","src":"16313:86:23","statements":[{"errorCall":{"arguments":[{"id":9987,"name":"imageURILength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"16356:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9988,"name":"IMAGE_URI_MAX_BYTES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8597,"src":"16372:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9984,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"16328:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":9986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16340:15:23","memberName":"ImageURITooLong","nodeType":"MemberAccess","referencedDeclaration":13194,"src":"16328:27:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":9989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16328:64:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9990,"nodeType":"RevertStatement","src":"16321:71:23"}]}},{"assignments":[9994],"declarations":[{"constant":false,"id":9994,"mutability":"mutable","name":"metadataURILength","nameLocation":"16413:17:23","nodeType":"VariableDeclaration","scope":10014,"src":"16405:25:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9993,"name":"uint256","nodeType":"ElementaryTypeName","src":"16405:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10001,"initialValue":{"expression":{"arguments":[{"expression":{"id":9997,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9928,"src":"16439:6:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams memory"}},"id":9998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16446:11:23","memberName":"metadataURI","nodeType":"MemberAccess","referencedDeclaration":12716,"src":"16439:18:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16433:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9995,"name":"bytes","nodeType":"ElementaryTypeName","src":"16433:5:23","typeDescriptions":{}}},"id":9999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16433:25:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16459:6:23","memberName":"length","nodeType":"MemberAccess","src":"16433:32:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16405:60:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10002,"name":"metadataURILength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9994,"src":"16475:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":10003,"name":"METADATA_URI_MAX_BYTES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"16495:22:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16475:42:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10013,"nodeType":"IfStatement","src":"16471:143:23","trueBody":{"id":10012,"nodeType":"Block","src":"16519:95:23","statements":[{"errorCall":{"arguments":[{"id":10008,"name":"metadataURILength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9994,"src":"16565:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10009,"name":"METADATA_URI_MAX_BYTES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8600,"src":"16584:22:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10005,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"16534:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16546:18:23","memberName":"MetadataURITooLong","nodeType":"MemberAccess","referencedDeclaration":13200,"src":"16534:30:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":10010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16534:73:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10011,"nodeType":"RevertStatement","src":"16527:80:23"}]}}]},"id":10015,"implemented":true,"kind":"function","modifiers":[],"name":"_validateMetadataLengths","nameLocation":"15745:24:23","nodeType":"FunctionDefinition","parameters":{"id":9929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9928,"mutability":"mutable","name":"params","nameLocation":"15814:6:23","nodeType":"VariableDeclaration","scope":10015,"src":"15770:50:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_memory_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"},"typeName":{"id":9927,"nodeType":"UserDefinedTypeName","pathNode":{"id":9926,"name":"ChallengeTypes.CreateChallengeParams","nameLocations":["15770:14:23","15785:21:23"],"nodeType":"IdentifierPath","referencedDeclaration":12717,"src":"15770:36:23"},"referencedDeclaration":12717,"src":"15770:36:23","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_storage_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"}},"visibility":"internal"}],"src":"15769:52:23"},"returnParameters":{"id":9930,"nodeType":"ParameterList","parameters":[],"src":"15835:0:23"},"scope":10968,"src":"15736:882:23","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":10086,"nodeType":"Block","src":"16683:382:23","statements":[{"assignments":[10025],"declarations":[{"constant":false,"id":10025,"mutability":"mutable","name":"$","nameLocation":"16737:1:23","nodeType":"VariableDeclaration","scope":10086,"src":"16689:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10024,"nodeType":"UserDefinedTypeName","pathNode":{"id":10023,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["16689:21:23","16711:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"16689:39:23"},"referencedDeclaration":12643,"src":"16689:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10029,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10026,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"16741:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16763:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"16741:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16741:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16689:96:23"},{"body":{"id":10084,"nodeType":"Block","src":"16832:229:23","statements":[{"condition":{"id":10047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16844:34:23","subExpression":{"arguments":[{"baseExpression":{"id":10043,"name":"appIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10018,"src":"16868:6:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10045,"indexExpression":{"id":10044,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10031,"src":"16875:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16868:9:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":10040,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"16845:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10041,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16847:10:23","memberName":"x2EarnApps","nodeType":"MemberAccess","referencedDeclaration":12568,"src":"16845:12:23","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"}},"id":10042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16858:9:23","memberName":"appExists","nodeType":"MemberAccess","referencedDeclaration":16060,"src":"16845:22:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view external returns (bool)"}},"id":10046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16845:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10056,"nodeType":"IfStatement","src":"16840:89:23","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":10051,"name":"appIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10018,"src":"16919:6:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10053,"indexExpression":{"id":10052,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10031,"src":"16926:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16919:9:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10048,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"16887:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16899:19:23","memberName":"ChallengeUnknownApp","nodeType":"MemberAccess","referencedDeclaration":13226,"src":"16887:31:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":10054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16887:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10055,"nodeType":"RevertStatement","src":"16880:49:23"}},{"body":{"id":10082,"nodeType":"Block","src":"16966:89:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10066,"name":"appIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10018,"src":"16980:6:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10068,"indexExpression":{"id":10067,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10058,"src":"16987:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16980:9:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":10069,"name":"appIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10018,"src":"16993:6:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10071,"indexExpression":{"id":10070,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10031,"src":"17000:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16993:9:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16980:22:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10081,"nodeType":"IfStatement","src":"16976:70:23","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":10076,"name":"appIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10018,"src":"17036:6:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10078,"indexExpression":{"id":10077,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10031,"src":"17043:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17036:9:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10073,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"17011:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17023:12:23","memberName":"DuplicateApp","nodeType":"MemberAccess","referencedDeclaration":13230,"src":"17011:24:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":10079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17011:35:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10080,"nodeType":"RevertStatement","src":"17004:42:23"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10060,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10058,"src":"16954:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10061,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10031,"src":"16958:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16954:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10083,"initializationExpression":{"assignments":[10058],"declarations":[{"constant":false,"id":10058,"mutability":"mutable","name":"j","nameLocation":"16951:1:23","nodeType":"VariableDeclaration","scope":10083,"src":"16943:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10057,"name":"uint256","nodeType":"ElementaryTypeName","src":"16943:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10059,"nodeType":"VariableDeclarationStatement","src":"16943:9:23"},"loopExpression":{"expression":{"id":10064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16961:3:23","subExpression":{"id":10063,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10058,"src":"16961:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10065,"nodeType":"ExpressionStatement","src":"16961:3:23"},"nodeType":"ForStatement","src":"16938:117:23"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10033,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10031,"src":"16808:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10034,"name":"appIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10018,"src":"16812:6:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16819:6:23","memberName":"length","nodeType":"MemberAccess","src":"16812:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16808:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10085,"initializationExpression":{"assignments":[10031],"declarations":[{"constant":false,"id":10031,"mutability":"mutable","name":"i","nameLocation":"16805:1:23","nodeType":"VariableDeclaration","scope":10085,"src":"16797:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10030,"name":"uint256","nodeType":"ElementaryTypeName","src":"16797:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10032,"nodeType":"VariableDeclarationStatement","src":"16797:9:23"},"loopExpression":{"expression":{"id":10038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16827:3:23","subExpression":{"id":10037,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10031,"src":"16827:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10039,"nodeType":"ExpressionStatement","src":"16827:3:23"},"nodeType":"ForStatement","src":"16792:269:23"}]},"id":10087,"implemented":true,"kind":"function","modifiers":[],"name":"_validateApps","nameLocation":"16631:13:23","nodeType":"FunctionDefinition","parameters":{"id":10019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10018,"mutability":"mutable","name":"appIds","nameLocation":"16662:6:23","nodeType":"VariableDeclaration","scope":10087,"src":"16645:23:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":10016,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16645:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10017,"nodeType":"ArrayTypeName","src":"16645:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"16644:25:23"},"returnParameters":{"id":10020,"nodeType":"ParameterList","parameters":[],"src":"16683:0:23"},"scope":10968,"src":"16622:443:23","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10132,"nodeType":"Block","src":"17180:360:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":10100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10095,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10092,"src":"17190:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17200:6:23","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"17190:16:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":10097,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"17210:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17225:15:23","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"17210:30:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":10099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17241:7:23","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"17210:38:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"17190:58:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10108,"nodeType":"IfStatement","src":"17186:130:23","trueBody":{"id":10107,"nodeType":"Block","src":"17250:66:23","statements":[{"errorCall":{"arguments":[{"id":10104,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10089,"src":"17297:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10101,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"17265:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17277:19:23","memberName":"ChallengeNotPending","nodeType":"MemberAccess","referencedDeclaration":13234,"src":"17265:31:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":10105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17265:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10106,"nodeType":"RevertStatement","src":"17258:51:23"}]}},{"assignments":[10113],"declarations":[{"constant":false,"id":10113,"mutability":"mutable","name":"$","nameLocation":"17370:1:23","nodeType":"VariableDeclaration","scope":10132,"src":"17322:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10112,"nodeType":"UserDefinedTypeName","pathNode":{"id":10111,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["17322:21:23","17344:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"17322:39:23"},"referencedDeclaration":12643,"src":"17322:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10117,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10114,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"17374:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17396:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"17374:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17374:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17322:96:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10119,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10113,"src":"17442:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}],"id":10118,"name":"_currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10927,"src":"17428:13:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ChallengesStorage_$12643_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct ChallengeStorageTypes.ChallengesStorage storage pointer) view returns (uint256)"}},"id":10120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17428:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":10121,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10092,"src":"17448:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10122,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17458:10:23","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"17448:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17428:40:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10131,"nodeType":"IfStatement","src":"17424:112:23","trueBody":{"id":10130,"nodeType":"Block","src":"17470:66:23","statements":[{"errorCall":{"arguments":[{"id":10127,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10089,"src":"17517:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10124,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"17485:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17497:19:23","memberName":"ChallengeNotPending","nodeType":"MemberAccess","referencedDeclaration":13234,"src":"17485:31:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":10128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17485:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10129,"nodeType":"RevertStatement","src":"17478:51:23"}]}}]},"id":10133,"implemented":true,"kind":"function","modifiers":[],"name":"_ensurePendingChallenge","nameLocation":"17078:23:23","nodeType":"FunctionDefinition","parameters":{"id":10093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10089,"mutability":"mutable","name":"challengeId","nameLocation":"17110:11:23","nodeType":"VariableDeclaration","scope":10133,"src":"17102:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10088,"name":"uint256","nodeType":"ElementaryTypeName","src":"17102:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10092,"mutability":"mutable","name":"challenge","nameLocation":"17156:9:23","nodeType":"VariableDeclaration","scope":10133,"src":"17123:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10091,"nodeType":"UserDefinedTypeName","pathNode":{"id":10090,"name":"ChallengeTypes.Challenge","nameLocations":["17123:14:23","17138:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"17123:24:23"},"referencedDeclaration":12806,"src":"17123:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"src":"17101:65:23"},"returnParameters":{"id":10094,"nodeType":"ParameterList","parameters":[],"src":"17180:0:23"},"scope":10968,"src":"17069:471:23","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10189,"nodeType":"Block","src":"17648:604:23","statements":[{"eventCall":{"arguments":[{"id":10142,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10135,"src":"17683:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10143,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17702:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17712:7:23","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"17702:17:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10145,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17727:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17737:8:23","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"17727:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10147,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17753:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17763:4:23","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"17753:14:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},{"expression":{"id":10149,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17775:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17785:10:23","memberName":"visibility","nodeType":"MemberAccess","referencedDeclaration":12749,"src":"17775:20:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},{"expression":{"id":10151,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17803:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17813:13:23","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12752,"src":"17803:23:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},{"expression":{"id":10153,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17834:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17844:11:23","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"17834:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10155,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17863:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17873:10:23","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"17863:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10157,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17891:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17901:9:23","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12770,"src":"17891:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10159,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17918:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17928:7:23","memberName":"allApps","nodeType":"MemberAccess","referencedDeclaration":12760,"src":"17918:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":10161,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17943:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17953:6:23","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12797,"src":"17943:16:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},{"expression":{"id":10163,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17967:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17977:5:23","memberName":"title","nodeType":"MemberAccess","referencedDeclaration":12799,"src":"17967:15:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"expression":{"id":10165,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"17990:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18000:11:23","memberName":"description","nodeType":"MemberAccess","referencedDeclaration":12801,"src":"17990:21:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"expression":{"id":10167,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"18019:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18029:8:23","memberName":"imageURI","nodeType":"MemberAccess","referencedDeclaration":12803,"src":"18019:18:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"expression":{"id":10169,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"18045:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18055:11:23","memberName":"metadataURI","nodeType":"MemberAccess","referencedDeclaration":12805,"src":"18045:21:23","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"id":10141,"name":"ChallengeCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8643,"src":"17659:16:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_enum$_ChallengeKind_$12660_$_t_enum$_ChallengeVisibility_$12663_$_t_enum$_ChallengeType_$12667_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,address,uint256,enum ChallengeTypes.ChallengeKind,enum ChallengeTypes.ChallengeVisibility,enum ChallengeTypes.ChallengeType,uint256,uint256,uint256,bool,bytes32[] memory,string memory,string memory,string memory,string memory)"}},"id":10171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17659:413:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10172,"nodeType":"EmitStatement","src":"17654:418:23"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":10178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10173,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"18083:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18093:13:23","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12752,"src":"18083:23:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":10175,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"18110:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18125:13:23","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"18110:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":10177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18139:8:23","memberName":"SplitWin","nodeType":"MemberAccess","referencedDeclaration":12666,"src":"18110:37:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"18083:64:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10188,"nodeType":"IfStatement","src":"18079:169:23","trueBody":{"id":10187,"nodeType":"Block","src":"18149:99:23","statements":[{"eventCall":{"arguments":[{"id":10180,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10135,"src":"18181:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10181,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"18194:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18204:10:23","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12772,"src":"18194:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10183,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10138,"src":"18216:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18226:14:23","memberName":"prizePerWinner","nodeType":"MemberAccess","referencedDeclaration":12774,"src":"18216:24:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10179,"name":"SplitWinConfigured","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8652,"src":"18162:18:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":10185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18162:79:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10186,"nodeType":"EmitStatement","src":"18157:84:23"}]}}]},"id":10190,"implemented":true,"kind":"function","modifiers":[],"name":"_emitChallengeCreated","nameLocation":"17553:21:23","nodeType":"FunctionDefinition","parameters":{"id":10139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10135,"mutability":"mutable","name":"challengeId","nameLocation":"17583:11:23","nodeType":"VariableDeclaration","scope":10190,"src":"17575:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10134,"name":"uint256","nodeType":"ElementaryTypeName","src":"17575:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10138,"mutability":"mutable","name":"challenge","nameLocation":"17629:9:23","nodeType":"VariableDeclaration","scope":10190,"src":"17596:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10137,"nodeType":"UserDefinedTypeName","pathNode":{"id":10136,"name":"ChallengeTypes.Challenge","nameLocations":["17596:14:23","17611:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"17596:24:23"},"referencedDeclaration":12806,"src":"17596:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"src":"17574:65:23"},"returnParameters":{"id":10140,"nodeType":"ParameterList","parameters":[],"src":"17648:0:23"},"scope":10968,"src":"17544:708:23","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10301,"nodeType":"Block","src":"18322:862:23","statements":[{"assignments":[10201],"declarations":[{"constant":false,"id":10201,"mutability":"mutable","name":"$","nameLocation":"18376:1:23","nodeType":"VariableDeclaration","scope":10301,"src":"18328:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10200,"nodeType":"UserDefinedTypeName","pathNode":{"id":10199,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["18328:21:23","18350:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"18328:39:23"},"referencedDeclaration":12643,"src":"18328:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10205,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10202,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"18380:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18402:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"18380:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18380:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"18328:96:23"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10206,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"18435:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18454:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18446:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10207,"name":"address","nodeType":"ElementaryTypeName","src":"18446:7:23","typeDescriptions":{}}},"id":10210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18446:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18435:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10217,"nodeType":"IfStatement","src":"18431:59:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10212,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"18465:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18477:11:23","memberName":"ZeroAddress","nodeType":"MemberAccess","referencedDeclaration":13138,"src":"18465:23:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18465:25:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10216,"nodeType":"RevertStatement","src":"18458:32:23"}},{"assignments":[10222],"declarations":[{"constant":false,"id":10222,"mutability":"mutable","name":"challenge","nameLocation":"18530:9:23","nodeType":"VariableDeclaration","scope":10301,"src":"18497:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10221,"nodeType":"UserDefinedTypeName","pathNode":{"id":10220,"name":"ChallengeTypes.Challenge","nameLocations":["18497:14:23","18512:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"18497:24:23"},"referencedDeclaration":12806,"src":"18497:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":10227,"initialValue":{"baseExpression":{"expression":{"id":10223,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"18542:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18544:10:23","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"18542:12:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":10226,"indexExpression":{"id":10225,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"18555:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18542:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"18497:70:23"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10228,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"18577:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10229,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10222,"src":"18588:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18598:7:23","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"18588:17:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18577:28:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10234,"nodeType":"IfStatement","src":"18573:55:23","trueBody":{"id":10233,"nodeType":"Block","src":"18607:21:23","statements":[{"functionReturnParameters":10196,"id":10232,"nodeType":"Return","src":"18615:7:23"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"},"id":10244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10235,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"18638:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18640:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"18638:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":10238,"indexExpression":{"id":10237,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"18658:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18638:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":10240,"indexExpression":{"id":10239,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"18671:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18638:41:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":10241,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"18683:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18698:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"18683:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":10243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18716:6:23","memberName":"Joined","nodeType":"MemberAccess","referencedDeclaration":12682,"src":"18683:39:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"18638:84:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10247,"nodeType":"IfStatement","src":"18634:111:23","trueBody":{"id":10246,"nodeType":"Block","src":"18724:21:23","statements":[{"functionReturnParameters":10196,"id":10245,"nodeType":"Return","src":"18732:7:23"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"},"id":10257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10248,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"18755:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18757:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"18755:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":10251,"indexExpression":{"id":10250,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"18775:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18755:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":10253,"indexExpression":{"id":10252,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"18788:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18755:41:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":10254,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"18800:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18815:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"18800:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":10256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18833:7:23","memberName":"Invited","nodeType":"MemberAccess","referencedDeclaration":12680,"src":"18800:40:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"18755:85:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10266,"nodeType":"IfStatement","src":"18751:161:23","trueBody":{"id":10265,"nodeType":"Block","src":"18842:70:23","statements":[{"errorCall":{"arguments":[{"id":10261,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"18884:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10262,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"18897:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10258,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"18857:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18869:14:23","memberName":"AlreadyInvited","nodeType":"MemberAccess","referencedDeclaration":13317,"src":"18857:26:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":10263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18857:48:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10264,"nodeType":"RevertStatement","src":"18850:55:23"}]}},{"condition":{"id":10273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18922:43:23","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10267,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"18923:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18925:18:23","memberName":"invitationEligible","nodeType":"MemberAccess","referencedDeclaration":12594,"src":"18923:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":10270,"indexExpression":{"id":10269,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"18944:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18923:33:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10272,"indexExpression":{"id":10271,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"18957:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18923:42:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10285,"nodeType":"IfStatement","src":"18918:113:23","trueBody":{"id":10284,"nodeType":"Block","src":"18967:64:23","statements":[{"expression":{"id":10282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10274,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"18975:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18977:18:23","memberName":"invitationEligible","nodeType":"MemberAccess","referencedDeclaration":12594,"src":"18975:20:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":10279,"indexExpression":{"id":10276,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"18996:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18975:33:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10280,"indexExpression":{"id":10277,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"19009:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18975:42:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":10281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19020:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18975:49:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10283,"nodeType":"ExpressionStatement","src":"18975:49:23"}]}},{"expression":{"arguments":[{"id":10287,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"19066:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10288,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"19079:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10286,"name":"_removeFromDeclinedIfPresent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10856,"src":"19037:28:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":10289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19037:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10290,"nodeType":"ExpressionStatement","src":"19037:50:23"},{"expression":{"arguments":[{"id":10292,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"19105:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10293,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"19118:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10291,"name":"_addInvited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10568,"src":"19093:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":10294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19093:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10295,"nodeType":"ExpressionStatement","src":"19093:33:23"},{"eventCall":{"arguments":[{"id":10297,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"19158:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10298,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"19171:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10296,"name":"ChallengeInviteAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8659,"src":"19137:20:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":10299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19137:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10300,"nodeType":"EmitStatement","src":"19132:47:23"}]},"id":10302,"implemented":true,"kind":"function","modifiers":[],"name":"_addInvite","nameLocation":"18265:10:23","nodeType":"FunctionDefinition","parameters":{"id":10195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10192,"mutability":"mutable","name":"challengeId","nameLocation":"18284:11:23","nodeType":"VariableDeclaration","scope":10302,"src":"18276:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10191,"name":"uint256","nodeType":"ElementaryTypeName","src":"18276:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10194,"mutability":"mutable","name":"invitee","nameLocation":"18305:7:23","nodeType":"VariableDeclaration","scope":10302,"src":"18297:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10193,"name":"address","nodeType":"ElementaryTypeName","src":"18297:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18275:38:23"},"returnParameters":{"id":10196,"nodeType":"ParameterList","parameters":[],"src":"18322:0:23"},"scope":10968,"src":"18256:928:23","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10377,"nodeType":"Block","src":"19263:560:23","statements":[{"assignments":[10313],"declarations":[{"constant":false,"id":10313,"mutability":"mutable","name":"$","nameLocation":"19317:1:23","nodeType":"VariableDeclaration","scope":10377,"src":"19269:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10312,"nodeType":"UserDefinedTypeName","pathNode":{"id":10311,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["19269:21:23","19291:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"19269:39:23"},"referencedDeclaration":12643,"src":"19269:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10317,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10314,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"19321:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19343:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"19321:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19321:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"19269:96:23"},{"assignments":[10322],"declarations":[{"constant":false,"id":10322,"mutability":"mutable","name":"challenge","nameLocation":"19404:9:23","nodeType":"VariableDeclaration","scope":10377,"src":"19371:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10321,"nodeType":"UserDefinedTypeName","pathNode":{"id":10320,"name":"ChallengeTypes.Challenge","nameLocations":["19371:14:23","19386:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"19371:24:23"},"referencedDeclaration":12806,"src":"19371:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":10327,"initialValue":{"baseExpression":{"expression":{"id":10323,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10313,"src":"19416:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19418:10:23","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"19416:12:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":10326,"indexExpression":{"id":10325,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10304,"src":"19429:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19416:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"19371:70:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10328,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10313,"src":"19452:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19454:23:23","memberName":"participantIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12600,"src":"19452:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10331,"indexExpression":{"id":10330,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10304,"src":"19478:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19452:38:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10333,"indexExpression":{"id":10332,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10306,"src":"19491:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19452:51:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19507:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19452:56:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10344,"nodeType":"IfStatement","src":"19448:142:23","trueBody":{"id":10343,"nodeType":"Block","src":"19510:80:23","statements":[{"errorCall":{"arguments":[{"id":10339,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10304,"src":"19558:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10340,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10306,"src":"19571:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10336,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"19525:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19537:20:23","memberName":"AlreadyParticipating","nodeType":"MemberAccess","referencedDeclaration":13275,"src":"19525:32:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":10341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19525:58:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10342,"nodeType":"RevertStatement","src":"19518:65:23"}]}},{"expression":{"arguments":[{"id":10350,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10306,"src":"19624:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":10345,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10322,"src":"19596:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19606:12:23","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"19596:22:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19619:4:23","memberName":"push","nodeType":"MemberAccess","src":"19596:27:23","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":10351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19596:40:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10352,"nodeType":"ExpressionStatement","src":"19596:40:23"},{"expression":{"id":10363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10353,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10313,"src":"19642:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19644:23:23","memberName":"participantIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12600,"src":"19642:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10358,"indexExpression":{"id":10355,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10304,"src":"19668:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19642:38:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10359,"indexExpression":{"id":10356,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10306,"src":"19681:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19642:51:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":10360,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10322,"src":"19696:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19706:12:23","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"19696:22:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19719:6:23","memberName":"length","nodeType":"MemberAccess","src":"19696:29:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19642:83:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10364,"nodeType":"ExpressionStatement","src":"19642:83:23"},{"expression":{"id":10375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10365,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10313,"src":"19731:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19733:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"19731:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":10370,"indexExpression":{"id":10367,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10304,"src":"19751:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19731:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":10371,"indexExpression":{"id":10368,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10306,"src":"19764:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19731:45:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":10372,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"19779:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19794:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"19779:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":10374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19812:6:23","memberName":"Joined","nodeType":"MemberAccess","referencedDeclaration":12682,"src":"19779:39:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"19731:87:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"id":10376,"nodeType":"ExpressionStatement","src":"19731:87:23"}]},"id":10378,"implemented":true,"kind":"function","modifiers":[],"name":"_addParticipant","nameLocation":"19197:15:23","nodeType":"FunctionDefinition","parameters":{"id":10307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10304,"mutability":"mutable","name":"challengeId","nameLocation":"19221:11:23","nodeType":"VariableDeclaration","scope":10378,"src":"19213:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10303,"name":"uint256","nodeType":"ElementaryTypeName","src":"19213:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10306,"mutability":"mutable","name":"participant","nameLocation":"19242:11:23","nodeType":"VariableDeclaration","scope":10378,"src":"19234:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10305,"name":"address","nodeType":"ElementaryTypeName","src":"19234:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19212:42:23"},"returnParameters":{"id":10308,"nodeType":"ParameterList","parameters":[],"src":"19263:0:23"},"scope":10968,"src":"19188:635:23","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10485,"nodeType":"Block","src":"19905:873:23","statements":[{"assignments":[10389],"declarations":[{"constant":false,"id":10389,"mutability":"mutable","name":"$","nameLocation":"19959:1:23","nodeType":"VariableDeclaration","scope":10485,"src":"19911:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10388,"nodeType":"UserDefinedTypeName","pathNode":{"id":10387,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["19911:21:23","19933:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"19911:39:23"},"referencedDeclaration":12643,"src":"19911:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10393,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10390,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"19963:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19985:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"19963:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19963:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"19911:96:23"},{"assignments":[10398],"declarations":[{"constant":false,"id":10398,"mutability":"mutable","name":"challenge","nameLocation":"20046:9:23","nodeType":"VariableDeclaration","scope":10485,"src":"20013:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10397,"nodeType":"UserDefinedTypeName","pathNode":{"id":10396,"name":"ChallengeTypes.Challenge","nameLocations":["20013:14:23","20028:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"20013:24:23"},"referencedDeclaration":12806,"src":"20013:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":10403,"initialValue":{"baseExpression":{"expression":{"id":10399,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10389,"src":"20058:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20060:10:23","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"20058:12:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":10402,"indexExpression":{"id":10401,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"20071:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20058:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"20013:70:23"},{"assignments":[10405],"declarations":[{"constant":false,"id":10405,"mutability":"mutable","name":"indexPlusOne","nameLocation":"20097:12:23","nodeType":"VariableDeclaration","scope":10485,"src":"20089:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10404,"name":"uint256","nodeType":"ElementaryTypeName","src":"20089:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10412,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":10406,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10389,"src":"20112:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20114:23:23","memberName":"participantIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12600,"src":"20112:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10409,"indexExpression":{"id":10408,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"20138:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20112:38:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10411,"indexExpression":{"id":10410,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10382,"src":"20151:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20112:51:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20089:74:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10413,"name":"indexPlusOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"20174:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20190:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20174:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10423,"nodeType":"IfStatement","src":"20170:84:23","trueBody":{"errorCall":{"arguments":[{"id":10419,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"20229:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10420,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10382,"src":"20242:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10416,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"20200:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20212:16:23","memberName":"NotParticipating","nodeType":"MemberAccess","referencedDeclaration":13281,"src":"20200:28:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":10421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20200:54:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10422,"nodeType":"RevertStatement","src":"20193:61:23"}},{"assignments":[10425],"declarations":[{"constant":false,"id":10425,"mutability":"mutable","name":"index","nameLocation":"20269:5:23","nodeType":"VariableDeclaration","scope":10485,"src":"20261:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10424,"name":"uint256","nodeType":"ElementaryTypeName","src":"20261:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10429,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10426,"name":"indexPlusOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"20277:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20292:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20277:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20261:32:23"},{"assignments":[10431],"declarations":[{"constant":false,"id":10431,"mutability":"mutable","name":"lastIndex","nameLocation":"20307:9:23","nodeType":"VariableDeclaration","scope":10485,"src":"20299:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10430,"name":"uint256","nodeType":"ElementaryTypeName","src":"20299:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10437,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10432,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"20319:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10433,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20329:12:23","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"20319:22:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20342:6:23","memberName":"length","nodeType":"MemberAccess","src":"20319:29:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20351:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20319:33:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20299:53:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10438,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10425,"src":"20475:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10439,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10431,"src":"20484:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20475:18:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10469,"nodeType":"IfStatement","src":"20471:204:23","trueBody":{"id":10468,"nodeType":"Block","src":"20495:180:23","statements":[{"assignments":[10442],"declarations":[{"constant":false,"id":10442,"mutability":"mutable","name":"swapped","nameLocation":"20511:7:23","nodeType":"VariableDeclaration","scope":10468,"src":"20503:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10441,"name":"address","nodeType":"ElementaryTypeName","src":"20503:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10447,"initialValue":{"baseExpression":{"expression":{"id":10443,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"20521:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10444,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20531:12:23","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"20521:22:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10446,"indexExpression":{"id":10445,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10431,"src":"20544:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20521:33:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"20503:51:23"},{"expression":{"id":10454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10448,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"20562:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20572:12:23","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"20562:22:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10452,"indexExpression":{"id":10450,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10425,"src":"20585:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20562:29:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10453,"name":"swapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10442,"src":"20594:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20562:39:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10455,"nodeType":"ExpressionStatement","src":"20562:39:23"},{"expression":{"id":10466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10456,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10389,"src":"20609:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10460,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20611:23:23","memberName":"participantIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12600,"src":"20609:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10461,"indexExpression":{"id":10458,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"20635:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20609:38:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10462,"indexExpression":{"id":10459,"name":"swapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10442,"src":"20648:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20609:47:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10463,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10425,"src":"20659:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":10464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20667:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20659:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20609:59:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10467,"nodeType":"ExpressionStatement","src":"20609:59:23"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":10470,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"20681:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10473,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20691:12:23","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"20681:22:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20704:3:23","memberName":"pop","nodeType":"MemberAccess","src":"20681:26:23","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":10475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20681:28:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10476,"nodeType":"ExpressionStatement","src":"20681:28:23"},{"expression":{"id":10483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"20715:58:23","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10477,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10389,"src":"20722:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20724:23:23","memberName":"participantIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12600,"src":"20722:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10480,"indexExpression":{"id":10479,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"20748:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20722:38:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10482,"indexExpression":{"id":10481,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10382,"src":"20761:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20722:51:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10484,"nodeType":"ExpressionStatement","src":"20715:58:23"}]},"id":10486,"implemented":true,"kind":"function","modifiers":[],"name":"_removeParticipant","nameLocation":"19836:18:23","nodeType":"FunctionDefinition","parameters":{"id":10383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10380,"mutability":"mutable","name":"challengeId","nameLocation":"19863:11:23","nodeType":"VariableDeclaration","scope":10486,"src":"19855:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10379,"name":"uint256","nodeType":"ElementaryTypeName","src":"19855:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10382,"mutability":"mutable","name":"participant","nameLocation":"19884:11:23","nodeType":"VariableDeclaration","scope":10486,"src":"19876:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10381,"name":"address","nodeType":"ElementaryTypeName","src":"19876:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19854:42:23"},"returnParameters":{"id":10384,"nodeType":"ParameterList","parameters":[],"src":"19905:0:23"},"scope":10968,"src":"19827:951:23","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10567,"nodeType":"Block","src":"20849:560:23","statements":[{"assignments":[10497],"declarations":[{"constant":false,"id":10497,"mutability":"mutable","name":"$","nameLocation":"20903:1:23","nodeType":"VariableDeclaration","scope":10567,"src":"20855:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10496,"nodeType":"UserDefinedTypeName","pathNode":{"id":10495,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["20855:21:23","20877:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"20855:39:23"},"referencedDeclaration":12643,"src":"20855:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10501,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10498,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"20907:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20929:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"20907:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20907:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"20855:96:23"},{"assignments":[10506],"declarations":[{"constant":false,"id":10506,"mutability":"mutable","name":"challenge","nameLocation":"20990:9:23","nodeType":"VariableDeclaration","scope":10567,"src":"20957:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10505,"nodeType":"UserDefinedTypeName","pathNode":{"id":10504,"name":"ChallengeTypes.Challenge","nameLocations":["20957:14:23","20972:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"20957:24:23"},"referencedDeclaration":12806,"src":"20957:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":10511,"initialValue":{"baseExpression":{"expression":{"id":10507,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"21002:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10508,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21004:10:23","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"21002:12:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":10510,"indexExpression":{"id":10509,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10488,"src":"21015:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21002:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"20957:70:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10512,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"21038:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10513,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21040:19:23","memberName":"invitedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12606,"src":"21038:21:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10515,"indexExpression":{"id":10514,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10488,"src":"21060:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21038:34:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10517,"indexExpression":{"id":10516,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10490,"src":"21073:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21038:43:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21085:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21038:48:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10534,"nodeType":"IfStatement","src":"21034:167:23","trueBody":{"id":10533,"nodeType":"Block","src":"21088:113:23","statements":[{"expression":{"id":10530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10520,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"21096:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21098:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"21096:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":10525,"indexExpression":{"id":10522,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10488,"src":"21116:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21096:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":10526,"indexExpression":{"id":10523,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10490,"src":"21129:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21096:41:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":10527,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"21140:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21155:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"21140:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":10529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21173:7:23","memberName":"Invited","nodeType":"MemberAccess","referencedDeclaration":12680,"src":"21140:40:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"21096:84:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"id":10531,"nodeType":"ExpressionStatement","src":"21096:84:23"},{"functionReturnParameters":10492,"id":10532,"nodeType":"Return","src":"21188:7:23"}]}},{"expression":{"arguments":[{"id":10540,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10490,"src":"21230:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":10535,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10506,"src":"21207:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21217:7:23","memberName":"invited","nodeType":"MemberAccess","referencedDeclaration":12788,"src":"21207:17:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21225:4:23","memberName":"push","nodeType":"MemberAccess","src":"21207:22:23","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":10541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21207:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10542,"nodeType":"ExpressionStatement","src":"21207:31:23"},{"expression":{"id":10553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10543,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"21244:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21246:19:23","memberName":"invitedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12606,"src":"21244:21:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10548,"indexExpression":{"id":10545,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10488,"src":"21266:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21244:34:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10549,"indexExpression":{"id":10546,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10490,"src":"21279:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21244:43:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":10550,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10506,"src":"21290:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10551,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21300:7:23","memberName":"invited","nodeType":"MemberAccess","referencedDeclaration":12788,"src":"21290:17:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21308:6:23","memberName":"length","nodeType":"MemberAccess","src":"21290:24:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21244:70:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10554,"nodeType":"ExpressionStatement","src":"21244:70:23"},{"expression":{"id":10565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10555,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"21320:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21322:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"21320:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":10560,"indexExpression":{"id":10557,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10488,"src":"21340:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21320:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":10561,"indexExpression":{"id":10558,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10490,"src":"21353:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21320:41:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":10562,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"21364:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21379:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"21364:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":10564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21397:7:23","memberName":"Invited","nodeType":"MemberAccess","referencedDeclaration":12680,"src":"21364:40:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"21320:84:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"id":10566,"nodeType":"ExpressionStatement","src":"21320:84:23"}]},"id":10568,"implemented":true,"kind":"function","modifiers":[],"name":"_addInvited","nameLocation":"20791:11:23","nodeType":"FunctionDefinition","parameters":{"id":10491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10488,"mutability":"mutable","name":"challengeId","nameLocation":"20811:11:23","nodeType":"VariableDeclaration","scope":10568,"src":"20803:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10487,"name":"uint256","nodeType":"ElementaryTypeName","src":"20803:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10490,"mutability":"mutable","name":"invitee","nameLocation":"20832:7:23","nodeType":"VariableDeclaration","scope":10568,"src":"20824:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10489,"name":"address","nodeType":"ElementaryTypeName","src":"20824:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20802:38:23"},"returnParameters":{"id":10492,"nodeType":"ParameterList","parameters":[],"src":"20849:0:23"},"scope":10968,"src":"20782:627:23","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10649,"nodeType":"Block","src":"21481:566:23","statements":[{"assignments":[10579],"declarations":[{"constant":false,"id":10579,"mutability":"mutable","name":"$","nameLocation":"21535:1:23","nodeType":"VariableDeclaration","scope":10649,"src":"21487:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10578,"nodeType":"UserDefinedTypeName","pathNode":{"id":10577,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["21487:21:23","21509:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"21487:39:23"},"referencedDeclaration":12643,"src":"21487:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10583,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10580,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"21539:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21561:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"21539:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21539:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"21487:96:23"},{"assignments":[10588],"declarations":[{"constant":false,"id":10588,"mutability":"mutable","name":"challenge","nameLocation":"21622:9:23","nodeType":"VariableDeclaration","scope":10649,"src":"21589:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10587,"nodeType":"UserDefinedTypeName","pathNode":{"id":10586,"name":"ChallengeTypes.Challenge","nameLocations":["21589:14:23","21604:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"21589:24:23"},"referencedDeclaration":12806,"src":"21589:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":10593,"initialValue":{"baseExpression":{"expression":{"id":10589,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10579,"src":"21634:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21636:10:23","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"21634:12:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":10592,"indexExpression":{"id":10591,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10570,"src":"21647:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21634:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"21589:70:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10594,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10579,"src":"21670:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21672:20:23","memberName":"declinedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12612,"src":"21670:22:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10597,"indexExpression":{"id":10596,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10570,"src":"21693:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21670:35:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10599,"indexExpression":{"id":10598,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"21706:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21670:44:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21718:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21670:49:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10616,"nodeType":"IfStatement","src":"21666:169:23","trueBody":{"id":10615,"nodeType":"Block","src":"21721:114:23","statements":[{"expression":{"id":10612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10602,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10579,"src":"21729:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21731:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"21729:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":10607,"indexExpression":{"id":10604,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10570,"src":"21749:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21729:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":10608,"indexExpression":{"id":10605,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"21762:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21729:41:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":10609,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"21773:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21788:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"21773:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":10611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21806:8:23","memberName":"Declined","nodeType":"MemberAccess","referencedDeclaration":12681,"src":"21773:41:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"21729:85:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"id":10613,"nodeType":"ExpressionStatement","src":"21729:85:23"},{"functionReturnParameters":10574,"id":10614,"nodeType":"Return","src":"21822:7:23"}]}},{"expression":{"arguments":[{"id":10622,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"21865:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":10617,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"21841:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10620,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21851:8:23","memberName":"declined","nodeType":"MemberAccess","referencedDeclaration":12791,"src":"21841:18:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21860:4:23","memberName":"push","nodeType":"MemberAccess","src":"21841:23:23","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":10623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21841:32:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10624,"nodeType":"ExpressionStatement","src":"21841:32:23"},{"expression":{"id":10635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10625,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10579,"src":"21879:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10629,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21881:20:23","memberName":"declinedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12612,"src":"21879:22:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10630,"indexExpression":{"id":10627,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10570,"src":"21902:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21879:35:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10631,"indexExpression":{"id":10628,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"21915:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21879:44:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":10632,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"21926:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21936:8:23","memberName":"declined","nodeType":"MemberAccess","referencedDeclaration":12791,"src":"21926:18:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21945:6:23","memberName":"length","nodeType":"MemberAccess","src":"21926:25:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21879:72:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10636,"nodeType":"ExpressionStatement","src":"21879:72:23"},{"expression":{"id":10647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10637,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10579,"src":"21957:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10641,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21959:17:23","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"21957:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":10642,"indexExpression":{"id":10639,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10570,"src":"21977:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21957:32:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":10643,"indexExpression":{"id":10640,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"21990:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21957:41:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":10644,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"22001:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22016:17:23","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"22001:32:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":10646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22034:8:23","memberName":"Declined","nodeType":"MemberAccess","referencedDeclaration":12681,"src":"22001:41:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"21957:85:23","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"id":10648,"nodeType":"ExpressionStatement","src":"21957:85:23"}]},"id":10650,"implemented":true,"kind":"function","modifiers":[],"name":"_addDeclined","nameLocation":"21422:12:23","nodeType":"FunctionDefinition","parameters":{"id":10573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10570,"mutability":"mutable","name":"challengeId","nameLocation":"21443:11:23","nodeType":"VariableDeclaration","scope":10650,"src":"21435:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10569,"name":"uint256","nodeType":"ElementaryTypeName","src":"21435:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10572,"mutability":"mutable","name":"invitee","nameLocation":"21464:7:23","nodeType":"VariableDeclaration","scope":10650,"src":"21456:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10571,"name":"address","nodeType":"ElementaryTypeName","src":"21456:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21434:38:23"},"returnParameters":{"id":10574,"nodeType":"ParameterList","parameters":[],"src":"21481:0:23"},"scope":10968,"src":"21413:634:23","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10752,"nodeType":"Block","src":"22134:680:23","statements":[{"assignments":[10661],"declarations":[{"constant":false,"id":10661,"mutability":"mutable","name":"$","nameLocation":"22188:1:23","nodeType":"VariableDeclaration","scope":10752,"src":"22140:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10660,"nodeType":"UserDefinedTypeName","pathNode":{"id":10659,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["22140:21:23","22162:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"22140:39:23"},"referencedDeclaration":12643,"src":"22140:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10665,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10662,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"22192:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22214:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"22192:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22192:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"22140:96:23"},{"assignments":[10670],"declarations":[{"constant":false,"id":10670,"mutability":"mutable","name":"challenge","nameLocation":"22275:9:23","nodeType":"VariableDeclaration","scope":10752,"src":"22242:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10669,"nodeType":"UserDefinedTypeName","pathNode":{"id":10668,"name":"ChallengeTypes.Challenge","nameLocations":["22242:14:23","22257:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"22242:24:23"},"referencedDeclaration":12806,"src":"22242:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":10675,"initialValue":{"baseExpression":{"expression":{"id":10671,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10661,"src":"22287:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22289:10:23","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"22287:12:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":10674,"indexExpression":{"id":10673,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"22300:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22287:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"22242:70:23"},{"assignments":[10677],"declarations":[{"constant":false,"id":10677,"mutability":"mutable","name":"indexPlusOne","nameLocation":"22326:12:23","nodeType":"VariableDeclaration","scope":10752,"src":"22318:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10676,"name":"uint256","nodeType":"ElementaryTypeName","src":"22318:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10684,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":10678,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10661,"src":"22341:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22343:19:23","memberName":"invitedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12606,"src":"22341:21:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10681,"indexExpression":{"id":10680,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"22363:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22341:34:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10683,"indexExpression":{"id":10682,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"22376:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22341:43:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22318:66:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10685,"name":"indexPlusOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10677,"src":"22395:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22411:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22395:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10690,"nodeType":"IfStatement","src":"22391:44:23","trueBody":{"id":10689,"nodeType":"Block","src":"22414:21:23","statements":[{"functionReturnParameters":10656,"id":10688,"nodeType":"Return","src":"22422:7:23"}]}},{"assignments":[10692],"declarations":[{"constant":false,"id":10692,"mutability":"mutable","name":"index","nameLocation":"22449:5:23","nodeType":"VariableDeclaration","scope":10752,"src":"22441:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10691,"name":"uint256","nodeType":"ElementaryTypeName","src":"22441:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10696,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10693,"name":"indexPlusOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10677,"src":"22457:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22472:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22457:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22441:32:23"},{"assignments":[10698],"declarations":[{"constant":false,"id":10698,"mutability":"mutable","name":"lastIndex","nameLocation":"22487:9:23","nodeType":"VariableDeclaration","scope":10752,"src":"22479:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10697,"name":"uint256","nodeType":"ElementaryTypeName","src":"22479:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10704,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10699,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"22499:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22509:7:23","memberName":"invited","nodeType":"MemberAccess","referencedDeclaration":12788,"src":"22499:17:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22517:6:23","memberName":"length","nodeType":"MemberAccess","src":"22499:24:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22526:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22499:28:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22479:48:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10705,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10692,"src":"22538:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10706,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10698,"src":"22547:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22538:18:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10736,"nodeType":"IfStatement","src":"22534:190:23","trueBody":{"id":10735,"nodeType":"Block","src":"22558:166:23","statements":[{"assignments":[10709],"declarations":[{"constant":false,"id":10709,"mutability":"mutable","name":"swapped","nameLocation":"22574:7:23","nodeType":"VariableDeclaration","scope":10735,"src":"22566:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10708,"name":"address","nodeType":"ElementaryTypeName","src":"22566:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10714,"initialValue":{"baseExpression":{"expression":{"id":10710,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"22584:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10711,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22594:7:23","memberName":"invited","nodeType":"MemberAccess","referencedDeclaration":12788,"src":"22584:17:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10713,"indexExpression":{"id":10712,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10698,"src":"22602:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22584:28:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"22566:46:23"},{"expression":{"id":10721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10715,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"22620:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22630:7:23","memberName":"invited","nodeType":"MemberAccess","referencedDeclaration":12788,"src":"22620:17:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10719,"indexExpression":{"id":10717,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10692,"src":"22638:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22620:24:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10720,"name":"swapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10709,"src":"22647:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22620:34:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10722,"nodeType":"ExpressionStatement","src":"22620:34:23"},{"expression":{"id":10733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10723,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10661,"src":"22662:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10727,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22664:19:23","memberName":"invitedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12606,"src":"22662:21:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10728,"indexExpression":{"id":10725,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"22684:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22662:34:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10729,"indexExpression":{"id":10726,"name":"swapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10709,"src":"22697:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22662:43:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10730,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10692,"src":"22708:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":10731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22716:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22708:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22662:55:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10734,"nodeType":"ExpressionStatement","src":"22662:55:23"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":10737,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"22730:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22740:7:23","memberName":"invited","nodeType":"MemberAccess","referencedDeclaration":12788,"src":"22730:17:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22748:3:23","memberName":"pop","nodeType":"MemberAccess","src":"22730:21:23","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":10742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22730:23:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10743,"nodeType":"ExpressionStatement","src":"22730:23:23"},{"expression":{"id":10750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"22759:50:23","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10744,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10661,"src":"22766:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10745,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22768:19:23","memberName":"invitedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12606,"src":"22766:21:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10747,"indexExpression":{"id":10746,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"22788:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22766:34:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10749,"indexExpression":{"id":10748,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"22801:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22766:43:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10751,"nodeType":"ExpressionStatement","src":"22759:50:23"}]},"id":10753,"implemented":true,"kind":"function","modifiers":[],"name":"_removeFromInvitedIfPresent","nameLocation":"22060:27:23","nodeType":"FunctionDefinition","parameters":{"id":10655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10652,"mutability":"mutable","name":"challengeId","nameLocation":"22096:11:23","nodeType":"VariableDeclaration","scope":10753,"src":"22088:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10651,"name":"uint256","nodeType":"ElementaryTypeName","src":"22088:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10654,"mutability":"mutable","name":"invitee","nameLocation":"22117:7:23","nodeType":"VariableDeclaration","scope":10753,"src":"22109:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10653,"name":"address","nodeType":"ElementaryTypeName","src":"22109:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22087:38:23"},"returnParameters":{"id":10656,"nodeType":"ParameterList","parameters":[],"src":"22134:0:23"},"scope":10968,"src":"22051:763:23","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10855,"nodeType":"Block","src":"22902:687:23","statements":[{"assignments":[10764],"declarations":[{"constant":false,"id":10764,"mutability":"mutable","name":"$","nameLocation":"22956:1:23","nodeType":"VariableDeclaration","scope":10855,"src":"22908:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10763,"nodeType":"UserDefinedTypeName","pathNode":{"id":10762,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["22908:21:23","22930:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"22908:39:23"},"referencedDeclaration":12643,"src":"22908:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10768,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10765,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"22960:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22982:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"22960:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22960:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"22908:96:23"},{"assignments":[10773],"declarations":[{"constant":false,"id":10773,"mutability":"mutable","name":"challenge","nameLocation":"23043:9:23","nodeType":"VariableDeclaration","scope":10855,"src":"23010:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10772,"nodeType":"UserDefinedTypeName","pathNode":{"id":10771,"name":"ChallengeTypes.Challenge","nameLocations":["23010:14:23","23025:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"23010:24:23"},"referencedDeclaration":12806,"src":"23010:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":10778,"initialValue":{"baseExpression":{"expression":{"id":10774,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10764,"src":"23055:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23057:10:23","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"23055:12:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":10777,"indexExpression":{"id":10776,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10755,"src":"23068:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23055:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"23010:70:23"},{"assignments":[10780],"declarations":[{"constant":false,"id":10780,"mutability":"mutable","name":"indexPlusOne","nameLocation":"23094:12:23","nodeType":"VariableDeclaration","scope":10855,"src":"23086:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10779,"name":"uint256","nodeType":"ElementaryTypeName","src":"23086:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10787,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":10781,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10764,"src":"23109:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10782,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23111:20:23","memberName":"declinedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12612,"src":"23109:22:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10784,"indexExpression":{"id":10783,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10755,"src":"23132:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23109:35:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10786,"indexExpression":{"id":10785,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10757,"src":"23145:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23109:44:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23086:67:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10788,"name":"indexPlusOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10780,"src":"23164:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23180:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23164:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10793,"nodeType":"IfStatement","src":"23160:44:23","trueBody":{"id":10792,"nodeType":"Block","src":"23183:21:23","statements":[{"functionReturnParameters":10759,"id":10791,"nodeType":"Return","src":"23191:7:23"}]}},{"assignments":[10795],"declarations":[{"constant":false,"id":10795,"mutability":"mutable","name":"index","nameLocation":"23218:5:23","nodeType":"VariableDeclaration","scope":10855,"src":"23210:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10794,"name":"uint256","nodeType":"ElementaryTypeName","src":"23210:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10799,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10796,"name":"indexPlusOne","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10780,"src":"23226:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23241:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23226:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23210:32:23"},{"assignments":[10801],"declarations":[{"constant":false,"id":10801,"mutability":"mutable","name":"lastIndex","nameLocation":"23256:9:23","nodeType":"VariableDeclaration","scope":10855,"src":"23248:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10800,"name":"uint256","nodeType":"ElementaryTypeName","src":"23248:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10807,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10802,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10773,"src":"23268:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23278:8:23","memberName":"declined","nodeType":"MemberAccess","referencedDeclaration":12791,"src":"23268:18:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23287:6:23","memberName":"length","nodeType":"MemberAccess","src":"23268:25:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23296:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23268:29:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23248:49:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10808,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10795,"src":"23308:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10809,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10801,"src":"23317:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23308:18:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10839,"nodeType":"IfStatement","src":"23304:193:23","trueBody":{"id":10838,"nodeType":"Block","src":"23328:169:23","statements":[{"assignments":[10812],"declarations":[{"constant":false,"id":10812,"mutability":"mutable","name":"swapped","nameLocation":"23344:7:23","nodeType":"VariableDeclaration","scope":10838,"src":"23336:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10811,"name":"address","nodeType":"ElementaryTypeName","src":"23336:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10817,"initialValue":{"baseExpression":{"expression":{"id":10813,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10773,"src":"23354:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23364:8:23","memberName":"declined","nodeType":"MemberAccess","referencedDeclaration":12791,"src":"23354:18:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10816,"indexExpression":{"id":10815,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10801,"src":"23373:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23354:29:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"23336:47:23"},{"expression":{"id":10824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10818,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10773,"src":"23391:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23401:8:23","memberName":"declined","nodeType":"MemberAccess","referencedDeclaration":12791,"src":"23391:18:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10822,"indexExpression":{"id":10820,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10795,"src":"23410:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23391:25:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10823,"name":"swapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10812,"src":"23419:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23391:35:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10825,"nodeType":"ExpressionStatement","src":"23391:35:23"},{"expression":{"id":10836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10826,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10764,"src":"23434:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10830,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23436:20:23","memberName":"declinedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12612,"src":"23434:22:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10831,"indexExpression":{"id":10828,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10755,"src":"23457:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23434:35:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10832,"indexExpression":{"id":10829,"name":"swapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10812,"src":"23470:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23434:44:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10833,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10795,"src":"23481:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":10834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23489:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23481:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23434:56:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10837,"nodeType":"ExpressionStatement","src":"23434:56:23"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":10840,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10773,"src":"23503:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23513:8:23","memberName":"declined","nodeType":"MemberAccess","referencedDeclaration":12791,"src":"23503:18:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23522:3:23","memberName":"pop","nodeType":"MemberAccess","src":"23503:22:23","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":10845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23503:24:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10846,"nodeType":"ExpressionStatement","src":"23503:24:23"},{"expression":{"id":10853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"23533:51:23","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10847,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10764,"src":"23540:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23542:20:23","memberName":"declinedIndexPlusOne","nodeType":"MemberAccess","referencedDeclaration":12612,"src":"23540:22:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":10850,"indexExpression":{"id":10849,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10755,"src":"23563:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23540:35:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10852,"indexExpression":{"id":10851,"name":"invitee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10757,"src":"23576:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23540:44:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10854,"nodeType":"ExpressionStatement","src":"23533:51:23"}]},"id":10856,"implemented":true,"kind":"function","modifiers":[],"name":"_removeFromDeclinedIfPresent","nameLocation":"22827:28:23","nodeType":"FunctionDefinition","parameters":{"id":10758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10755,"mutability":"mutable","name":"challengeId","nameLocation":"22864:11:23","nodeType":"VariableDeclaration","scope":10856,"src":"22856:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10754,"name":"uint256","nodeType":"ElementaryTypeName","src":"22856:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10757,"mutability":"mutable","name":"invitee","nameLocation":"22885:7:23","nodeType":"VariableDeclaration","scope":10856,"src":"22877:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10756,"name":"address","nodeType":"ElementaryTypeName","src":"22877:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22855:38:23"},"returnParameters":{"id":10759,"nodeType":"ParameterList","parameters":[],"src":"22902:0:23"},"scope":10968,"src":"22818:771:23","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10885,"nodeType":"Block","src":"23903:161:23","statements":[{"assignments":[10866,10868],"declarations":[{"constant":false,"id":10866,"mutability":"mutable","name":"isPerson","nameLocation":"23915:8:23","nodeType":"VariableDeclaration","scope":10885,"src":"23910:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10865,"name":"bool","nodeType":"ElementaryTypeName","src":"23910:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10868,"mutability":"mutable","name":"reason","nameLocation":"23939:6:23","nodeType":"VariableDeclaration","scope":10885,"src":"23925:20:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10867,"name":"string","nodeType":"ElementaryTypeName","src":"23925:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":10874,"initialValue":{"arguments":[{"id":10872,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10862,"src":"23977:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":10869,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10860,"src":"23949:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23951:16:23","memberName":"veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":12562,"src":"23949:18:23","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":10871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23968:8:23","memberName":"isPerson","nodeType":"MemberAccess","referencedDeclaration":14839,"src":"23949:27:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$_t_string_memory_ptr_$","typeString":"function (address) view external returns (bool,string memory)"}},"id":10873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23949:36:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_string_memory_ptr_$","typeString":"tuple(bool,string memory)"}},"nodeType":"VariableDeclarationStatement","src":"23909:76:23"},{"condition":{"id":10876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"23995:9:23","subExpression":{"id":10875,"name":"isPerson","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10866,"src":"23996:8:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10884,"nodeType":"IfStatement","src":"23991:68:23","trueBody":{"errorCall":{"arguments":[{"id":10880,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10862,"src":"24043:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10881,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10868,"src":"24052:6:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":10877,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"24013:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24025:17:23","memberName":"NotVerifiedPerson","nodeType":"MemberAccess","referencedDeclaration":13358,"src":"24013:29:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory) pure"}},"id":10882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24013:46:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10883,"nodeType":"RevertStatement","src":"24006:53:23"}}]},"documentation":{"id":10857,"nodeType":"StructuredDocumentation","src":"23593:202:23","text":"@dev Reverts with `NotVerifiedPerson` if `account` does not pass VeBetterPassport's `isPerson` check.\n Used to gate participation actions (joining or auto-joining via stake challenge creation)."},"id":10886,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePerson","nameLocation":"23807:14:23","nodeType":"FunctionDefinition","parameters":{"id":10863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10860,"mutability":"mutable","name":"$","nameLocation":"23870:1:23","nodeType":"VariableDeclaration","scope":10886,"src":"23822:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10859,"nodeType":"UserDefinedTypeName","pathNode":{"id":10858,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["23822:21:23","23844:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"23822:39:23"},"referencedDeclaration":12643,"src":"23822:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"},{"constant":false,"id":10862,"mutability":"mutable","name":"account","nameLocation":"23881:7:23","nodeType":"VariableDeclaration","scope":10886,"src":"23873:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10861,"name":"address","nodeType":"ElementaryTypeName","src":"23873:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23821:68:23"},"returnParameters":{"id":10864,"nodeType":"ParameterList","parameters":[],"src":"23903:0:23"},"scope":10968,"src":"23798:266:23","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10912,"nodeType":"Block","src":"24167:282:23","statements":[{"assignments":[10895],"declarations":[{"constant":false,"id":10895,"mutability":"mutable","name":"minimumParticipants","nameLocation":"24297:19:23","nodeType":"VariableDeclaration","scope":10912,"src":"24289:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10894,"name":"uint256","nodeType":"ElementaryTypeName","src":"24289:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10905,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"id":10901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10896,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10889,"src":"24319:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24329:4:23","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"24319:14:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":10898,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"24337:14:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":10899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24352:13:23","memberName":"ChallengeKind","nodeType":"MemberAccess","referencedDeclaration":12660,"src":"24337:28:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeKind_$12660_$","typeString":"type(enum ChallengeTypes.ChallengeKind)"}},"id":10900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24366:5:23","memberName":"Stake","nodeType":"MemberAccess","referencedDeclaration":12658,"src":"24337:34:23","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"src":"24319:52:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"31","id":10903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24378:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"id":10904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24319:60:23","trueExpression":{"hexValue":"32","id":10902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24374:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"24289:90:23"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10906,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10889,"src":"24392:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10907,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24402:12:23","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"24392:22:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24415:6:23","memberName":"length","nodeType":"MemberAccess","src":"24392:29:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10909,"name":"minimumParticipants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10895,"src":"24425:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24392:52:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10893,"id":10911,"nodeType":"Return","src":"24385:59:23"}]},"id":10913,"implemented":true,"kind":"function","modifiers":[],"name":"_isChallengeValid","nameLocation":"24077:17:23","nodeType":"FunctionDefinition","parameters":{"id":10890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10889,"mutability":"mutable","name":"challenge","nameLocation":"24128:9:23","nodeType":"VariableDeclaration","scope":10913,"src":"24095:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10888,"nodeType":"UserDefinedTypeName","pathNode":{"id":10887,"name":"ChallengeTypes.Challenge","nameLocations":["24095:14:23","24110:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"24095:24:23"},"referencedDeclaration":12806,"src":"24095:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"src":"24094:44:23"},"returnParameters":{"id":10893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10892,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10913,"src":"24161:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10891,"name":"bool","nodeType":"ElementaryTypeName","src":"24161:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24160:6:23"},"scope":10968,"src":"24068:381:23","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10926,"nodeType":"Block","src":"24558:54:23","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":10921,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10916,"src":"24571:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10922,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24573:17:23","memberName":"xAllocationVoting","nodeType":"MemberAccess","referencedDeclaration":12565,"src":"24571:19:23","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":10923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24591:14:23","memberName":"currentRoundId","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"24571:34:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24571:36:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10920,"id":10925,"nodeType":"Return","src":"24564:43:23"}]},"id":10927,"implemented":true,"kind":"function","modifiers":[],"name":"_currentRound","nameLocation":"24462:13:23","nodeType":"FunctionDefinition","parameters":{"id":10917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10916,"mutability":"mutable","name":"$","nameLocation":"24524:1:23","nodeType":"VariableDeclaration","scope":10927,"src":"24476:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10915,"nodeType":"UserDefinedTypeName","pathNode":{"id":10914,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["24476:21:23","24498:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"24476:39:23"},"referencedDeclaration":12643,"src":"24476:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"src":"24475:51:23"},"returnParameters":{"id":10920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10919,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10927,"src":"24549:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10918,"name":"uint256","nodeType":"ElementaryTypeName","src":"24549:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24548:9:23"},"scope":10968,"src":"24453:159:23","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10966,"nodeType":"Block","src":"24726:267:23","statements":[{"assignments":[10939],"declarations":[{"constant":false,"id":10939,"mutability":"mutable","name":"$","nameLocation":"24780:1:23","nodeType":"VariableDeclaration","scope":10966,"src":"24732:49:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":10938,"nodeType":"UserDefinedTypeName","pathNode":{"id":10937,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["24732:21:23","24754:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"24732:39:23"},"referencedDeclaration":12643,"src":"24732:39:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":10943,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10940,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"24784:21:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":10941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24806:20:23","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"24784:42:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":10942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24784:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"24732:96:23"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10944,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10929,"src":"24839:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24854:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24839:16:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10947,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10929,"src":"24859:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":10948,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10939,"src":"24873:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24875:14:23","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"24873:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24859:30:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"24839:50:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10958,"nodeType":"IfStatement","src":"24835:109:23","trueBody":{"errorCall":{"arguments":[{"id":10955,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10929,"src":"24932:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10952,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"24898:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":10954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24910:21:23","memberName":"ChallengeDoesNotExist","nodeType":"MemberAccess","referencedDeclaration":13222,"src":"24898:33:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":10956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24898:46:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10957,"nodeType":"RevertStatement","src":"24891:53:23"}},{"expression":{"id":10964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10959,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"24951:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"id":10960,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10939,"src":"24963:1:23","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":10961,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24965:10:23","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"24963:12:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":10963,"indexExpression":{"id":10962,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10929,"src":"24976:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24963:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"src":"24951:37:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":10965,"nodeType":"ExpressionStatement","src":"24951:37:23"}]},"id":10967,"implemented":true,"kind":"function","modifiers":[],"name":"_getChallenge","nameLocation":"24625:13:23","nodeType":"FunctionDefinition","parameters":{"id":10930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10929,"mutability":"mutable","name":"challengeId","nameLocation":"24647:11:23","nodeType":"VariableDeclaration","scope":10967,"src":"24639:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10928,"name":"uint256","nodeType":"ElementaryTypeName","src":"24639:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24638:21:23"},"returnParameters":{"id":10934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10933,"mutability":"mutable","name":"challenge","nameLocation":"24715:9:23","nodeType":"VariableDeclaration","scope":10967,"src":"24682:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":10932,"nodeType":"UserDefinedTypeName","pathNode":{"id":10931,"name":"ChallengeTypes.Challenge","nameLocations":["24682:14:23","24697:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"24682:24:23"},"referencedDeclaration":12806,"src":"24682:24:23","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"src":"24681:44:23"},"scope":10968,"src":"24616:377:23","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":10969,"src":"533:24462:23","usedErrors":[13138,13140,13146,13152,13158,13160,13162,13170,13176,13182,13188,13194,13200,13206,13212,13218,13222,13226,13230,13234,13265,13269,13275,13281,13287,13317,13319,13329,13358],"usedEvents":[8643,8652,8659,8666,8673,8680,8685,8690,8695]}],"src":"32:24964:23"},"id":23},"contracts/challenges/libraries/ChallengeSettlementLogic.sol":{"ast":{"absolutePath":"contracts/challenges/libraries/ChallengeSettlementLogic.sol","exportedSymbols":{"ChallengeCoreLogic":[10968],"ChallengeSettlementLogic":[12543],"ChallengeStorageTypes":[12655],"ChallengeTypes":[12871],"IChallenges":[13860]},"id":12544,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10970,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:24"},{"absolutePath":"contracts/interfaces/IChallenges.sol","file":"../../interfaces/IChallenges.sol","id":10972,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12544,"sourceUnit":13861,"src":"57:63:24","symbolAliases":[{"foreign":{"id":10971,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"66:11:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeCoreLogic.sol","file":"./ChallengeCoreLogic.sol","id":10974,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12544,"sourceUnit":10969,"src":"121:62:24","symbolAliases":[{"foreign":{"id":10973,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"130:18:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeStorageTypes.sol","file":"./ChallengeStorageTypes.sol","id":10976,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12544,"sourceUnit":12656,"src":"184:68:24","symbolAliases":[{"foreign":{"id":10975,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"193:21:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeTypes.sol","file":"./ChallengeTypes.sol","id":10978,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12544,"sourceUnit":12872,"src":"253:54:24","symbolAliases":[{"foreign":{"id":10977,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"262:14:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ChallengeSettlementLogic","contractDependencies":[],"contractKind":"library","documentation":{"id":10979,"nodeType":"StructuredDocumentation","src":"309:610:24","text":"@title ChallengeSettlementLogic Library\n @notice Handles challenge completion (Max Actions), Split Win first-to-claim, refunds, and action aggregation.\n @dev Two distinct settlement paths:\n - Max Actions: requires explicit `completeChallenge` after `endRound`, top scorers split the pool.\n - Split Win: no completion step. Joined participants race to `claimSplitWinPrize` while the challenge is active;\n   the first `numWinners` to reach `threshold` actions claim a fixed `prizePerWinner`. After `endRound` the creator\n   can reclaim any unclaimed slots via `claimCreatorSplitWinRefund`."},"fullyImplemented":true,"id":12543,"linearizedBaseContracts":[12543],"name":"ChallengeSettlementLogic","nameLocation":"927:24:24","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":10980,"nodeType":"StructuredDocumentation","src":"956:184:24","text":"@notice Emitted when a challenge transitions to Completed status.\n @dev For Split Win the `bestScore` and `bestCount` fields are 0 and `settlementMode` is `SplitWinCompleted`."},"eventSelector":"fe3d640dfe4a822948e2e15da6bbca1b630a18d21e825edeb5816d60f4e5703b","id":10991,"name":"ChallengeCompleted","nameLocation":"1149:18:24","nodeType":"EventDefinition","parameters":{"id":10990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10982,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"1189:11:24","nodeType":"VariableDeclaration","scope":10991,"src":"1173:27:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10981,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10985,"indexed":false,"mutability":"mutable","name":"settlementMode","nameLocation":"1236:14:24","nodeType":"VariableDeclaration","scope":10991,"src":"1206:44:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},"typeName":{"id":10984,"nodeType":"UserDefinedTypeName","pathNode":{"id":10983,"name":"ChallengeTypes.SettlementMode","nameLocations":["1206:14:24","1221:14:24"],"nodeType":"IdentifierPath","referencedDeclaration":12678,"src":"1206:29:24"},"referencedDeclaration":12678,"src":"1206:29:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"visibility":"internal"},{"constant":false,"id":10987,"indexed":false,"mutability":"mutable","name":"bestScore","nameLocation":"1264:9:24","nodeType":"VariableDeclaration","scope":10991,"src":"1256:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10986,"name":"uint256","nodeType":"ElementaryTypeName","src":"1256:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10989,"indexed":false,"mutability":"mutable","name":"bestCount","nameLocation":"1287:9:24","nodeType":"VariableDeclaration","scope":10991,"src":"1279:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10988,"name":"uint256","nodeType":"ElementaryTypeName","src":"1279:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1167:133:24"},"src":"1143:158:24"},{"anonymous":false,"documentation":{"id":10992,"nodeType":"StructuredDocumentation","src":"1305:91:24","text":"@notice Emitted when an account claims a payout from a completed Max Actions challenge."},"eventSelector":"88f0c55826d9ef2f514f933a99edb543a1514ee7211d8bfa04e66e29954fe6b4","id":11000,"name":"ChallengePayoutClaimed","nameLocation":"1405:22:24","nodeType":"EventDefinition","parameters":{"id":10999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10994,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"1444:11:24","nodeType":"VariableDeclaration","scope":11000,"src":"1428:27:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10993,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10996,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1473:7:24","nodeType":"VariableDeclaration","scope":11000,"src":"1457:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10995,"name":"address","nodeType":"ElementaryTypeName","src":"1457:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10998,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1490:6:24","nodeType":"VariableDeclaration","scope":11000,"src":"1482:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10997,"name":"uint256","nodeType":"ElementaryTypeName","src":"1482:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:70:24"},"src":"1399:99:24"},{"anonymous":false,"documentation":{"id":11001,"nodeType":"StructuredDocumentation","src":"1502:90:24","text":"@notice Emitted when an account claims a refund from a cancelled or invalid challenge."},"eventSelector":"fb13634c7c32bbfbc28f461ca4b0c850887c9cfbde7d6c97f24bfcff25c7be36","id":11009,"name":"ChallengeRefundClaimed","nameLocation":"1601:22:24","nodeType":"EventDefinition","parameters":{"id":11008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11003,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"1640:11:24","nodeType":"VariableDeclaration","scope":11009,"src":"1624:27:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11002,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11005,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1669:7:24","nodeType":"VariableDeclaration","scope":11009,"src":"1653:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11004,"name":"address","nodeType":"ElementaryTypeName","src":"1653:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11007,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1686:6:24","nodeType":"VariableDeclaration","scope":11009,"src":"1678:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11006,"name":"uint256","nodeType":"ElementaryTypeName","src":"1678:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1623:70:24"},"src":"1595:99:24"},{"anonymous":false,"documentation":{"id":11010,"nodeType":"StructuredDocumentation","src":"1698:63:24","text":"@notice Emitted when a participant claims a Split Win slot."},"eventSelector":"4dcac657463253f9668a0d5c9a2f7c00a7d7ac72a1afe05e65034691fdd911c3","id":11022,"name":"SplitWinPrizeClaimed","nameLocation":"1770:20:24","nodeType":"EventDefinition","parameters":{"id":11021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11012,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"1812:11:24","nodeType":"VariableDeclaration","scope":11022,"src":"1796:27:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11011,"name":"uint256","nodeType":"ElementaryTypeName","src":"1796:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11014,"indexed":true,"mutability":"mutable","name":"winner","nameLocation":"1845:6:24","nodeType":"VariableDeclaration","scope":11022,"src":"1829:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11013,"name":"address","nodeType":"ElementaryTypeName","src":"1829:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11016,"indexed":false,"mutability":"mutable","name":"prize","nameLocation":"1865:5:24","nodeType":"VariableDeclaration","scope":11022,"src":"1857:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11015,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11018,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"1884:7:24","nodeType":"VariableDeclaration","scope":11022,"src":"1876:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11017,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11020,"indexed":false,"mutability":"mutable","name":"winnersClaimed","nameLocation":"1905:14:24","nodeType":"VariableDeclaration","scope":11022,"src":"1897:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11019,"name":"uint256","nodeType":"ElementaryTypeName","src":"1897:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:133:24"},"src":"1764:160:24"},{"anonymous":false,"documentation":{"id":11023,"nodeType":"StructuredDocumentation","src":"1928:92:24","text":"@notice Emitted when the creator reclaims unclaimed Split Win slots after the end round."},"eventSelector":"24c3cd6e13a29307bab455491e4cd5b29f6a457854a08f27f319ab4f8fec5138","id":11031,"name":"SplitWinCreatorRefunded","nameLocation":"2029:23:24","nodeType":"EventDefinition","parameters":{"id":11030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11025,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"2069:11:24","nodeType":"VariableDeclaration","scope":11031,"src":"2053:27:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11024,"name":"uint256","nodeType":"ElementaryTypeName","src":"2053:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11027,"indexed":true,"mutability":"mutable","name":"creator","nameLocation":"2098:7:24","nodeType":"VariableDeclaration","scope":11031,"src":"2082:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11026,"name":"address","nodeType":"ElementaryTypeName","src":"2082:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11029,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2115:6:24","nodeType":"VariableDeclaration","scope":11031,"src":"2107:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11028,"name":"uint256","nodeType":"ElementaryTypeName","src":"2107:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2052:70:24"},"src":"2023:100:24"},{"body":{"id":11313,"nodeType":"Block","src":"2331:3287:24","statements":[{"assignments":[11041],"declarations":[{"constant":false,"id":11041,"mutability":"mutable","name":"$","nameLocation":"2385:1:24","nodeType":"VariableDeclaration","scope":11313,"src":"2337:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":11040,"nodeType":"UserDefinedTypeName","pathNode":{"id":11039,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["2337:21:24","2359:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"2337:39:24"},"referencedDeclaration":12643,"src":"2337:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":11045,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11042,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"2389:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":11043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2411:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"2389:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":11044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2389:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2337:96:24"},{"assignments":[11050],"declarations":[{"constant":false,"id":11050,"mutability":"mutable","name":"challenge","nameLocation":"2472:9:24","nodeType":"VariableDeclaration","scope":11313,"src":"2439:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":11049,"nodeType":"UserDefinedTypeName","pathNode":{"id":11048,"name":"ChallengeTypes.Challenge","nameLocations":["2439:14:24","2454:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"2439:24:24"},"referencedDeclaration":12806,"src":"2439:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":11054,"initialValue":{"arguments":[{"id":11052,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"2498:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11051,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"2484:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":11053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2484:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2439:71:24"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":11060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11055,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"2602:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2612:13:24","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12752,"src":"2602:23:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11057,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"2629:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2644:13:24","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"2629:28:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":11059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2658:8:24","memberName":"SplitWin","nodeType":"MemberAccess","referencedDeclaration":12666,"src":"2629:37:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"2602:64:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11068,"nodeType":"IfStatement","src":"2598:139:24","trueBody":{"id":11067,"nodeType":"Block","src":"2668:69:24","statements":[{"errorCall":{"arguments":[{"id":11064,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"2718:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11061,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"2683:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2695:22:24","memberName":"SplitWinCannotComplete","nodeType":"MemberAccess","referencedDeclaration":13333,"src":"2683:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2683:47:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11066,"nodeType":"RevertStatement","src":"2676:54:24"}]}},{"assignments":[11070],"declarations":[{"constant":false,"id":11070,"mutability":"mutable","name":"currentRound","nameLocation":"2751:12:24","nodeType":"VariableDeclaration","scope":11313,"src":"2743:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11069,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11075,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":11071,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11041,"src":"2766:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2768:17:24","memberName":"xAllocationVoting","nodeType":"MemberAccess","referencedDeclaration":12565,"src":"2766:19:24","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":11073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2786:14:24","memberName":"currentRoundId","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"2766:34:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2766:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2743:59:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11076,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11070,"src":"2812:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":11077,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"2828:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2838:8:24","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"2828:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2812:34:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11090,"nodeType":"IfStatement","src":"2808:138:24","trueBody":{"id":11089,"nodeType":"Block","src":"2848:98:24","statements":[{"errorCall":{"arguments":[{"id":11083,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"2893:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11084,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"2906:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2916:8:24","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"2906:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11086,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11070,"src":"2926:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11080,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"2863:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2875:17:24","memberName":"ChallengeNotEnded","nodeType":"MemberAccess","referencedDeclaration":13242,"src":"2863:29:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":11087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2863:76:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11088,"nodeType":"RevertStatement","src":"2856:83:24"}]}},{"assignments":[11095],"declarations":[{"constant":false,"id":11095,"mutability":"mutable","name":"status","nameLocation":"3081:6:24","nodeType":"VariableDeclaration","scope":11313,"src":"3050:37:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"typeName":{"id":11094,"nodeType":"UserDefinedTypeName","pathNode":{"id":11093,"name":"ChallengeTypes.ChallengeStatus","nameLocations":["3050:14:24","3065:15:24"],"nodeType":"IdentifierPath","referencedDeclaration":12673,"src":"3050:30:24"},"referencedDeclaration":12673,"src":"3050:30:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"visibility":"internal"}],"id":11103,"initialValue":{"arguments":[{"arguments":[{"id":11100,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"3154:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11098,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"3121:18:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":11099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3140:13:24","memberName":"syncChallenge","nodeType":"MemberAccess","referencedDeclaration":9722,"src":"3121:32:24","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) returns (uint8)"}},"id":11101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3121:45:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":11096,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"3090:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3105:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"3090:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3090:77:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"VariableDeclarationStatement","src":"3050:117:24"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11104,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11095,"src":"3177:6:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11105,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"3187:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3202:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"3187:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3218:7:24","memberName":"Invalid","nodeType":"MemberAccess","referencedDeclaration":12672,"src":"3187:38:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"3177:48:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11109,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11095,"src":"3229:6:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11110,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"3239:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3254:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"3239:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3270:9:24","memberName":"Cancelled","nodeType":"MemberAccess","referencedDeclaration":12671,"src":"3239:40:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"3229:50:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3177:102:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11123,"nodeType":"IfStatement","src":"3173:185:24","trueBody":{"id":11122,"nodeType":"Block","src":"3281:77:24","statements":[{"errorCall":{"arguments":[{"id":11118,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"3331:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11119,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11095,"src":"3344:6:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"expression":{"id":11115,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"3296:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3308:22:24","memberName":"ChallengeInvalidStatus","nodeType":"MemberAccess","referencedDeclaration":13261,"src":"3296:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_ChallengeStatus_$12673_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.ChallengeStatus) pure"}},"id":11120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3296:55:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11121,"nodeType":"RevertStatement","src":"3289:62:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11124,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11095,"src":"3367:6:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11125,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"3377:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3392:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"3377:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11127,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3408:9:24","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":12670,"src":"3377:40:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"3367:50:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11136,"nodeType":"IfStatement","src":"3363:128:24","trueBody":{"id":11135,"nodeType":"Block","src":"3419:72:24","statements":[{"errorCall":{"arguments":[{"id":11132,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"3472:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11129,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"3434:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3446:25:24","memberName":"ChallengeAlreadyCompleted","nodeType":"MemberAccess","referencedDeclaration":13254,"src":"3434:37:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3434:50:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11134,"nodeType":"RevertStatement","src":"3427:57:24"}]}},{"assignments":[11138],"declarations":[{"constant":false,"id":11138,"mutability":"mutable","name":"participantsLen","nameLocation":"3774:15:24","nodeType":"VariableDeclaration","scope":11313,"src":"3766:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11137,"name":"uint256","nodeType":"ElementaryTypeName","src":"3766:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11142,"initialValue":{"expression":{"expression":{"id":11139,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"3792:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3802:12:24","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"3792:22:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3815:6:24","memberName":"length","nodeType":"MemberAccess","src":"3792:29:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3766:55:24"},{"assignments":[11147],"declarations":[{"constant":false,"id":11147,"mutability":"mutable","name":"cachedActions","nameLocation":"3844:13:24","nodeType":"VariableDeclaration","scope":11313,"src":"3827:30:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11145,"name":"uint256","nodeType":"ElementaryTypeName","src":"3827:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11146,"nodeType":"ArrayTypeName","src":"3827:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11153,"initialValue":{"arguments":[{"id":11151,"name":"participantsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11138,"src":"3874:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3860:13:24","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11148,"name":"uint256","nodeType":"ElementaryTypeName","src":"3864:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11149,"nodeType":"ArrayTypeName","src":"3864:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3860:30:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3827:63:24"},{"assignments":[11158],"declarations":[{"constant":false,"id":11158,"mutability":"mutable","name":"isPersonCache","nameLocation":"3910:13:24","nodeType":"VariableDeclaration","scope":11313,"src":"3896:27:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":11156,"name":"bool","nodeType":"ElementaryTypeName","src":"3896:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11157,"nodeType":"ArrayTypeName","src":"3896:6:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":11164,"initialValue":{"arguments":[{"id":11162,"name":"participantsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11138,"src":"3937:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3926:10:24","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":11159,"name":"bool","nodeType":"ElementaryTypeName","src":"3930:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11160,"nodeType":"ArrayTypeName","src":"3930:6:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":11163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3926:27:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3896:57:24"},{"body":{"id":11217,"nodeType":"Block","src":"4001:342:24","statements":[{"assignments":[11175],"declarations":[{"constant":false,"id":11175,"mutability":"mutable","name":"participant","nameLocation":"4017:11:24","nodeType":"VariableDeclaration","scope":11217,"src":"4009:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11174,"name":"address","nodeType":"ElementaryTypeName","src":"4009:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11180,"initialValue":{"baseExpression":{"expression":{"id":11176,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"4031:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4041:12:24","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"4031:22:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11179,"indexExpression":{"id":11178,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11166,"src":"4054:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4031:25:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4009:47:24"},{"assignments":[11182,null],"declarations":[{"constant":false,"id":11182,"mutability":"mutable","name":"isPerson","nameLocation":"4070:8:24","nodeType":"VariableDeclaration","scope":11217,"src":"4065:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11181,"name":"bool","nodeType":"ElementaryTypeName","src":"4065:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":11188,"initialValue":{"arguments":[{"id":11186,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11175,"src":"4112:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":11183,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11041,"src":"4084:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4086:16:24","memberName":"veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":12562,"src":"4084:18:24","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":11185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4103:8:24","memberName":"isPerson","nodeType":"MemberAccess","referencedDeclaration":14839,"src":"4084:27:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$_t_string_memory_ptr_$","typeString":"function (address) view external returns (bool,string memory)"}},"id":11187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4084:40:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_string_memory_ptr_$","typeString":"tuple(bool,string memory)"}},"nodeType":"VariableDeclarationStatement","src":"4064:60:24"},{"condition":{"id":11190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4136:9:24","subExpression":{"id":11189,"name":"isPerson","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11182,"src":"4137:8:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11192,"nodeType":"IfStatement","src":"4132:23:24","trueBody":{"id":11191,"nodeType":"Continue","src":"4147:8:24"}},{"expression":{"id":11197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11193,"name":"isPersonCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11158,"src":"4163:13:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11195,"indexExpression":{"id":11194,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11166,"src":"4177:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4163:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4182:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4163:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11198,"nodeType":"ExpressionStatement","src":"4163:23:24"},{"assignments":[11200],"declarations":[{"constant":false,"id":11200,"mutability":"mutable","name":"actions","nameLocation":"4202:7:24","nodeType":"VariableDeclaration","scope":11217,"src":"4194:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11199,"name":"uint256","nodeType":"ElementaryTypeName","src":"4194:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11205,"initialValue":{"arguments":[{"id":11202,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"4235:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},{"id":11203,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11175,"src":"4246:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11201,"name":"_getParticipantActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"4212:22:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Challenge_$12806_storage_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (struct ChallengeTypes.Challenge storage pointer,address) view returns (uint256)"}},"id":11204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4212:46:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4194:64:24"},{"expression":{"id":11210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11206,"name":"cachedActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11147,"src":"4266:13:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11208,"indexExpression":{"id":11207,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11166,"src":"4280:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4266:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11209,"name":"actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11200,"src":"4285:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4266:26:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11211,"nodeType":"ExpressionStatement","src":"4266:26:24"},{"expression":{"arguments":[{"id":11213,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"4317:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},{"id":11214,"name":"actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11200,"src":"4328:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11212,"name":"_updateBestScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12208,"src":"4300:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Challenge_$12806_storage_ptr_$_t_uint256_$returns$__$","typeString":"function (struct ChallengeTypes.Challenge storage pointer,uint256)"}},"id":11215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4300:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11216,"nodeType":"ExpressionStatement","src":"4300:36:24"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11168,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11166,"src":"3975:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11169,"name":"participantsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11138,"src":"3979:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3975:19:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11218,"initializationExpression":{"assignments":[11166],"declarations":[{"constant":false,"id":11166,"mutability":"mutable","name":"i","nameLocation":"3972:1:24","nodeType":"VariableDeclaration","scope":11218,"src":"3964:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11165,"name":"uint256","nodeType":"ElementaryTypeName","src":"3964:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11167,"nodeType":"VariableDeclarationStatement","src":"3964:9:24"},"loopExpression":{"expression":{"id":11172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3996:3:24","subExpression":{"id":11171,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11166,"src":"3996:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11173,"nodeType":"ExpressionStatement","src":"3996:3:24"},"nodeType":"ForStatement","src":"3959:384:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11219,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"4876:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11220,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4886:9:24","memberName":"bestCount","nodeType":"MemberAccess","referencedDeclaration":12780,"src":"4876:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4898:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4876:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11278,"nodeType":"IfStatement","src":"4872:407:24","trueBody":{"id":11277,"nodeType":"Block","src":"4901:378:24","statements":[{"assignments":[11224],"declarations":[{"constant":false,"id":11224,"mutability":"mutable","name":"bestScore","nameLocation":"4917:9:24","nodeType":"VariableDeclaration","scope":11277,"src":"4909:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11223,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11227,"initialValue":{"expression":{"id":11225,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"4929:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11226,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4939:9:24","memberName":"bestScore","nodeType":"MemberAccess","referencedDeclaration":12778,"src":"4929:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4909:39:24"},{"assignments":[11229],"declarations":[{"constant":false,"id":11229,"mutability":"mutable","name":"eligibleCount","nameLocation":"4964:13:24","nodeType":"VariableDeclaration","scope":11277,"src":"4956:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11228,"name":"uint256","nodeType":"ElementaryTypeName","src":"4956:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11230,"nodeType":"VariableDeclarationStatement","src":"4956:21:24"},{"body":{"id":11267,"nodeType":"Block","src":"5027:188:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11240,"name":"isPersonCache","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11158,"src":"5041:13:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11242,"indexExpression":{"id":11241,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"5055:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5041:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11243,"name":"cachedActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11147,"src":"5061:13:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11245,"indexExpression":{"id":11244,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"5075:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5061:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11246,"name":"bestScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11224,"src":"5081:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5061:29:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5041:49:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11266,"nodeType":"IfStatement","src":"5037:170:24","trueBody":{"id":11265,"nodeType":"Block","src":"5092:115:24","statements":[{"expression":{"id":11260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":11249,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11041,"src":"5104:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11256,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5106:16:24","memberName":"isEligibleWinner","nodeType":"MemberAccess","referencedDeclaration":12638,"src":"5104:18:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":11257,"indexExpression":{"id":11251,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"5123:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5104:31:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":11258,"indexExpression":{"baseExpression":{"expression":{"id":11252,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"5136:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11253,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5146:12:24","memberName":"participants","nodeType":"MemberAccess","referencedDeclaration":12785,"src":"5136:22:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11255,"indexExpression":{"id":11254,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"5159:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5136:25:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5104:58:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5165:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5104:65:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11261,"nodeType":"ExpressionStatement","src":"5104:65:24"},{"expression":{"id":11263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5181:15:24","subExpression":{"id":11262,"name":"eligibleCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11229,"src":"5181:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11264,"nodeType":"ExpressionStatement","src":"5181:15:24"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11234,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"5001:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11235,"name":"participantsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11138,"src":"5005:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5001:19:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11268,"initializationExpression":{"assignments":[11232],"declarations":[{"constant":false,"id":11232,"mutability":"mutable","name":"i","nameLocation":"4998:1:24","nodeType":"VariableDeclaration","scope":11268,"src":"4990:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11231,"name":"uint256","nodeType":"ElementaryTypeName","src":"4990:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11233,"nodeType":"VariableDeclarationStatement","src":"4990:9:24"},"loopExpression":{"expression":{"id":11238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5022:3:24","subExpression":{"id":11237,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"5022:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11239,"nodeType":"ExpressionStatement","src":"5022:3:24"},"nodeType":"ForStatement","src":"4985:230:24"},{"expression":{"id":11275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11269,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11041,"src":"5222:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5224:19:24","memberName":"eligibleWinnerCount","nodeType":"MemberAccess","referencedDeclaration":12642,"src":"5222:21:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":11273,"indexExpression":{"id":11271,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"5244:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5222:34:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11274,"name":"eligibleCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11229,"src":"5259:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5222:50:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11276,"nodeType":"ExpressionStatement","src":"5222:50:24"}]}},{"expression":{"id":11293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11279,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"5285:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5295:14:24","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"5285:24:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11282,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"5312:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5322:9:24","memberName":"bestCount","nodeType":"MemberAccess","referencedDeclaration":12780,"src":"5312:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5335:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5312:24:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"expression":{"id":11289,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"5397:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5412:14:24","memberName":"SettlementMode","nodeType":"MemberAccess","referencedDeclaration":12678,"src":"5397:29:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SettlementMode_$12678_$","typeString":"type(enum ChallengeTypes.SettlementMode)"}},"id":11291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5427:10:24","memberName":"TopWinners","nodeType":"MemberAccess","referencedDeclaration":12675,"src":"5397:40:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"id":11292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5312:125:24","trueExpression":{"expression":{"expression":{"id":11286,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"5345:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5360:14:24","memberName":"SettlementMode","nodeType":"MemberAccess","referencedDeclaration":12678,"src":"5345:29:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SettlementMode_$12678_$","typeString":"type(enum ChallengeTypes.SettlementMode)"}},"id":11288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5375:13:24","memberName":"CreatorRefund","nodeType":"MemberAccess","referencedDeclaration":12676,"src":"5345:43:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"src":"5285:152:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"id":11294,"nodeType":"ExpressionStatement","src":"5285:152:24"},{"expression":{"id":11301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11295,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"5443:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5453:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"5443:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":11298,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"5462:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5477:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"5462:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5493:9:24","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":12670,"src":"5462:40:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"5443:59:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"id":11302,"nodeType":"ExpressionStatement","src":"5443:59:24"},{"eventCall":{"arguments":[{"id":11304,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"5533:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11305,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"5546:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5556:14:24","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"5546:24:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},{"expression":{"id":11307,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"5572:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5582:9:24","memberName":"bestScore","nodeType":"MemberAccess","referencedDeclaration":12778,"src":"5572:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11309,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"5593:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5603:9:24","memberName":"bestCount","nodeType":"MemberAccess","referencedDeclaration":12780,"src":"5593:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11303,"name":"ChallengeCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10991,"src":"5514:18:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_enum$_SettlementMode_$12678_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.SettlementMode,uint256,uint256)"}},"id":11311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:99:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11312,"nodeType":"EmitStatement","src":"5509:104:24"}]},"documentation":{"id":11032,"nodeType":"StructuredDocumentation","src":"2127:146:24","text":"@notice Completes a Max Actions challenge after its end round and computes the settlement mode.\n @param challengeId Challenge identifier."},"functionSelector":"a7817bbc","id":11314,"implemented":true,"kind":"function","modifiers":[],"name":"completeChallenge","nameLocation":"2285:17:24","nodeType":"FunctionDefinition","parameters":{"id":11035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11034,"mutability":"mutable","name":"challengeId","nameLocation":"2311:11:24","nodeType":"VariableDeclaration","scope":11314,"src":"2303:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11033,"name":"uint256","nodeType":"ElementaryTypeName","src":"2303:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2302:21:24"},"returnParameters":{"id":11036,"nodeType":"ParameterList","parameters":[],"src":"2331:0:24"},"scope":12543,"src":"2276:3342:24","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11473,"nodeType":"Block","src":"5888:1701:24","statements":[{"assignments":[11326],"declarations":[{"constant":false,"id":11326,"mutability":"mutable","name":"$","nameLocation":"5942:1:24","nodeType":"VariableDeclaration","scope":11473,"src":"5894:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":11325,"nodeType":"UserDefinedTypeName","pathNode":{"id":11324,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["5894:21:24","5916:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"5894:39:24"},"referencedDeclaration":12643,"src":"5894:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":11330,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11327,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"5946:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":11328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5968:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"5946:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":11329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5946:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5894:96:24"},{"assignments":[11335],"declarations":[{"constant":false,"id":11335,"mutability":"mutable","name":"challenge","nameLocation":"6029:9:24","nodeType":"VariableDeclaration","scope":11473,"src":"5996:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":11334,"nodeType":"UserDefinedTypeName","pathNode":{"id":11333,"name":"ChallengeTypes.Challenge","nameLocations":["5996:14:24","6011:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"5996:24:24"},"referencedDeclaration":12806,"src":"5996:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":11339,"initialValue":{"arguments":[{"id":11337,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"6055:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11336,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"6041:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":11338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6041:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5996:71:24"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":11345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11340,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"6120:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11341,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6130:13:24","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12752,"src":"6120:23:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11342,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"6147:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6162:13:24","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"6147:28:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":11344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6176:8:24","memberName":"SplitWin","nodeType":"MemberAccess","referencedDeclaration":12666,"src":"6147:37:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"6120:64:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11355,"nodeType":"IfStatement","src":"6116:157:24","trueBody":{"id":11354,"nodeType":"Block","src":"6186:87:24","statements":[{"errorCall":{"arguments":[{"id":11349,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"6236:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11350,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"6249:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6259:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"6249:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"expression":{"id":11346,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"6201:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6213:22:24","memberName":"ChallengeInvalidStatus","nodeType":"MemberAccess","referencedDeclaration":13261,"src":"6201:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_ChallengeStatus_$12673_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.ChallengeStatus) pure"}},"id":11352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6201:65:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11353,"nodeType":"RevertStatement","src":"6194:72:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11356,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"6283:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6293:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"6283:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11358,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"6303:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6318:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"6303:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6334:7:24","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"6303:38:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"6283:58:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11369,"nodeType":"IfStatement","src":"6279:124:24","trueBody":{"id":11368,"nodeType":"Block","src":"6343:60:24","statements":[{"expression":{"arguments":[{"id":11365,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"6384:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11362,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"6351:18:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":11364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6370:13:24","memberName":"syncChallenge","nodeType":"MemberAccess","referencedDeclaration":9722,"src":"6351:32:24","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) returns (uint8)"}},"id":11366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6351:45:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":11367,"nodeType":"ExpressionStatement","src":"6351:45:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11370,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"6413:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6423:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"6413:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":11372,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"6433:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6448:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"6433:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6464:9:24","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":12670,"src":"6433:40:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"6413:60:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11385,"nodeType":"IfStatement","src":"6409:153:24","trueBody":{"id":11384,"nodeType":"Block","src":"6475:87:24","statements":[{"errorCall":{"arguments":[{"id":11379,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"6525:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11380,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"6538:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6548:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"6538:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"expression":{"id":11376,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"6490:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6502:22:24","memberName":"ChallengeInvalidStatus","nodeType":"MemberAccess","referencedDeclaration":13261,"src":"6490:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_ChallengeStatus_$12673_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.ChallengeStatus) pure"}},"id":11382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6490:65:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11383,"nodeType":"RevertStatement","src":"6483:72:24"}]}},{"condition":{"baseExpression":{"baseExpression":{"expression":{"id":11386,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11326,"src":"6572:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11387,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6574:10:24","memberName":"hasClaimed","nodeType":"MemberAccess","referencedDeclaration":12618,"src":"6572:12:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":11389,"indexExpression":{"id":11388,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"6585:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6572:25:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":11392,"indexExpression":{"expression":{"id":11390,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6598:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6602:6:24","memberName":"sender","nodeType":"MemberAccess","src":"6598:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6572:37:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11401,"nodeType":"IfStatement","src":"6568:101:24","trueBody":{"errorCall":{"arguments":[{"id":11396,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"6645:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11397,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6658:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6662:6:24","memberName":"sender","nodeType":"MemberAccess","src":"6658:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11393,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"6618:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6630:14:24","memberName":"AlreadyClaimed","nodeType":"MemberAccess","referencedDeclaration":13305,"src":"6618:26:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":11399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6618:51:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11400,"nodeType":"RevertStatement","src":"6611:58:24"}},{"condition":{"id":11408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7050:57:24","subExpression":{"arguments":[{"id":11403,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"7072:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11404,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"7085:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},{"expression":{"id":11405,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7096:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7100:6:24","memberName":"sender","nodeType":"MemberAccess","src":"7096:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11402,"name":"_isEligibleForPayout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12250,"src":"7051:20:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_Challenge_$12806_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (uint256,struct ChallengeTypes.Challenge storage pointer,address) view returns (bool)"}},"id":11407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7051:56:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11418,"nodeType":"IfStatement","src":"7046:136:24","trueBody":{"id":11417,"nodeType":"Block","src":"7109:73:24","statements":[{"errorCall":{"arguments":[{"id":11412,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"7151:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11413,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7164:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7168:6:24","memberName":"sender","nodeType":"MemberAccess","src":"7164:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11409,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"7124:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7136:14:24","memberName":"NothingToClaim","nodeType":"MemberAccess","referencedDeclaration":13293,"src":"7124:26:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":11415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7124:51:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11416,"nodeType":"RevertStatement","src":"7117:58:24"}]}},{"assignments":[11420],"declarations":[{"constant":false,"id":11420,"mutability":"mutable","name":"recipientCount","nameLocation":"7196:14:24","nodeType":"VariableDeclaration","scope":11473,"src":"7188:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11419,"name":"uint256","nodeType":"ElementaryTypeName","src":"7188:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11425,"initialValue":{"arguments":[{"id":11422,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"7235:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11423,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"7248:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}],"id":11421,"name":"_payoutRecipientCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12339,"src":"7213:21:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_Challenge_$12806_storage_ptr_$returns$_t_uint256_$","typeString":"function (uint256,struct ChallengeTypes.Challenge storage pointer) view returns (uint256)"}},"id":11424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7213:45:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7188:70:24"},{"expression":{"id":11434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11426,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"7264:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11428,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"7287:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7297:10:24","memberName":"totalPrize","nodeType":"MemberAccess","referencedDeclaration":12776,"src":"7287:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11430,"name":"recipientCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"7309:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11431,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"7325:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7335:14:24","memberName":"payoutsClaimed","nodeType":"MemberAccess","referencedDeclaration":12782,"src":"7325:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11427,"name":"_payoutAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12376,"src":"7273:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":11433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7273:77:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7264:86:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11435,"nodeType":"ExpressionStatement","src":"7264:86:24"},{"expression":{"id":11445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":11436,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11326,"src":"7357:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7359:10:24","memberName":"hasClaimed","nodeType":"MemberAccess","referencedDeclaration":12618,"src":"7357:12:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":11442,"indexExpression":{"id":11438,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"7370:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7357:25:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":11443,"indexExpression":{"expression":{"id":11439,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7383:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7387:6:24","memberName":"sender","nodeType":"MemberAccess","src":"7383:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7357:37:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7397:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7357:44:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11446,"nodeType":"ExpressionStatement","src":"7357:44:24"},{"expression":{"id":11450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7407:26:24","subExpression":{"expression":{"id":11447,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11335,"src":"7407:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7417:14:24","memberName":"payoutsClaimed","nodeType":"MemberAccess","referencedDeclaration":12782,"src":"7407:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11451,"nodeType":"ExpressionStatement","src":"7407:26:24"},{"condition":{"id":11459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7444:36:24","subExpression":{"arguments":[{"expression":{"id":11455,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7461:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7465:6:24","memberName":"sender","nodeType":"MemberAccess","src":"7461:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11457,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"7473:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":11452,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11326,"src":"7445:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7447:4:24","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"7445:6:24","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":11454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7452:8:24","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13116,"src":"7445:15:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7445:35:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11465,"nodeType":"IfStatement","src":"7440:77:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11460,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"7489:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7501:14:24","memberName":"TransferFailed","nodeType":"MemberAccess","referencedDeclaration":13319,"src":"7489:26:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7489:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11464,"nodeType":"RevertStatement","src":"7482:35:24"}},{"eventCall":{"arguments":[{"id":11467,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"7552:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11468,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7565:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7569:6:24","memberName":"sender","nodeType":"MemberAccess","src":"7565:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11470,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"7577:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11466,"name":"ChallengePayoutClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11000,"src":"7529:22:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":11471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7529:55:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11472,"nodeType":"EmitStatement","src":"7524:60:24"}]},"documentation":{"id":11315,"nodeType":"StructuredDocumentation","src":"5622:180:24","text":"@notice Claims the caller's payout from a completed Max Actions challenge.\n @param challengeId Challenge identifier.\n @return amount Amount transferred to the caller."},"functionSelector":"87d6e213","id":11474,"implemented":true,"kind":"function","modifiers":[],"name":"claimChallengePayout","nameLocation":"5814:20:24","nodeType":"FunctionDefinition","parameters":{"id":11318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11317,"mutability":"mutable","name":"challengeId","nameLocation":"5843:11:24","nodeType":"VariableDeclaration","scope":11474,"src":"5835:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11316,"name":"uint256","nodeType":"ElementaryTypeName","src":"5835:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5834:21:24"},"returnParameters":{"id":11321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11320,"mutability":"mutable","name":"amount","nameLocation":"5880:6:24","nodeType":"VariableDeclaration","scope":11474,"src":"5872:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11319,"name":"uint256","nodeType":"ElementaryTypeName","src":"5872:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5871:16:24"},"scope":12543,"src":"5805:1784:24","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11745,"nodeType":"Block","src":"8096:2420:24","statements":[{"assignments":[11486],"declarations":[{"constant":false,"id":11486,"mutability":"mutable","name":"$","nameLocation":"8150:1:24","nodeType":"VariableDeclaration","scope":11745,"src":"8102:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":11485,"nodeType":"UserDefinedTypeName","pathNode":{"id":11484,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["8102:21:24","8124:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"8102:39:24"},"referencedDeclaration":12643,"src":"8102:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":11490,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11487,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"8154:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":11488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8176:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"8154:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":11489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8154:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8102:96:24"},{"assignments":[11495],"declarations":[{"constant":false,"id":11495,"mutability":"mutable","name":"challenge","nameLocation":"8237:9:24","nodeType":"VariableDeclaration","scope":11745,"src":"8204:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":11494,"nodeType":"UserDefinedTypeName","pathNode":{"id":11493,"name":"ChallengeTypes.Challenge","nameLocations":["8204:14:24","8219:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"8204:24:24"},"referencedDeclaration":12806,"src":"8204:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":11499,"initialValue":{"arguments":[{"id":11497,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"8263:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11496,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"8249:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":11498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8204:71:24"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":11505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11500,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"8286:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8296:13:24","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12752,"src":"8286:23:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":11502,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"8313:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8328:13:24","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"8313:28:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":11504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8342:8:24","memberName":"SplitWin","nodeType":"MemberAccess","referencedDeclaration":12666,"src":"8313:37:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"8286:64:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11513,"nodeType":"IfStatement","src":"8282:138:24","trueBody":{"id":11512,"nodeType":"Block","src":"8352:68:24","statements":[{"errorCall":{"arguments":[{"id":11509,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"8401:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11506,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"8367:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8379:21:24","memberName":"NotASplitWinChallenge","nodeType":"MemberAccess","referencedDeclaration":13351,"src":"8367:33:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8367:46:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11511,"nodeType":"RevertStatement","src":"8360:53:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11514,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"8430:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11515,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8440:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"8430:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11516,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"8450:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8465:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"8450:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8481:7:24","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"8450:38:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"8430:58:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11527,"nodeType":"IfStatement","src":"8426:124:24","trueBody":{"id":11526,"nodeType":"Block","src":"8490:60:24","statements":[{"expression":{"arguments":[{"id":11523,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"8531:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11520,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"8498:18:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":11522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8517:13:24","memberName":"syncChallenge","nodeType":"MemberAccess","referencedDeclaration":9722,"src":"8498:32:24","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) returns (uint8)"}},"id":11524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8498:45:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":11525,"nodeType":"ExpressionStatement","src":"8498:45:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11528,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"8560:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11529,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8570:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"8560:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":11530,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"8580:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8595:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"8580:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8611:6:24","memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":12669,"src":"8580:37:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"8560:57:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11543,"nodeType":"IfStatement","src":"8556:150:24","trueBody":{"id":11542,"nodeType":"Block","src":"8619:87:24","statements":[{"errorCall":{"arguments":[{"id":11537,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"8669:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11538,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"8682:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8692:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"8682:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"expression":{"id":11534,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"8634:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8646:22:24","memberName":"ChallengeInvalidStatus","nodeType":"MemberAccess","referencedDeclaration":13261,"src":"8634:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_ChallengeStatus_$12673_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.ChallengeStatus) pure"}},"id":11540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8634:65:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11541,"nodeType":"RevertStatement","src":"8627:72:24"}]}},{"assignments":[11545],"declarations":[{"constant":false,"id":11545,"mutability":"mutable","name":"currentRound","nameLocation":"8720:12:24","nodeType":"VariableDeclaration","scope":11745,"src":"8712:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11544,"name":"uint256","nodeType":"ElementaryTypeName","src":"8712:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11550,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":11546,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11486,"src":"8735:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8737:17:24","memberName":"xAllocationVoting","nodeType":"MemberAccess","referencedDeclaration":12565,"src":"8735:19:24","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":11548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8755:14:24","memberName":"currentRoundId","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"8735:34:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8735:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8712:59:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11551,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"8781:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11552,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"8796:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11553,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8806:10:24","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"8796:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8781:35:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11564,"nodeType":"IfStatement","src":"8777:128:24","trueBody":{"id":11563,"nodeType":"Block","src":"8818:87:24","statements":[{"errorCall":{"arguments":[{"id":11558,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"8868:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11559,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"8881:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8891:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"8881:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"expression":{"id":11555,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"8833:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8845:22:24","memberName":"ChallengeInvalidStatus","nodeType":"MemberAccess","referencedDeclaration":13261,"src":"8833:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_ChallengeStatus_$12673_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.ChallengeStatus) pure"}},"id":11561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8833:65:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11562,"nodeType":"RevertStatement","src":"8826:72:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11565,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"8914:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":11566,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"8929:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8939:8:24","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"8929:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8914:33:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11579,"nodeType":"IfStatement","src":"8910:134:24","trueBody":{"id":11578,"nodeType":"Block","src":"8949:95:24","statements":[{"errorCall":{"arguments":[{"id":11572,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"8991:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11573,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"9004:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9014:8:24","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"9004:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11575,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"9024:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11569,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"8964:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8976:14:24","memberName":"ChallengeEnded","nodeType":"MemberAccess","referencedDeclaration":13250,"src":"8964:26:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":11576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8964:73:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11577,"nodeType":"RevertStatement","src":"8957:80:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"},"id":11590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":11580,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11486,"src":"9054:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9056:17:24","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"9054:19:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":11583,"indexExpression":{"id":11582,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"9074:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9054:32:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":11586,"indexExpression":{"expression":{"id":11584,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9087:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9091:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9087:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9054:44:24","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":11587,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"9102:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9117:17:24","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"9102:32:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":11589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9135:6:24","memberName":"Joined","nodeType":"MemberAccess","referencedDeclaration":12682,"src":"9102:39:24","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"9054:87:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11600,"nodeType":"IfStatement","src":"9050:168:24","trueBody":{"id":11599,"nodeType":"Block","src":"9143:75:24","statements":[{"errorCall":{"arguments":[{"id":11594,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"9187:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11595,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9200:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9204:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9200:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11591,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"9158:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9170:16:24","memberName":"NotParticipating","nodeType":"MemberAccess","referencedDeclaration":13281,"src":"9158:28:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9158:53:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11598,"nodeType":"RevertStatement","src":"9151:60:24"}]}},{"condition":{"baseExpression":{"baseExpression":{"expression":{"id":11601,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11486,"src":"9228:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9230:16:24","memberName":"isSplitWinWinner","nodeType":"MemberAccess","referencedDeclaration":12632,"src":"9228:18:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":11604,"indexExpression":{"id":11603,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"9247:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9228:31:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":11607,"indexExpression":{"expression":{"id":11605,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9260:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9264:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9260:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9228:43:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11616,"nodeType":"IfStatement","src":"9224:107:24","trueBody":{"errorCall":{"arguments":[{"id":11611,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"9307:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11612,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9320:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9324:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9320:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11608,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"9280:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9292:14:24","memberName":"AlreadyClaimed","nodeType":"MemberAccess","referencedDeclaration":13305,"src":"9280:26:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":11614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9280:51:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11615,"nodeType":"RevertStatement","src":"9273:58:24"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":11617,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"9342:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11618,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9352:7:24","memberName":"winners","nodeType":"MemberAccess","referencedDeclaration":12794,"src":"9342:17:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9360:6:24","memberName":"length","nodeType":"MemberAccess","src":"9342:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":11620,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"9370:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11621,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9380:10:24","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12772,"src":"9370:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9342:48:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11630,"nodeType":"IfStatement","src":"9338:123:24","trueBody":{"id":11629,"nodeType":"Block","src":"9392:69:24","statements":[{"errorCall":{"arguments":[{"id":11626,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"9442:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11623,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"9407:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9419:22:24","memberName":"SplitWinSlotsExhausted","nodeType":"MemberAccess","referencedDeclaration":13337,"src":"9407:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9407:47:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11628,"nodeType":"RevertStatement","src":"9400:54:24"}]}},{"expression":{"arguments":[{"id":11632,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11486,"src":"9554:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},{"expression":{"id":11633,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9557:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9561:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9557:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11631,"name":"_requirePerson","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12164,"src":"9539:14:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ChallengesStorage_$12643_storage_ptr_$_t_address_$returns$__$","typeString":"function (struct ChallengeStorageTypes.ChallengesStorage storage pointer,address) view"}},"id":11635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9539:29:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11636,"nodeType":"ExpressionStatement","src":"9539:29:24"},{"assignments":[11638],"declarations":[{"constant":false,"id":11638,"mutability":"mutable","name":"actions","nameLocation":"9583:7:24","nodeType":"VariableDeclaration","scope":11745,"src":"9575:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11637,"name":"uint256","nodeType":"ElementaryTypeName","src":"9575:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11645,"initialValue":{"arguments":[{"id":11640,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"9620:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},{"expression":{"id":11641,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9631:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9635:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9631:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11643,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11545,"src":"9643:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11639,"name":"_getParticipantActionsUpTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12502,"src":"9593:26:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Challenge_$12806_storage_ptr_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ChallengeTypes.Challenge storage pointer,address,uint256) view returns (uint256)"}},"id":11644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9593:63:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9575:81:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11646,"name":"actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11638,"src":"9666:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11647,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"9676:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9686:9:24","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12770,"src":"9676:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9666:29:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11662,"nodeType":"IfStatement","src":"9662:146:24","trueBody":{"id":11661,"nodeType":"Block","src":"9697:111:24","statements":[{"errorCall":{"arguments":[{"id":11653,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"9747:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11654,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9760:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9764:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9760:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11656,"name":"actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11638,"src":"9772:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11657,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"9781:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9791:9:24","memberName":"threshold","nodeType":"MemberAccess","referencedDeclaration":12770,"src":"9781:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11650,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"9712:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9724:22:24","memberName":"NotEligibleForSplitWin","nodeType":"MemberAccess","referencedDeclaration":13347,"src":"9712:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256,uint256) pure"}},"id":11659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9712:89:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11660,"nodeType":"RevertStatement","src":"9705:96:24"}]}},{"expression":{"id":11666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11663,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11480,"src":"9814:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11664,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"9823:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9833:14:24","memberName":"prizePerWinner","nodeType":"MemberAccess","referencedDeclaration":12774,"src":"9823:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9814:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11667,"nodeType":"ExpressionStatement","src":"9814:33:24"},{"expression":{"arguments":[{"expression":{"id":11673,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9876:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9880:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9876:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":11668,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"9853:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9863:7:24","memberName":"winners","nodeType":"MemberAccess","referencedDeclaration":12794,"src":"9853:17:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9871:4:24","memberName":"push","nodeType":"MemberAccess","src":"9853:22:24","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":11675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9853:34:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11676,"nodeType":"ExpressionStatement","src":"9853:34:24"},{"expression":{"id":11686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":11677,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11486,"src":"9893:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11682,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9895:16:24","memberName":"isSplitWinWinner","nodeType":"MemberAccess","referencedDeclaration":12632,"src":"9893:18:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":11683,"indexExpression":{"id":11679,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"9912:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9893:31:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":11684,"indexExpression":{"expression":{"id":11680,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9925:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9929:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9925:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9893:43:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9939:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"9893:50:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11687,"nodeType":"ExpressionStatement","src":"9893:50:24"},{"condition":{"id":11695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9954:36:24","subExpression":{"arguments":[{"expression":{"id":11691,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9971:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9975:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9971:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11693,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11480,"src":"9983:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":11688,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11486,"src":"9955:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9957:4:24","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"9955:6:24","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":11690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9962:8:24","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13116,"src":"9955:15:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9955:35:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11701,"nodeType":"IfStatement","src":"9950:77:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11696,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"9999:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10011:14:24","memberName":"TransferFailed","nodeType":"MemberAccess","referencedDeclaration":13319,"src":"9999:26:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9999:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11700,"nodeType":"RevertStatement","src":"9992:35:24"}},{"eventCall":{"arguments":[{"id":11703,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"10060:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11704,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10073:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10077:6:24","memberName":"sender","nodeType":"MemberAccess","src":"10073:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11706,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11480,"src":"10085:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11707,"name":"actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11638,"src":"10093:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":11708,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"10102:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11709,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10112:7:24","memberName":"winners","nodeType":"MemberAccess","referencedDeclaration":12794,"src":"10102:17:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10120:6:24","memberName":"length","nodeType":"MemberAccess","src":"10102:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11702,"name":"SplitWinPrizeClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11022,"src":"10039:20:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256,uint256,uint256)"}},"id":11711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10039:88:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11712,"nodeType":"EmitStatement","src":"10034:93:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":11713,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"10230:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10240:7:24","memberName":"winners","nodeType":"MemberAccess","referencedDeclaration":12794,"src":"10230:17:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10248:6:24","memberName":"length","nodeType":"MemberAccess","src":"10230:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11716,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"10258:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11717,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10268:10:24","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12772,"src":"10258:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10230:48:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11744,"nodeType":"IfStatement","src":"10226:286:24","trueBody":{"id":11743,"nodeType":"Block","src":"10280:232:24","statements":[{"expression":{"id":11725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11719,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"10288:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10298:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"10288:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":11722,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"10307:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10322:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"10307:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10338:9:24","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":12670,"src":"10307:40:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"10288:59:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"id":11726,"nodeType":"ExpressionStatement","src":"10288:59:24"},{"expression":{"id":11733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11727,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"10355:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11729,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10365:14:24","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"10355:24:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":11730,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"10382:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10397:14:24","memberName":"SettlementMode","nodeType":"MemberAccess","referencedDeclaration":12678,"src":"10382:29:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SettlementMode_$12678_$","typeString":"type(enum ChallengeTypes.SettlementMode)"}},"id":11732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10412:17:24","memberName":"SplitWinCompleted","nodeType":"MemberAccess","referencedDeclaration":12677,"src":"10382:47:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"src":"10355:74:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"id":11734,"nodeType":"ExpressionStatement","src":"10355:74:24"},{"eventCall":{"arguments":[{"id":11736,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11477,"src":"10461:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11737,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"10474:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10484:14:24","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"10474:24:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},{"hexValue":"30","id":11739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10500:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10503:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11735,"name":"ChallengeCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10991,"src":"10442:18:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_enum$_SettlementMode_$12678_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.SettlementMode,uint256,uint256)"}},"id":11741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10442:63:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11742,"nodeType":"EmitStatement","src":"10437:68:24"}]}}]},"documentation":{"id":11475,"nodeType":"StructuredDocumentation","src":"7593:419:24","text":"@notice Claims a Split Win slot during the active window.\n @dev Reads passport actions live across `[startRound, min(currentRound, endRound)]`. First `numWinners` callers\n to meet the threshold get one fixed `prizePerWinner` payout each. Once all slots are filled the challenge flips\n to Completed.\n @param challengeId Challenge identifier.\n @return amount Amount transferred to the caller."},"functionSelector":"a0427700","id":11746,"implemented":true,"kind":"function","modifiers":[],"name":"claimSplitWinPrize","nameLocation":"8024:18:24","nodeType":"FunctionDefinition","parameters":{"id":11478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11477,"mutability":"mutable","name":"challengeId","nameLocation":"8051:11:24","nodeType":"VariableDeclaration","scope":11746,"src":"8043:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11476,"name":"uint256","nodeType":"ElementaryTypeName","src":"8043:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8042:21:24"},"returnParameters":{"id":11481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11480,"mutability":"mutable","name":"amount","nameLocation":"8088:6:24","nodeType":"VariableDeclaration","scope":11746,"src":"8080:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11479,"name":"uint256","nodeType":"ElementaryTypeName","src":"8080:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8079:16:24"},"scope":12543,"src":"8015:2501:24","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11975,"nodeType":"Block","src":"10979:1992:24","statements":[{"assignments":[11758],"declarations":[{"constant":false,"id":11758,"mutability":"mutable","name":"$","nameLocation":"11033:1:24","nodeType":"VariableDeclaration","scope":11975,"src":"10985:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":11757,"nodeType":"UserDefinedTypeName","pathNode":{"id":11756,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["10985:21:24","11007:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"10985:39:24"},"referencedDeclaration":12643,"src":"10985:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":11762,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11759,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"11037:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":11760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11059:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"11037:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":11761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11037:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10985:96:24"},{"assignments":[11767],"declarations":[{"constant":false,"id":11767,"mutability":"mutable","name":"challenge","nameLocation":"11120:9:24","nodeType":"VariableDeclaration","scope":11975,"src":"11087:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":11766,"nodeType":"UserDefinedTypeName","pathNode":{"id":11765,"name":"ChallengeTypes.Challenge","nameLocations":["11087:14:24","11102:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"11087:24:24"},"referencedDeclaration":12806,"src":"11087:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":11771,"initialValue":{"arguments":[{"id":11769,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"11146:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11768,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"11132:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":11770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11132:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11087:71:24"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"id":11777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11772,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"11169:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11179:13:24","memberName":"challengeType","nodeType":"MemberAccess","referencedDeclaration":12752,"src":"11169:23:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":11774,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"11196:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11211:13:24","memberName":"ChallengeType","nodeType":"MemberAccess","referencedDeclaration":12667,"src":"11196:28:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeType_$12667_$","typeString":"type(enum ChallengeTypes.ChallengeType)"}},"id":11776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11225:8:24","memberName":"SplitWin","nodeType":"MemberAccess","referencedDeclaration":12666,"src":"11196:37:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"src":"11169:64:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11785,"nodeType":"IfStatement","src":"11165:138:24","trueBody":{"id":11784,"nodeType":"Block","src":"11235:68:24","statements":[{"errorCall":{"arguments":[{"id":11781,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"11284:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11778,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"11250:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11262:21:24","memberName":"NotASplitWinChallenge","nodeType":"MemberAccess","referencedDeclaration":13351,"src":"11250:33:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11250:46:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11783,"nodeType":"RevertStatement","src":"11243:53:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11786,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11312:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11316:6:24","memberName":"sender","nodeType":"MemberAccess","src":"11312:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":11788,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"11326:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11336:7:24","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"11326:17:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11312:31:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11798,"nodeType":"IfStatement","src":"11308:94:24","trueBody":{"errorCall":{"arguments":[{"expression":{"id":11794,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11391:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11395:6:24","memberName":"sender","nodeType":"MemberAccess","src":"11391:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11791,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"11352:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11364:26:24","memberName":"ChallengesUnauthorizedUser","nodeType":"MemberAccess","referencedDeclaration":13329,"src":"11352:38:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":11796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11352:50:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11797,"nodeType":"RevertStatement","src":"11345:57:24"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11799,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"11413:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11423:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"11413:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11801,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"11433:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11448:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"11433:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11464:7:24","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"11433:38:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"11413:58:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11812,"nodeType":"IfStatement","src":"11409:124:24","trueBody":{"id":11811,"nodeType":"Block","src":"11473:60:24","statements":[{"expression":{"arguments":[{"id":11808,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"11514:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11805,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"11481:18:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":11807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11500:13:24","memberName":"syncChallenge","nodeType":"MemberAccess","referencedDeclaration":9722,"src":"11481:32:24","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) returns (uint8)"}},"id":11809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11481:45:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":11810,"nodeType":"ExpressionStatement","src":"11481:45:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11813,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"11550:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11560:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"11550:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":11815,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"11570:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11585:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"11570:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11601:6:24","memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":12669,"src":"11570:37:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"11550:57:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11819,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"11617:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11627:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"11617:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":11821,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"11637:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11652:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"11637:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11668:9:24","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":12670,"src":"11637:40:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"11617:60:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11550:127:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11835,"nodeType":"IfStatement","src":"11539:232:24","trueBody":{"id":11834,"nodeType":"Block","src":"11684:87:24","statements":[{"errorCall":{"arguments":[{"id":11829,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"11734:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11830,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"11747:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11757:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"11747:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"expression":{"id":11826,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"11699:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11711:22:24","memberName":"ChallengeInvalidStatus","nodeType":"MemberAccess","referencedDeclaration":13261,"src":"11699:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_ChallengeStatus_$12673_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.ChallengeStatus) pure"}},"id":11832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11699:65:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11833,"nodeType":"RevertStatement","src":"11692:72:24"}]}},{"assignments":[11837],"declarations":[{"constant":false,"id":11837,"mutability":"mutable","name":"currentRound","nameLocation":"11785:12:24","nodeType":"VariableDeclaration","scope":11975,"src":"11777:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11836,"name":"uint256","nodeType":"ElementaryTypeName","src":"11777:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11842,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":11838,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11758,"src":"11800:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11802:17:24","memberName":"xAllocationVoting","nodeType":"MemberAccess","referencedDeclaration":12565,"src":"11800:19:24","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":11840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11820:14:24","memberName":"currentRoundId","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"11800:34:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11800:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11777:59:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11843,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"11846:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":11844,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"11862:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11872:8:24","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"11862:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11846:34:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11857,"nodeType":"IfStatement","src":"11842:138:24","trueBody":{"id":11856,"nodeType":"Block","src":"11882:98:24","statements":[{"errorCall":{"arguments":[{"id":11850,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"11927:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11851,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"11940:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11852,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11950:8:24","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"11940:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11853,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"11960:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11847,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"11897:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11909:17:24","memberName":"ChallengeNotEnded","nodeType":"MemberAccess","referencedDeclaration":13242,"src":"11897:29:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":11854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11897:76:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11855,"nodeType":"RevertStatement","src":"11890:83:24"}]}},{"condition":{"baseExpression":{"baseExpression":{"expression":{"id":11858,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11758,"src":"11990:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11992:11:24","memberName":"hasRefunded","nodeType":"MemberAccess","referencedDeclaration":12624,"src":"11990:13:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":11861,"indexExpression":{"id":11860,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"12004:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11990:26:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":11864,"indexExpression":{"expression":{"id":11862,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12017:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12021:6:24","memberName":"sender","nodeType":"MemberAccess","src":"12017:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11990:38:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11873,"nodeType":"IfStatement","src":"11986:103:24","trueBody":{"errorCall":{"arguments":[{"id":11868,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"12065:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11869,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12078:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12082:6:24","memberName":"sender","nodeType":"MemberAccess","src":"12078:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11865,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"12037:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12049:15:24","memberName":"AlreadyRefunded","nodeType":"MemberAccess","referencedDeclaration":13311,"src":"12037:27:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":11871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12037:52:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11872,"nodeType":"RevertStatement","src":"12030:59:24"}},{"assignments":[11875],"declarations":[{"constant":false,"id":11875,"mutability":"mutable","name":"unclaimedSlots","nameLocation":"12186:14:24","nodeType":"VariableDeclaration","scope":11975,"src":"12178:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11874,"name":"uint256","nodeType":"ElementaryTypeName","src":"12178:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11882,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11876,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"12203:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11877,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12213:10:24","memberName":"numWinners","nodeType":"MemberAccess","referencedDeclaration":12772,"src":"12203:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":11878,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"12226:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12236:7:24","memberName":"winners","nodeType":"MemberAccess","referencedDeclaration":12794,"src":"12226:17:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12244:6:24","memberName":"length","nodeType":"MemberAccess","src":"12226:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12203:47:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12178:72:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11883,"name":"unclaimedSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11875,"src":"12260:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12278:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12260:19:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11894,"nodeType":"IfStatement","src":"12256:84:24","trueBody":{"errorCall":{"arguments":[{"id":11889,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"12316:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11890,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12329:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12333:6:24","memberName":"sender","nodeType":"MemberAccess","src":"12329:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11886,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"12288:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12300:15:24","memberName":"NothingToRefund","nodeType":"MemberAccess","referencedDeclaration":13299,"src":"12288:27:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":11892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12288:52:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11893,"nodeType":"RevertStatement","src":"12281:59:24"}},{"assignments":[11896],"declarations":[{"constant":false,"id":11896,"mutability":"mutable","name":"paidOut","nameLocation":"12355:7:24","nodeType":"VariableDeclaration","scope":11975,"src":"12347:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11895,"name":"uint256","nodeType":"ElementaryTypeName","src":"12347:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11903,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11897,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"12365:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12375:14:24","memberName":"prizePerWinner","nodeType":"MemberAccess","referencedDeclaration":12774,"src":"12365:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"expression":{"id":11899,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"12392:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12402:7:24","memberName":"winners","nodeType":"MemberAccess","referencedDeclaration":12794,"src":"12392:17:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12410:6:24","memberName":"length","nodeType":"MemberAccess","src":"12392:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12365:51:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12347:69:24"},{"expression":{"id":11909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11904,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11752,"src":"12422:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11905,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"12431:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12441:10:24","memberName":"totalPrize","nodeType":"MemberAccess","referencedDeclaration":12776,"src":"12431:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11907,"name":"paidOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11896,"src":"12454:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12431:30:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12422:39:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11910,"nodeType":"ExpressionStatement","src":"12422:39:24"},{"expression":{"id":11920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":11911,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11758,"src":"12468:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11916,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12470:11:24","memberName":"hasRefunded","nodeType":"MemberAccess","referencedDeclaration":12624,"src":"12468:13:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":11917,"indexExpression":{"id":11913,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"12482:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12468:26:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":11918,"indexExpression":{"expression":{"id":11914,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12495:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12499:6:24","memberName":"sender","nodeType":"MemberAccess","src":"12495:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12468:38:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12509:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"12468:45:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11921,"nodeType":"ExpressionStatement","src":"12468:45:24"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":11927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11922,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"12524:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12534:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"12524:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11924,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"12544:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12559:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"12544:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12575:6:24","memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":12669,"src":"12544:37:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"12524:57:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11953,"nodeType":"IfStatement","src":"12520:295:24","trueBody":{"id":11952,"nodeType":"Block","src":"12583:232:24","statements":[{"expression":{"id":11934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11928,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"12591:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12601:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"12591:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":11931,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"12610:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12625:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"12610:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":11933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12641:9:24","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":12670,"src":"12610:40:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"12591:59:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"id":11935,"nodeType":"ExpressionStatement","src":"12591:59:24"},{"expression":{"id":11942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11936,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"12658:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11938,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12668:14:24","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"12658:24:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":11939,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"12685:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":11940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12700:14:24","memberName":"SettlementMode","nodeType":"MemberAccess","referencedDeclaration":12678,"src":"12685:29:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SettlementMode_$12678_$","typeString":"type(enum ChallengeTypes.SettlementMode)"}},"id":11941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12715:17:24","memberName":"SplitWinCompleted","nodeType":"MemberAccess","referencedDeclaration":12677,"src":"12685:47:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"src":"12658:74:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"id":11943,"nodeType":"ExpressionStatement","src":"12658:74:24"},{"eventCall":{"arguments":[{"id":11945,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"12764:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11946,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"12777:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":11947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12787:14:24","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"12777:24:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},{"hexValue":"30","id":11948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12803:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":11949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12806:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11944,"name":"ChallengeCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10991,"src":"12745:18:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_enum$_SettlementMode_$12678_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.SettlementMode,uint256,uint256)"}},"id":11950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12745:63:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11951,"nodeType":"EmitStatement","src":"12740:68:24"}]}},{"condition":{"id":11961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12825:36:24","subExpression":{"arguments":[{"expression":{"id":11957,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12842:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12846:6:24","memberName":"sender","nodeType":"MemberAccess","src":"12842:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11959,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11752,"src":"12854:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":11954,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11758,"src":"12826:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":11955,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12828:4:24","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"12826:6:24","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":11956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12833:8:24","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13116,"src":"12826:15:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12826:35:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11967,"nodeType":"IfStatement","src":"12821:77:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11962,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"12870:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":11964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12882:14:24","memberName":"TransferFailed","nodeType":"MemberAccess","referencedDeclaration":13319,"src":"12870:26:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12870:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11966,"nodeType":"RevertStatement","src":"12863:35:24"}},{"eventCall":{"arguments":[{"id":11969,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"12934:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11970,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12947:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12951:6:24","memberName":"sender","nodeType":"MemberAccess","src":"12947:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11972,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11752,"src":"12959:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11968,"name":"SplitWinCreatorRefunded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11031,"src":"12910:23:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":11973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12910:56:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11974,"nodeType":"EmitStatement","src":"12905:61:24"}]},"documentation":{"id":11747,"nodeType":"StructuredDocumentation","src":"10520:367:24","text":"@notice Reclaims unclaimed Split Win slots after the end round.\n @dev Only the creator can call. Pays `(numWinners - winnersClaimed) * prizePerWinner` plus any integer-division\n remainder retained at creation. Sets status to Completed if not already.\n @param challengeId Challenge identifier.\n @return amount Amount transferred to the creator."},"functionSelector":"cb3e0d2b","id":11976,"implemented":true,"kind":"function","modifiers":[],"name":"claimCreatorSplitWinRefund","nameLocation":"10899:26:24","nodeType":"FunctionDefinition","parameters":{"id":11750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11749,"mutability":"mutable","name":"challengeId","nameLocation":"10934:11:24","nodeType":"VariableDeclaration","scope":11976,"src":"10926:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11748,"name":"uint256","nodeType":"ElementaryTypeName","src":"10926:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10925:21:24"},"returnParameters":{"id":11753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11752,"mutability":"mutable","name":"amount","nameLocation":"10971:6:24","nodeType":"VariableDeclaration","scope":11976,"src":"10963:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11751,"name":"uint256","nodeType":"ElementaryTypeName","src":"10963:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10962:16:24"},"scope":12543,"src":"10890:2081:24","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12108,"nodeType":"Block","src":"13240:995:24","statements":[{"assignments":[11988],"declarations":[{"constant":false,"id":11988,"mutability":"mutable","name":"$","nameLocation":"13294:1:24","nodeType":"VariableDeclaration","scope":12108,"src":"13246:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":11987,"nodeType":"UserDefinedTypeName","pathNode":{"id":11986,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["13246:21:24","13268:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"13246:39:24"},"referencedDeclaration":12643,"src":"13246:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":11992,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11989,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"13298:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":11990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13320:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"13298:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":11991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13298:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"13246:96:24"},{"assignments":[11997],"declarations":[{"constant":false,"id":11997,"mutability":"mutable","name":"challenge","nameLocation":"13381:9:24","nodeType":"VariableDeclaration","scope":12108,"src":"13348:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":11996,"nodeType":"UserDefinedTypeName","pathNode":{"id":11995,"name":"ChallengeTypes.Challenge","nameLocations":["13348:14:24","13363:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"13348:24:24"},"referencedDeclaration":12806,"src":"13348:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":12001,"initialValue":{"arguments":[{"id":11999,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"13407:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11998,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"13393:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":12000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13393:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"13348:71:24"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":12007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12002,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11997,"src":"13430:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12003,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13440:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"13430:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":12004,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13450:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":12005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13465:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"13450:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":12006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13481:7:24","memberName":"Pending","nodeType":"MemberAccess","referencedDeclaration":12668,"src":"13450:38:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"13430:58:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12015,"nodeType":"IfStatement","src":"13426:124:24","trueBody":{"id":12014,"nodeType":"Block","src":"13490:60:24","statements":[{"expression":{"arguments":[{"id":12011,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"13531:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12008,"name":"ChallengeCoreLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"13498:18:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeCoreLogic_$10968_$","typeString":"type(library ChallengeCoreLogic)"}},"id":12010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13517:13:24","memberName":"syncChallenge","nodeType":"MemberAccess","referencedDeclaration":9722,"src":"13498:32:24","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) returns (uint8)"}},"id":12012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13498:45:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12013,"nodeType":"ExpressionStatement","src":"13498:45:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":12021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12016,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11997,"src":"13560:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13570:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"13560:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":12018,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13580:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":12019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13595:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"13580:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":12020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13611:9:24","memberName":"Cancelled","nodeType":"MemberAccess","referencedDeclaration":12671,"src":"13580:40:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"13560:60:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"id":12027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12022,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11997,"src":"13624:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12023,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13634:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"13624:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":12024,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"13644:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":12025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13659:15:24","memberName":"ChallengeStatus","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"13644:30:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$12673_$","typeString":"type(enum ChallengeTypes.ChallengeStatus)"}},"id":12026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13675:7:24","memberName":"Invalid","nodeType":"MemberAccess","referencedDeclaration":12672,"src":"13644:38:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"src":"13624:58:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13560:122:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12038,"nodeType":"IfStatement","src":"13556:215:24","trueBody":{"id":12037,"nodeType":"Block","src":"13684:87:24","statements":[{"errorCall":{"arguments":[{"id":12032,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"13734:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12033,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11997,"src":"13747:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13757:6:24","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":12755,"src":"13747:16:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}],"expression":{"id":12029,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"13699:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":12031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13711:22:24","memberName":"ChallengeInvalidStatus","nodeType":"MemberAccess","referencedDeclaration":13261,"src":"13699:34:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_ChallengeStatus_$12673_$returns$__$","typeString":"function (uint256,enum ChallengeTypes.ChallengeStatus) pure"}},"id":12035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13699:65:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12036,"nodeType":"RevertStatement","src":"13692:72:24"}]}},{"condition":{"baseExpression":{"baseExpression":{"expression":{"id":12039,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11988,"src":"13781:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12040,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13783:11:24","memberName":"hasRefunded","nodeType":"MemberAccess","referencedDeclaration":12624,"src":"13781:13:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":12042,"indexExpression":{"id":12041,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"13795:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13781:26:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":12045,"indexExpression":{"expression":{"id":12043,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13808:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13812:6:24","memberName":"sender","nodeType":"MemberAccess","src":"13808:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13781:38:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12054,"nodeType":"IfStatement","src":"13777:103:24","trueBody":{"errorCall":{"arguments":[{"id":12049,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"13856:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12050,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13869:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13873:6:24","memberName":"sender","nodeType":"MemberAccess","src":"13869:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12046,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"13828:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":12048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13840:15:24","memberName":"AlreadyRefunded","nodeType":"MemberAccess","referencedDeclaration":13311,"src":"13828:27:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":12052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13828:52:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12053,"nodeType":"RevertStatement","src":"13821:59:24"}},{"expression":{"id":12062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12055,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11982,"src":"13887:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12057,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"13910:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12058,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11997,"src":"13923:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},{"expression":{"id":12059,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13934:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13938:6:24","memberName":"sender","nodeType":"MemberAccess","src":"13934:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12056,"name":"_refundAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12304,"src":"13896:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_Challenge_$12806_storage_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,struct ChallengeTypes.Challenge storage pointer,address) view returns (uint256)"}},"id":12061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13896:49:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13887:58:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12063,"nodeType":"ExpressionStatement","src":"13887:58:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12064,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11982,"src":"13955:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13965:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13955:11:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12075,"nodeType":"IfStatement","src":"13951:76:24","trueBody":{"errorCall":{"arguments":[{"id":12070,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"14003:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12071,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14016:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14020:6:24","memberName":"sender","nodeType":"MemberAccess","src":"14016:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12067,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"13975:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":12069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13987:15:24","memberName":"NothingToRefund","nodeType":"MemberAccess","referencedDeclaration":13299,"src":"13975:27:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) pure"}},"id":12073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13975:52:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12074,"nodeType":"RevertStatement","src":"13968:59:24"}},{"expression":{"id":12085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":12076,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11988,"src":"14034:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14036:11:24","memberName":"hasRefunded","nodeType":"MemberAccess","referencedDeclaration":12624,"src":"14034:13:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":12082,"indexExpression":{"id":12078,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"14048:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14034:26:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":12083,"indexExpression":{"expression":{"id":12079,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14061:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14065:6:24","memberName":"sender","nodeType":"MemberAccess","src":"14061:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14034:38:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14075:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"14034:45:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12086,"nodeType":"ExpressionStatement","src":"14034:45:24"},{"condition":{"id":12094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14090:36:24","subExpression":{"arguments":[{"expression":{"id":12090,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14107:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14111:6:24","memberName":"sender","nodeType":"MemberAccess","src":"14107:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12092,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11982,"src":"14119:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":12087,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11988,"src":"14091:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14093:4:24","memberName":"b3tr","nodeType":"MemberAccess","referencedDeclaration":12559,"src":"14091:6:24","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"id":12089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14098:8:24","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":13116,"src":"14091:15:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":12093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14091:35:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12100,"nodeType":"IfStatement","src":"14086:77:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12095,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"14135:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":12097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14147:14:24","memberName":"TransferFailed","nodeType":"MemberAccess","referencedDeclaration":13319,"src":"14135:26:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14135:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12099,"nodeType":"RevertStatement","src":"14128:35:24"}},{"eventCall":{"arguments":[{"id":12102,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"14198:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12103,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14211:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14215:6:24","memberName":"sender","nodeType":"MemberAccess","src":"14211:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12105,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11982,"src":"14223:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12101,"name":"ChallengeRefundClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11009,"src":"14175:22:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":12106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14175:55:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12107,"nodeType":"EmitStatement","src":"14170:60:24"}]},"documentation":{"id":11977,"nodeType":"StructuredDocumentation","src":"12975:179:24","text":"@notice Claims the caller's refund from a cancelled or invalid challenge.\n @param challengeId Challenge identifier.\n @return amount Amount transferred to the caller."},"functionSelector":"b58bd356","id":12109,"implemented":true,"kind":"function","modifiers":[],"name":"claimChallengeRefund","nameLocation":"13166:20:24","nodeType":"FunctionDefinition","parameters":{"id":11980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11979,"mutability":"mutable","name":"challengeId","nameLocation":"13195:11:24","nodeType":"VariableDeclaration","scope":12109,"src":"13187:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11978,"name":"uint256","nodeType":"ElementaryTypeName","src":"13187:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13186:21:24"},"returnParameters":{"id":11983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11982,"mutability":"mutable","name":"amount","nameLocation":"13232:6:24","nodeType":"VariableDeclaration","scope":12109,"src":"13224:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11981,"name":"uint256","nodeType":"ElementaryTypeName","src":"13224:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13223:16:24"},"scope":12543,"src":"13157:1078:24","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12133,"nodeType":"Block","src":"14564:141:24","statements":[{"assignments":[12123],"declarations":[{"constant":false,"id":12123,"mutability":"mutable","name":"challenge","nameLocation":"14603:9:24","nodeType":"VariableDeclaration","scope":12133,"src":"14570:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":12122,"nodeType":"UserDefinedTypeName","pathNode":{"id":12121,"name":"ChallengeTypes.Challenge","nameLocations":["14570:14:24","14585:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"14570:24:24"},"referencedDeclaration":12806,"src":"14570:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"id":12127,"initialValue":{"arguments":[{"id":12125,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12112,"src":"14629:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12124,"name":"_getChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"14615:13:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_struct$_Challenge_$12806_storage_ptr_$","typeString":"function (uint256) view returns (struct ChallengeTypes.Challenge storage pointer)"}},"id":12126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14615:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14570:71:24"},{"expression":{"arguments":[{"id":12129,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12123,"src":"14677:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},{"id":12130,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12114,"src":"14688:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12128,"name":"_getParticipantActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12394,"src":"14654:22:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Challenge_$12806_storage_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (struct ChallengeTypes.Challenge storage pointer,address) view returns (uint256)"}},"id":12131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14654:46:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12118,"id":12132,"nodeType":"Return","src":"14647:53:24"}]},"documentation":{"id":12110,"nodeType":"StructuredDocumentation","src":"14239:219:24","text":"@notice Returns the actions counted for a participant within the challenge scope.\n @param challengeId Challenge identifier.\n @param participant Participant address.\n @return Number of counted actions."},"functionSelector":"14cf9077","id":12134,"implemented":true,"kind":"function","modifiers":[],"name":"getParticipantActions","nameLocation":"14470:21:24","nodeType":"FunctionDefinition","parameters":{"id":12115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12112,"mutability":"mutable","name":"challengeId","nameLocation":"14500:11:24","nodeType":"VariableDeclaration","scope":12134,"src":"14492:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12111,"name":"uint256","nodeType":"ElementaryTypeName","src":"14492:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12114,"mutability":"mutable","name":"participant","nameLocation":"14521:11:24","nodeType":"VariableDeclaration","scope":12134,"src":"14513:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12113,"name":"address","nodeType":"ElementaryTypeName","src":"14513:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14491:42:24"},"returnParameters":{"id":12118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12134,"src":"14555:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12116,"name":"uint256","nodeType":"ElementaryTypeName","src":"14555:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14554:9:24"},"scope":12543,"src":"14461:244:24","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12163,"nodeType":"Block","src":"15019:161:24","statements":[{"assignments":[12144,12146],"declarations":[{"constant":false,"id":12144,"mutability":"mutable","name":"isPerson","nameLocation":"15031:8:24","nodeType":"VariableDeclaration","scope":12163,"src":"15026:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12143,"name":"bool","nodeType":"ElementaryTypeName","src":"15026:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12146,"mutability":"mutable","name":"reason","nameLocation":"15055:6:24","nodeType":"VariableDeclaration","scope":12163,"src":"15041:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12145,"name":"string","nodeType":"ElementaryTypeName","src":"15041:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":12152,"initialValue":{"arguments":[{"id":12150,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12140,"src":"15093:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":12147,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12138,"src":"15065:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15067:16:24","memberName":"veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":12562,"src":"15065:18:24","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":12149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15084:8:24","memberName":"isPerson","nodeType":"MemberAccess","referencedDeclaration":14839,"src":"15065:27:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$_t_string_memory_ptr_$","typeString":"function (address) view external returns (bool,string memory)"}},"id":12151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15065:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_string_memory_ptr_$","typeString":"tuple(bool,string memory)"}},"nodeType":"VariableDeclarationStatement","src":"15025:76:24"},{"condition":{"id":12154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15111:9:24","subExpression":{"id":12153,"name":"isPerson","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12144,"src":"15112:8:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12162,"nodeType":"IfStatement","src":"15107:68:24","trueBody":{"errorCall":{"arguments":[{"id":12158,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12140,"src":"15159:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12159,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12146,"src":"15168:6:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":12155,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"15129:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":12157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15141:17:24","memberName":"NotVerifiedPerson","nodeType":"MemberAccess","referencedDeclaration":13358,"src":"15129:29:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory) pure"}},"id":12160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15129:46:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12161,"nodeType":"RevertStatement","src":"15122:53:24"}}]},"documentation":{"id":12135,"nodeType":"StructuredDocumentation","src":"14709:202:24","text":"@dev Reverts with `NotVerifiedPerson` if `account` does not pass VeBetterPassport's `isPerson` check.\n Used to gate quest-reward claims (Max Actions top-winner payout and Split Win slot claim)."},"id":12164,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePerson","nameLocation":"14923:14:24","nodeType":"FunctionDefinition","parameters":{"id":12141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12138,"mutability":"mutable","name":"$","nameLocation":"14986:1:24","nodeType":"VariableDeclaration","scope":12164,"src":"14938:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":12137,"nodeType":"UserDefinedTypeName","pathNode":{"id":12136,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["14938:21:24","14960:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"14938:39:24"},"referencedDeclaration":12643,"src":"14938:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"},{"constant":false,"id":12140,"mutability":"mutable","name":"account","nameLocation":"14997:7:24","nodeType":"VariableDeclaration","scope":12164,"src":"14989:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12139,"name":"address","nodeType":"ElementaryTypeName","src":"14989:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14937:68:24"},"returnParameters":{"id":12142,"nodeType":"ParameterList","parameters":[],"src":"15019:0:24"},"scope":12543,"src":"14914:266:24","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":12207,"nodeType":"Block","src":"15279:240:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12172,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"15289:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15299:9:24","memberName":"bestCount","nodeType":"MemberAccess","referencedDeclaration":12780,"src":"15289:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15312:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15289:24:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12176,"name":"actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12169,"src":"15317:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":12177,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"15327:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15337:9:24","memberName":"bestScore","nodeType":"MemberAccess","referencedDeclaration":12778,"src":"15327:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15317:29:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15289:57:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12195,"nodeType":"IfStatement","src":"15285:152:24","trueBody":{"id":12194,"nodeType":"Block","src":"15348:89:24","statements":[{"expression":{"id":12185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12181,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"15356:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12183,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15366:9:24","memberName":"bestScore","nodeType":"MemberAccess","referencedDeclaration":12778,"src":"15356:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12184,"name":"actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12169,"src":"15378:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15356:29:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12186,"nodeType":"ExpressionStatement","src":"15356:29:24"},{"expression":{"id":12191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12187,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"15393:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15403:9:24","memberName":"bestCount","nodeType":"MemberAccess","referencedDeclaration":12780,"src":"15393:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":12190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15415:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15393:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12192,"nodeType":"ExpressionStatement","src":"15393:23:24"},{"functionReturnParameters":12171,"id":12193,"nodeType":"Return","src":"15424:7:24"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12196,"name":"actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12169,"src":"15447:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12197,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"15458:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12198,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15468:9:24","memberName":"bestScore","nodeType":"MemberAccess","referencedDeclaration":12778,"src":"15458:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15447:30:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12206,"nodeType":"IfStatement","src":"15443:72:24","trueBody":{"id":12205,"nodeType":"Block","src":"15479:36:24","statements":[{"expression":{"id":12203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15487:21:24","subExpression":{"expression":{"id":12200,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12167,"src":"15487:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15497:9:24","memberName":"bestCount","nodeType":"MemberAccess","referencedDeclaration":12780,"src":"15487:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12204,"nodeType":"ExpressionStatement","src":"15487:21:24"}]}}]},"id":12208,"implemented":true,"kind":"function","modifiers":[],"name":"_updateBestScore","nameLocation":"15193:16:24","nodeType":"FunctionDefinition","parameters":{"id":12170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12167,"mutability":"mutable","name":"challenge","nameLocation":"15243:9:24","nodeType":"VariableDeclaration","scope":12208,"src":"15210:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":12166,"nodeType":"UserDefinedTypeName","pathNode":{"id":12165,"name":"ChallengeTypes.Challenge","nameLocations":["15210:14:24","15225:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"15210:24:24"},"referencedDeclaration":12806,"src":"15210:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"},{"constant":false,"id":12169,"mutability":"mutable","name":"actions","nameLocation":"15262:7:24","nodeType":"VariableDeclaration","scope":12208,"src":"15254:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12168,"name":"uint256","nodeType":"ElementaryTypeName","src":"15254:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15209:61:24"},"returnParameters":{"id":12171,"nodeType":"ParameterList","parameters":[],"src":"15279:0:24"},"scope":12543,"src":"15184:335:24","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12249,"nodeType":"Block","src":"15679:583:24","statements":[{"assignments":[12224],"declarations":[{"constant":false,"id":12224,"mutability":"mutable","name":"$","nameLocation":"15733:1:24","nodeType":"VariableDeclaration","scope":12249,"src":"15685:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":12223,"nodeType":"UserDefinedTypeName","pathNode":{"id":12222,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["15685:21:24","15707:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"15685:39:24"},"referencedDeclaration":12643,"src":"15685:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":12228,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12225,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"15737:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":12226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15759:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"15737:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":12227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15737:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15685:96:24"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},"id":12234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12229,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12213,"src":"15792:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15802:14:24","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"15792:24:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":12231,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"15820:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":12232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15835:14:24","memberName":"SettlementMode","nodeType":"MemberAccess","referencedDeclaration":12678,"src":"15820:29:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SettlementMode_$12678_$","typeString":"type(enum ChallengeTypes.SettlementMode)"}},"id":12233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15850:13:24","memberName":"CreatorRefund","nodeType":"MemberAccess","referencedDeclaration":12676,"src":"15820:43:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"src":"15792:71:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12241,"nodeType":"IfStatement","src":"15788:127:24","trueBody":{"id":12240,"nodeType":"Block","src":"15865:50:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12235,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12215,"src":"15880:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12236,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12213,"src":"15891:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15901:7:24","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"15891:17:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15880:28:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12219,"id":12239,"nodeType":"Return","src":"15873:35:24"}]}},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":12242,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12224,"src":"16217:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16219:16:24","memberName":"isEligibleWinner","nodeType":"MemberAccess","referencedDeclaration":12638,"src":"16217:18:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"}},"id":12245,"indexExpression":{"id":12244,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12210,"src":"16236:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16217:31:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":12247,"indexExpression":{"id":12246,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12215,"src":"16249:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16217:40:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12219,"id":12248,"nodeType":"Return","src":"16210:47:24"}]},"id":12250,"implemented":true,"kind":"function","modifiers":[],"name":"_isEligibleForPayout","nameLocation":"15532:20:24","nodeType":"FunctionDefinition","parameters":{"id":12216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12210,"mutability":"mutable","name":"challengeId","nameLocation":"15566:11:24","nodeType":"VariableDeclaration","scope":12250,"src":"15558:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12209,"name":"uint256","nodeType":"ElementaryTypeName","src":"15558:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12213,"mutability":"mutable","name":"challenge","nameLocation":"15616:9:24","nodeType":"VariableDeclaration","scope":12250,"src":"15583:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":12212,"nodeType":"UserDefinedTypeName","pathNode":{"id":12211,"name":"ChallengeTypes.Challenge","nameLocations":["15583:14:24","15598:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"15583:24:24"},"referencedDeclaration":12806,"src":"15583:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"},{"constant":false,"id":12215,"mutability":"mutable","name":"account","nameLocation":"15639:7:24","nodeType":"VariableDeclaration","scope":12250,"src":"15631:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12214,"name":"address","nodeType":"ElementaryTypeName","src":"15631:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15552:98:24"},"returnParameters":{"id":12219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12218,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12250,"src":"15673:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12217,"name":"bool","nodeType":"ElementaryTypeName","src":"15673:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15672:6:24"},"scope":12543,"src":"15523:739:24","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":12303,"nodeType":"Block","src":"16418:374:24","statements":[{"assignments":[12266],"declarations":[{"constant":false,"id":12266,"mutability":"mutable","name":"$","nameLocation":"16472:1:24","nodeType":"VariableDeclaration","scope":12303,"src":"16424:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":12265,"nodeType":"UserDefinedTypeName","pathNode":{"id":12264,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["16424:21:24","16446:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"16424:39:24"},"referencedDeclaration":12643,"src":"16424:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":12270,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12267,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"16476:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":12268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16498:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"16476:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":12269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16476:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16424:96:24"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"id":12276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12271,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12255,"src":"16531:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16541:4:24","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"16531:14:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":12273,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"16549:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":12274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16564:13:24","memberName":"ChallengeKind","nodeType":"MemberAccess","referencedDeclaration":12660,"src":"16549:28:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeKind_$12660_$","typeString":"type(enum ChallengeTypes.ChallengeKind)"}},"id":12275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16578:5:24","memberName":"Stake","nodeType":"MemberAccess","referencedDeclaration":12658,"src":"16549:34:24","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"src":"16531:52:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12293,"nodeType":"IfStatement","src":"16527:192:24","trueBody":{"id":12292,"nodeType":"Block","src":"16585:134:24","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"},"id":12286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":12277,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12266,"src":"16600:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16602:17:24","memberName":"participantStatus","nodeType":"MemberAccess","referencedDeclaration":12588,"src":"16600:19:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"}},"id":12280,"indexExpression":{"id":12279,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12252,"src":"16620:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16600:32:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"}},"id":12282,"indexExpression":{"id":12281,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12257,"src":"16633:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16600:41:24","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":12283,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"16645:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":12284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16660:17:24","memberName":"ParticipantStatus","nodeType":"MemberAccess","referencedDeclaration":12683,"src":"16645:32:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ParticipantStatus_$12683_$","typeString":"type(enum ChallengeTypes.ParticipantStatus)"}},"id":12285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16678:6:24","memberName":"Joined","nodeType":"MemberAccess","referencedDeclaration":12682,"src":"16645:39:24","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"src":"16600:84:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":12289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16711:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":12290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16600:112:24","trueExpression":{"expression":{"id":12287,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12255,"src":"16687:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16697:11:24","memberName":"stakeAmount","nodeType":"MemberAccess","referencedDeclaration":12764,"src":"16687:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12261,"id":12291,"nodeType":"Return","src":"16593:119:24"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12294,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12257,"src":"16732:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12295,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12255,"src":"16743:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16753:7:24","memberName":"creator","nodeType":"MemberAccess","referencedDeclaration":12762,"src":"16743:17:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16732:28:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":12300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16786:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":12301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16732:55:24","trueExpression":{"expression":{"id":12298,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12255,"src":"16763:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16773:10:24","memberName":"totalPrize","nodeType":"MemberAccess","referencedDeclaration":12776,"src":"16763:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12261,"id":12302,"nodeType":"Return","src":"16725:62:24"}]},"id":12304,"implemented":true,"kind":"function","modifiers":[],"name":"_refundAmount","nameLocation":"16275:13:24","nodeType":"FunctionDefinition","parameters":{"id":12258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12252,"mutability":"mutable","name":"challengeId","nameLocation":"16302:11:24","nodeType":"VariableDeclaration","scope":12304,"src":"16294:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12251,"name":"uint256","nodeType":"ElementaryTypeName","src":"16294:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12255,"mutability":"mutable","name":"challenge","nameLocation":"16352:9:24","nodeType":"VariableDeclaration","scope":12304,"src":"16319:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":12254,"nodeType":"UserDefinedTypeName","pathNode":{"id":12253,"name":"ChallengeTypes.Challenge","nameLocations":["16319:14:24","16334:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"16319:24:24"},"referencedDeclaration":12806,"src":"16319:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"},{"constant":false,"id":12257,"mutability":"mutable","name":"account","nameLocation":"16375:7:24","nodeType":"VariableDeclaration","scope":12304,"src":"16367:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12256,"name":"address","nodeType":"ElementaryTypeName","src":"16367:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16288:98:24"},"returnParameters":{"id":12261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12304,"src":"16409:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12259,"name":"uint256","nodeType":"ElementaryTypeName","src":"16409:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16408:9:24"},"scope":12543,"src":"16266:526:24","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":12338,"nodeType":"Block","src":"16935:456:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},"id":12319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12314,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12309,"src":"16945:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16955:14:24","memberName":"settlementMode","nodeType":"MemberAccess","referencedDeclaration":12758,"src":"16945:24:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":12316,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"16973:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeTypes_$12871_$","typeString":"type(library ChallengeTypes)"}},"id":12317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16988:14:24","memberName":"SettlementMode","nodeType":"MemberAccess","referencedDeclaration":12678,"src":"16973:29:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SettlementMode_$12678_$","typeString":"type(enum ChallengeTypes.SettlementMode)"}},"id":12318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17003:13:24","memberName":"CreatorRefund","nodeType":"MemberAccess","referencedDeclaration":12676,"src":"16973:43:24","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"src":"16945:71:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12323,"nodeType":"IfStatement","src":"16941:100:24","trueBody":{"id":12322,"nodeType":"Block","src":"17018:23:24","statements":[{"expression":{"hexValue":"31","id":12320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17033:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":12313,"id":12321,"nodeType":"Return","src":"17026:8:24"}]}},{"assignments":[12328],"declarations":[{"constant":false,"id":12328,"mutability":"mutable","name":"$","nameLocation":"17291:1:24","nodeType":"VariableDeclaration","scope":12338,"src":"17243:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":12327,"nodeType":"UserDefinedTypeName","pathNode":{"id":12326,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["17243:21:24","17265:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"17243:39:24"},"referencedDeclaration":12643,"src":"17243:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":12332,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12329,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"17295:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":12330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17317:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"17295:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":12331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17295:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17243:96:24"},{"expression":{"baseExpression":{"expression":{"id":12333,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12328,"src":"17352:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17354:19:24","memberName":"eligibleWinnerCount","nodeType":"MemberAccess","referencedDeclaration":12642,"src":"17352:21:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":12336,"indexExpression":{"id":12335,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12306,"src":"17374:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17352:34:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12313,"id":12337,"nodeType":"Return","src":"17345:41:24"}]},"id":12339,"implemented":true,"kind":"function","modifiers":[],"name":"_payoutRecipientCount","nameLocation":"16805:21:24","nodeType":"FunctionDefinition","parameters":{"id":12310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12306,"mutability":"mutable","name":"challengeId","nameLocation":"16840:11:24","nodeType":"VariableDeclaration","scope":12339,"src":"16832:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12305,"name":"uint256","nodeType":"ElementaryTypeName","src":"16832:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12309,"mutability":"mutable","name":"challenge","nameLocation":"16890:9:24","nodeType":"VariableDeclaration","scope":12339,"src":"16857:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":12308,"nodeType":"UserDefinedTypeName","pathNode":{"id":12307,"name":"ChallengeTypes.Challenge","nameLocations":["16857:14:24","16872:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"16857:24:24"},"referencedDeclaration":12806,"src":"16857:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"src":"16826:77:24"},"returnParameters":{"id":12313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12339,"src":"16926:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12311,"name":"uint256","nodeType":"ElementaryTypeName","src":"16926:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16925:9:24"},"scope":12543,"src":"16796:595:24","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":12375,"nodeType":"Block","src":"17533:313:24","statements":[{"assignments":[12351],"declarations":[{"constant":false,"id":12351,"mutability":"mutable","name":"baseShare","nameLocation":"17547:9:24","nodeType":"VariableDeclaration","scope":12375,"src":"17539:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12350,"name":"uint256","nodeType":"ElementaryTypeName","src":"17539:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12355,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12352,"name":"totalPrize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12341,"src":"17559:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":12353,"name":"recipientCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12343,"src":"17572:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17559:27:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17539:47:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12356,"name":"payoutsClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12345,"src":"17712:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":12357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17729:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17712:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12359,"name":"recipientCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12343,"src":"17734:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17712:36:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12372,"nodeType":"IfStatement","src":"17708:111:24","trueBody":{"id":12371,"nodeType":"Block","src":"17750:69:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12361,"name":"totalPrize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12341,"src":"17765:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12362,"name":"baseShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12351,"src":"17779:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12363,"name":"recipientCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12343,"src":"17792:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17809:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17792:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12366,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17791:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17779:32:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12368,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17778:34:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17765:47:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12349,"id":12370,"nodeType":"Return","src":"17758:54:24"}]}},{"expression":{"id":12373,"name":"baseShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12351,"src":"17832:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12349,"id":12374,"nodeType":"Return","src":"17825:16:24"}]},"id":12376,"implemented":true,"kind":"function","modifiers":[],"name":"_payoutAmount","nameLocation":"17404:13:24","nodeType":"FunctionDefinition","parameters":{"id":12346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12341,"mutability":"mutable","name":"totalPrize","nameLocation":"17431:10:24","nodeType":"VariableDeclaration","scope":12376,"src":"17423:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12340,"name":"uint256","nodeType":"ElementaryTypeName","src":"17423:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12343,"mutability":"mutable","name":"recipientCount","nameLocation":"17455:14:24","nodeType":"VariableDeclaration","scope":12376,"src":"17447:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12342,"name":"uint256","nodeType":"ElementaryTypeName","src":"17447:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12345,"mutability":"mutable","name":"payoutsClaimed","nameLocation":"17483:14:24","nodeType":"VariableDeclaration","scope":12376,"src":"17475:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12344,"name":"uint256","nodeType":"ElementaryTypeName","src":"17475:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17417:84:24"},"returnParameters":{"id":12349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12376,"src":"17524:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12347,"name":"uint256","nodeType":"ElementaryTypeName","src":"17524:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17523:9:24"},"scope":12543,"src":"17395:451:24","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":12393,"nodeType":"Block","src":"18003:88:24","statements":[{"expression":{"arguments":[{"id":12387,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12379,"src":"18043:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},{"id":12388,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12381,"src":"18054:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12389,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12379,"src":"18067:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18077:8:24","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"18067:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12386,"name":"_getParticipantActionsUpTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12502,"src":"18016:26:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Challenge_$12806_storage_ptr_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ChallengeTypes.Challenge storage pointer,address,uint256) view returns (uint256)"}},"id":12391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18016:70:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12385,"id":12392,"nodeType":"Return","src":"18009:77:24"}]},"id":12394,"implemented":true,"kind":"function","modifiers":[],"name":"_getParticipantActions","nameLocation":"17859:22:24","nodeType":"FunctionDefinition","parameters":{"id":12382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12379,"mutability":"mutable","name":"challenge","nameLocation":"17920:9:24","nodeType":"VariableDeclaration","scope":12394,"src":"17887:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":12378,"nodeType":"UserDefinedTypeName","pathNode":{"id":12377,"name":"ChallengeTypes.Challenge","nameLocations":["17887:14:24","17902:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"17887:24:24"},"referencedDeclaration":12806,"src":"17887:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"},{"constant":false,"id":12381,"mutability":"mutable","name":"participant","nameLocation":"17943:11:24","nodeType":"VariableDeclaration","scope":12394,"src":"17935:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12380,"name":"address","nodeType":"ElementaryTypeName","src":"17935:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17881:77:24"},"returnParameters":{"id":12385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12384,"mutability":"mutable","name":"totalActions","nameLocation":"17989:12:24","nodeType":"VariableDeclaration","scope":12394,"src":"17981:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12383,"name":"uint256","nodeType":"ElementaryTypeName","src":"17981:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17980:22:24"},"scope":12543,"src":"17850:241:24","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":12501,"nodeType":"Block","src":"18507:745:24","statements":[{"assignments":[12411],"declarations":[{"constant":false,"id":12411,"mutability":"mutable","name":"$","nameLocation":"18561:1:24","nodeType":"VariableDeclaration","scope":12501,"src":"18513:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":12410,"nodeType":"UserDefinedTypeName","pathNode":{"id":12409,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["18513:21:24","18535:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"18513:39:24"},"referencedDeclaration":12643,"src":"18513:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":12415,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12412,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"18565:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":12413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18587:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"18565:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":12414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18565:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"18513:96:24"},{"assignments":[12417],"declarations":[{"constant":false,"id":12417,"mutability":"mutable","name":"lastRound","nameLocation":"18623:9:24","nodeType":"VariableDeclaration","scope":12501,"src":"18615:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12416,"name":"uint256","nodeType":"ElementaryTypeName","src":"18615:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12426,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12418,"name":"upToRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12402,"src":"18635:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":12419,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"18647:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12420,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18657:8:24","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"18647:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18635:30:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":12424,"name":"upToRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12402,"src":"18689:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18635:63:24","trueExpression":{"expression":{"id":12422,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"18668:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18678:8:24","memberName":"endRound","nodeType":"MemberAccess","referencedDeclaration":12768,"src":"18668:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18615:83:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12427,"name":"lastRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"18709:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12428,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"18721:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18731:10:24","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"18721:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18709:32:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12433,"nodeType":"IfStatement","src":"18705:46:24","trueBody":{"expression":{"hexValue":"30","id":12431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18750:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":12406,"id":12432,"nodeType":"Return","src":"18743:8:24"}},{"condition":{"expression":{"id":12434,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"18762:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18772:7:24","memberName":"allApps","nodeType":"MemberAccess","referencedDeclaration":12760,"src":"18762:17:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12461,"nodeType":"IfStatement","src":"18758:230:24","trueBody":{"id":12460,"nodeType":"Block","src":"18781:207:24","statements":[{"body":{"id":12456,"nodeType":"Block","src":"18861:94:24","statements":[{"expression":{"id":12454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12447,"name":"totalActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12405,"src":"18871:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":12451,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"18927:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12452,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12437,"src":"18940:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":12448,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"18887:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18889:16:24","memberName":"veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":12562,"src":"18887:18:24","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":12450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18906:20:24","memberName":"userRoundActionCount","nodeType":"MemberAccess","referencedDeclaration":15006,"src":"18887:39:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":12453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18887:59:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18871:75:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12455,"nodeType":"ExpressionStatement","src":"18871:75:24"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12441,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12437,"src":"18832:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":12442,"name":"lastRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"18841:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18832:18:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12457,"initializationExpression":{"assignments":[12437],"declarations":[{"constant":false,"id":12437,"mutability":"mutable","name":"round","nameLocation":"18802:5:24","nodeType":"VariableDeclaration","scope":12457,"src":"18794:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12436,"name":"uint256","nodeType":"ElementaryTypeName","src":"18794:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12440,"initialValue":{"expression":{"id":12438,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"18810:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18820:10:24","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"18810:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18794:36:24"},"loopExpression":{"expression":{"id":12445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18852:7:24","subExpression":{"id":12444,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12437,"src":"18852:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12446,"nodeType":"ExpressionStatement","src":"18852:7:24"},"nodeType":"ForStatement","src":"18789:166:24"},{"expression":{"id":12458,"name":"totalActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12405,"src":"18969:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12406,"id":12459,"nodeType":"Return","src":"18962:19:24"}]}},{"body":{"id":12499,"nodeType":"Block","src":"19066:182:24","statements":[{"body":{"id":12497,"nodeType":"Block","src":"19124:118:24","statements":[{"expression":{"id":12495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12484,"name":"totalActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12405,"src":"19134:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":12488,"name":"participant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12400,"src":"19193:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12489,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12463,"src":"19206:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":12490,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"19213:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19223:6:24","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12797,"src":"19213:16:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":12493,"indexExpression":{"id":12492,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12474,"src":"19230:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19213:19:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":12485,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12411,"src":"19150:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12486,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19152:16:24","memberName":"veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":12562,"src":"19150:18:24","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":12487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19169:23:24","memberName":"userRoundActionCountApp","nodeType":"MemberAccess","referencedDeclaration":15030,"src":"19150:42:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (address,uint256,bytes32) view external returns (uint256)"}},"id":12494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19150:83:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19134:99:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12496,"nodeType":"ExpressionStatement","src":"19134:99:24"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12476,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12474,"src":"19090:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":12477,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"19094:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19104:6:24","memberName":"appIds","nodeType":"MemberAccess","referencedDeclaration":12797,"src":"19094:16:24","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":12479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19111:6:24","memberName":"length","nodeType":"MemberAccess","src":"19094:23:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19090:27:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12498,"initializationExpression":{"assignments":[12474],"declarations":[{"constant":false,"id":12474,"mutability":"mutable","name":"i","nameLocation":"19087:1:24","nodeType":"VariableDeclaration","scope":12498,"src":"19079:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12473,"name":"uint256","nodeType":"ElementaryTypeName","src":"19079:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12475,"nodeType":"VariableDeclarationStatement","src":"19079:9:24"},"loopExpression":{"expression":{"id":12482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19119:3:24","subExpression":{"id":12481,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12474,"src":"19119:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12483,"nodeType":"ExpressionStatement","src":"19119:3:24"},"nodeType":"ForStatement","src":"19074:168:24"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12467,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12463,"src":"19037:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":12468,"name":"lastRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12417,"src":"19046:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19037:18:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12500,"initializationExpression":{"assignments":[12463],"declarations":[{"constant":false,"id":12463,"mutability":"mutable","name":"round","nameLocation":"19007:5:24","nodeType":"VariableDeclaration","scope":12500,"src":"18999:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12462,"name":"uint256","nodeType":"ElementaryTypeName","src":"18999:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12466,"initialValue":{"expression":{"id":12464,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12398,"src":"19015:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19025:10:24","memberName":"startRound","nodeType":"MemberAccess","referencedDeclaration":12766,"src":"19015:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18999:36:24"},"loopExpression":{"expression":{"id":12471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19057:7:24","subExpression":{"id":12470,"name":"round","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12463,"src":"19057:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12472,"nodeType":"ExpressionStatement","src":"19057:7:24"},"nodeType":"ForStatement","src":"18994:254:24"}]},"documentation":{"id":12395,"nodeType":"StructuredDocumentation","src":"18095:229:24","text":"@dev Sums passport actions for `participant` over `[startRound, min(upToRound, endRound)]`.\n `upToRound` lets Split Win read live progress mid-challenge while keeping completed/Max Actions reads on the\n full window."},"id":12502,"implemented":true,"kind":"function","modifiers":[],"name":"_getParticipantActionsUpTo","nameLocation":"18336:26:24","nodeType":"FunctionDefinition","parameters":{"id":12403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12398,"mutability":"mutable","name":"challenge","nameLocation":"18401:9:24","nodeType":"VariableDeclaration","scope":12502,"src":"18368:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":12397,"nodeType":"UserDefinedTypeName","pathNode":{"id":12396,"name":"ChallengeTypes.Challenge","nameLocations":["18368:14:24","18383:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"18368:24:24"},"referencedDeclaration":12806,"src":"18368:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"},{"constant":false,"id":12400,"mutability":"mutable","name":"participant","nameLocation":"18424:11:24","nodeType":"VariableDeclaration","scope":12502,"src":"18416:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12399,"name":"address","nodeType":"ElementaryTypeName","src":"18416:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12402,"mutability":"mutable","name":"upToRound","nameLocation":"18449:9:24","nodeType":"VariableDeclaration","scope":12502,"src":"18441:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12401,"name":"uint256","nodeType":"ElementaryTypeName","src":"18441:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18362:100:24"},"returnParameters":{"id":12406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12405,"mutability":"mutable","name":"totalActions","nameLocation":"18493:12:24","nodeType":"VariableDeclaration","scope":12502,"src":"18485:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12404,"name":"uint256","nodeType":"ElementaryTypeName","src":"18485:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18484:22:24"},"scope":12543,"src":"18327:925:24","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":12541,"nodeType":"Block","src":"19366:267:24","statements":[{"assignments":[12514],"declarations":[{"constant":false,"id":12514,"mutability":"mutable","name":"$","nameLocation":"19420:1:24","nodeType":"VariableDeclaration","scope":12541,"src":"19372:49:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":12513,"nodeType":"UserDefinedTypeName","pathNode":{"id":12512,"name":"ChallengeStorageTypes.ChallengesStorage","nameLocations":["19372:21:24","19394:17:24"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"19372:39:24"},"referencedDeclaration":12643,"src":"19372:39:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"id":12518,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12515,"name":"ChallengeStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"19424:21:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ChallengeStorageTypes_$12655_$","typeString":"type(library ChallengeStorageTypes)"}},"id":12516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19446:20:24","memberName":"getChallengesStorage","nodeType":"MemberAccess","referencedDeclaration":12654,"src":"19424:42:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ChallengesStorage_$12643_storage_ptr_$","typeString":"function () pure returns (struct ChallengeStorageTypes.ChallengesStorage storage pointer)"}},"id":12517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19424:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"19372:96:24"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12519,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12504,"src":"19479:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19494:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19479:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12522,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12504,"src":"19499:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":12523,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12514,"src":"19513:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19515:14:24","memberName":"challengeCount","nodeType":"MemberAccess","referencedDeclaration":12574,"src":"19513:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19499:30:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19479:50:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12533,"nodeType":"IfStatement","src":"19475:109:24","trueBody":{"errorCall":{"arguments":[{"id":12530,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12504,"src":"19572:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12527,"name":"IChallenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"19538:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IChallenges_$13860_$","typeString":"type(contract IChallenges)"}},"id":12529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19550:21:24","memberName":"ChallengeDoesNotExist","nodeType":"MemberAccess","referencedDeclaration":13222,"src":"19538:33:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":12531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19538:46:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12532,"nodeType":"RevertStatement","src":"19531:53:24"}},{"expression":{"id":12539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12534,"name":"challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12508,"src":"19591:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"id":12535,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12514,"src":"19603:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage storage pointer"}},"id":12536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19605:10:24","memberName":"challenges","nodeType":"MemberAccess","referencedDeclaration":12581,"src":"19603:12:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge storage ref)"}},"id":12538,"indexExpression":{"id":12537,"name":"challengeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12504,"src":"19616:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19603:25:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage","typeString":"struct ChallengeTypes.Challenge storage ref"}},"src":"19591:37:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge storage pointer"}},"id":12540,"nodeType":"ExpressionStatement","src":"19591:37:24"}]},"id":12542,"implemented":true,"kind":"function","modifiers":[],"name":"_getChallenge","nameLocation":"19265:13:24","nodeType":"FunctionDefinition","parameters":{"id":12505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12504,"mutability":"mutable","name":"challengeId","nameLocation":"19287:11:24","nodeType":"VariableDeclaration","scope":12542,"src":"19279:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12503,"name":"uint256","nodeType":"ElementaryTypeName","src":"19279:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19278:21:24"},"returnParameters":{"id":12509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12508,"mutability":"mutable","name":"challenge","nameLocation":"19355:9:24","nodeType":"VariableDeclaration","scope":12542,"src":"19322:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"},"typeName":{"id":12507,"nodeType":"UserDefinedTypeName","pathNode":{"id":12506,"name":"ChallengeTypes.Challenge","nameLocations":["19322:14:24","19337:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"19322:24:24"},"referencedDeclaration":12806,"src":"19322:24:24","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}},"visibility":"internal"}],"src":"19321:44:24"},"scope":12543,"src":"19256:377:24","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":12544,"src":"919:18716:24","usedErrors":[13222,13242,13250,13254,13261,13281,13293,13299,13305,13311,13319,13329,13333,13337,13347,13351,13358],"usedEvents":[10991,11000,11009,11022,11031]}],"src":"32:19604:24"},"id":24},"contracts/challenges/libraries/ChallengeStorageTypes.sol":{"ast":{"absolutePath":"contracts/challenges/libraries/ChallengeStorageTypes.sol","exportedSymbols":{"ChallengeStorageTypes":[12655],"ChallengeTypes":[12871],"IB3TR":[13131],"IVeBetterPassport":[15484],"IX2EarnApps":[16381],"IXAllocationVotingGovernor":[17346]},"id":12656,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":12545,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:25"},{"absolutePath":"contracts/interfaces/IB3TR.sol","file":"../../interfaces/IB3TR.sol","id":12547,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12656,"sourceUnit":13132,"src":"57:51:25","symbolAliases":[{"foreign":{"id":12546,"name":"IB3TR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"66:5:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IVeBetterPassport.sol","file":"../../interfaces/IVeBetterPassport.sol","id":12549,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12656,"sourceUnit":15485,"src":"109:75:25","symbolAliases":[{"foreign":{"id":12548,"name":"IVeBetterPassport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"118:17:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IXAllocationVotingGovernor.sol","file":"../../interfaces/IXAllocationVotingGovernor.sol","id":12551,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12656,"sourceUnit":17347,"src":"185:93:25","symbolAliases":[{"foreign":{"id":12550,"name":"IXAllocationVotingGovernor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17346,"src":"194:26:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IX2EarnApps.sol","file":"../../interfaces/IX2EarnApps.sol","id":12553,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12656,"sourceUnit":16382,"src":"279:63:25","symbolAliases":[{"foreign":{"id":12552,"name":"IX2EarnApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16381,"src":"288:11:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/challenges/libraries/ChallengeTypes.sol","file":"./ChallengeTypes.sol","id":12555,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12656,"sourceUnit":12872,"src":"343:54:25","symbolAliases":[{"foreign":{"id":12554,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"352:14:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ChallengeStorageTypes","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":12655,"linearizedBaseContracts":[12655],"name":"ChallengeStorageTypes","nameLocation":"407:21:25","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ChallengeStorageTypes.ChallengesStorage","documentation":{"id":12556,"nodeType":"StructuredDocumentation","src":"433:60:25","text":"@custom:storage-location erc7201:b3tr.storage.Challenges"},"id":12643,"members":[{"constant":false,"id":12559,"mutability":"mutable","name":"b3tr","nameLocation":"533:4:25","nodeType":"VariableDeclaration","scope":12643,"src":"527:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"},"typeName":{"id":12558,"nodeType":"UserDefinedTypeName","pathNode":{"id":12557,"name":"IB3TR","nameLocations":["527:5:25"],"nodeType":"IdentifierPath","referencedDeclaration":13131,"src":"527:5:25"},"referencedDeclaration":13131,"src":"527:5:25","typeDescriptions":{"typeIdentifier":"t_contract$_IB3TR_$13131","typeString":"contract IB3TR"}},"visibility":"internal"},{"constant":false,"id":12562,"mutability":"mutable","name":"veBetterPassport","nameLocation":"561:16:25","nodeType":"VariableDeclaration","scope":12643,"src":"543:34:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"},"typeName":{"id":12561,"nodeType":"UserDefinedTypeName","pathNode":{"id":12560,"name":"IVeBetterPassport","nameLocations":["543:17:25"],"nodeType":"IdentifierPath","referencedDeclaration":15484,"src":"543:17:25"},"referencedDeclaration":15484,"src":"543:17:25","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"visibility":"internal"},{"constant":false,"id":12565,"mutability":"mutable","name":"xAllocationVoting","nameLocation":"610:17:25","nodeType":"VariableDeclaration","scope":12643,"src":"583:44:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"},"typeName":{"id":12564,"nodeType":"UserDefinedTypeName","pathNode":{"id":12563,"name":"IXAllocationVotingGovernor","nameLocations":["583:26:25"],"nodeType":"IdentifierPath","referencedDeclaration":17346,"src":"583:26:25"},"referencedDeclaration":17346,"src":"583:26:25","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"visibility":"internal"},{"constant":false,"id":12568,"mutability":"mutable","name":"x2EarnApps","nameLocation":"645:10:25","nodeType":"VariableDeclaration","scope":12643,"src":"633:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"},"typeName":{"id":12567,"nodeType":"UserDefinedTypeName","pathNode":{"id":12566,"name":"IX2EarnApps","nameLocations":["633:11:25"],"nodeType":"IdentifierPath","referencedDeclaration":16381,"src":"633:11:25"},"referencedDeclaration":16381,"src":"633:11:25","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"}},"visibility":"internal"},{"constant":false,"id":12570,"mutability":"mutable","name":"maxChallengeDuration","nameLocation":"669:20:25","nodeType":"VariableDeclaration","scope":12643,"src":"661:28:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12569,"name":"uint256","nodeType":"ElementaryTypeName","src":"661:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12572,"mutability":"mutable","name":"maxSelectedApps","nameLocation":"703:15:25","nodeType":"VariableDeclaration","scope":12643,"src":"695:23:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12571,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12574,"mutability":"mutable","name":"challengeCount","nameLocation":"732:14:25","nodeType":"VariableDeclaration","scope":12643,"src":"724:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12573,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12576,"mutability":"mutable","name":"maxParticipants","nameLocation":"760:15:25","nodeType":"VariableDeclaration","scope":12643,"src":"752:23:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12575,"name":"uint256","nodeType":"ElementaryTypeName","src":"752:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12581,"mutability":"mutable","name":"challenges","nameLocation":"848:10:25","nodeType":"VariableDeclaration","scope":12643,"src":"781:77:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge)"},"typeName":{"id":12580,"keyName":"challengeId","keyNameLocation":"797:11:25","keyType":{"id":12577,"name":"uint256","nodeType":"ElementaryTypeName","src":"789:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"781:66:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Challenge_$12806_storage_$","typeString":"mapping(uint256 => struct ChallengeTypes.Challenge)"},"valueName":"challenge","valueNameLocation":"837:9:25","valueType":{"id":12579,"nodeType":"UserDefinedTypeName","pathNode":{"id":12578,"name":"ChallengeTypes.Challenge","nameLocations":["812:14:25","827:9:25"],"nodeType":"IdentifierPath","referencedDeclaration":12806,"src":"812:24:25"},"referencedDeclaration":12806,"src":"812:24:25","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$12806_storage_ptr","typeString":"struct ChallengeTypes.Challenge"}}},"visibility":"internal"},{"constant":false,"id":12588,"mutability":"mutable","name":"participantStatus","nameLocation":"964:17:25","nodeType":"VariableDeclaration","scope":12643,"src":"864:117:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"},"typeName":{"id":12587,"keyName":"challengeId","keyNameLocation":"880:11:25","keyType":{"id":12582,"name":"uint256","nodeType":"ElementaryTypeName","src":"872:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"864:99:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$_$","typeString":"mapping(uint256 => mapping(address => enum ChallengeTypes.ParticipantStatus))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12586,"keyName":"account","keyNameLocation":"911:7:25","keyType":{"id":12583,"name":"address","nodeType":"ElementaryTypeName","src":"903:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"895:67:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_ParticipantStatus_$12683_$","typeString":"mapping(address => enum ChallengeTypes.ParticipantStatus)"},"valueName":"status","valueNameLocation":"955:6:25","valueType":{"id":12585,"nodeType":"UserDefinedTypeName","pathNode":{"id":12584,"name":"ChallengeTypes.ParticipantStatus","nameLocations":["922:14:25","937:17:25"],"nodeType":"IdentifierPath","referencedDeclaration":12683,"src":"922:32:25"},"referencedDeclaration":12683,"src":"922:32:25","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}}}},"visibility":"internal"},{"constant":false,"id":12594,"mutability":"mutable","name":"invitationEligible","nameLocation":"1061:18:25","nodeType":"VariableDeclaration","scope":12643,"src":"987:92:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"typeName":{"id":12593,"keyName":"challengeId","keyNameLocation":"1003:11:25","keyType":{"id":12589,"name":"uint256","nodeType":"ElementaryTypeName","src":"995:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"987:73:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12592,"keyName":"account","keyNameLocation":"1034:7:25","keyType":{"id":12590,"name":"address","nodeType":"ElementaryTypeName","src":"1026:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1018:41:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"eligible","valueNameLocation":"1050:8:25","valueType":{"id":12591,"name":"bool","nodeType":"ElementaryTypeName","src":"1045:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"internal"},{"constant":false,"id":12600,"mutability":"mutable","name":"participantIndexPlusOne","nameLocation":"1166:23:25","nodeType":"VariableDeclaration","scope":12643,"src":"1085:104:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"typeName":{"id":12599,"keyName":"challengeId","keyNameLocation":"1101:11:25","keyType":{"id":12595,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1085:80:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12598,"keyName":"account","keyNameLocation":"1132:7:25","keyType":{"id":12596,"name":"address","nodeType":"ElementaryTypeName","src":"1124:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1116:48:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"indexPlusOne","valueNameLocation":"1151:12:25","valueType":{"id":12597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1143:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":12606,"mutability":"mutable","name":"invitedIndexPlusOne","nameLocation":"1276:19:25","nodeType":"VariableDeclaration","scope":12643,"src":"1195:100:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"typeName":{"id":12605,"keyName":"challengeId","keyNameLocation":"1211:11:25","keyType":{"id":12601,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1195:80:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12604,"keyName":"account","keyNameLocation":"1242:7:25","keyType":{"id":12602,"name":"address","nodeType":"ElementaryTypeName","src":"1234:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1226:48:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"indexPlusOne","valueNameLocation":"1261:12:25","valueType":{"id":12603,"name":"uint256","nodeType":"ElementaryTypeName","src":"1253:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":12612,"mutability":"mutable","name":"declinedIndexPlusOne","nameLocation":"1382:20:25","nodeType":"VariableDeclaration","scope":12643,"src":"1301:101:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"typeName":{"id":12611,"keyName":"challengeId","keyNameLocation":"1317:11:25","keyType":{"id":12607,"name":"uint256","nodeType":"ElementaryTypeName","src":"1309:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1301:80:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12610,"keyName":"account","keyNameLocation":"1348:7:25","keyType":{"id":12608,"name":"address","nodeType":"ElementaryTypeName","src":"1340:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1332:48:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"indexPlusOne","valueNameLocation":"1367:12:25","valueType":{"id":12609,"name":"uint256","nodeType":"ElementaryTypeName","src":"1359:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":12618,"mutability":"mutable","name":"hasClaimed","nameLocation":"1481:10:25","nodeType":"VariableDeclaration","scope":12643,"src":"1408:83:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"typeName":{"id":12617,"keyName":"challengeId","keyNameLocation":"1424:11:25","keyType":{"id":12613,"name":"uint256","nodeType":"ElementaryTypeName","src":"1416:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1408:72:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12616,"keyName":"account","keyNameLocation":"1455:7:25","keyType":{"id":12614,"name":"address","nodeType":"ElementaryTypeName","src":"1447:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1439:40:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"claimed","valueNameLocation":"1471:7:25","valueType":{"id":12615,"name":"bool","nodeType":"ElementaryTypeName","src":"1466:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"internal"},{"constant":false,"id":12624,"mutability":"mutable","name":"hasRefunded","nameLocation":"1571:11:25","nodeType":"VariableDeclaration","scope":12643,"src":"1497:85:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"typeName":{"id":12623,"keyName":"challengeId","keyNameLocation":"1513:11:25","keyType":{"id":12619,"name":"uint256","nodeType":"ElementaryTypeName","src":"1505:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1497:73:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12622,"keyName":"account","keyNameLocation":"1544:7:25","keyType":{"id":12620,"name":"address","nodeType":"ElementaryTypeName","src":"1536:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1528:41:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"refunded","valueNameLocation":"1560:8:25","valueType":{"id":12621,"name":"bool","nodeType":"ElementaryTypeName","src":"1555:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"internal"},{"constant":false,"id":12626,"mutability":"mutable","name":"minBetAmount","nameLocation":"1596:12:25","nodeType":"VariableDeclaration","scope":12643,"src":"1588:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12625,"name":"uint256","nodeType":"ElementaryTypeName","src":"1588:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12632,"mutability":"mutable","name":"isSplitWinWinner","nameLocation":"1688:16:25","nodeType":"VariableDeclaration","scope":12643,"src":"1614:90:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"typeName":{"id":12631,"keyName":"challengeId","keyNameLocation":"1630:11:25","keyType":{"id":12627,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1614:73:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12630,"keyName":"account","keyNameLocation":"1661:7:25","keyType":{"id":12628,"name":"address","nodeType":"ElementaryTypeName","src":"1653:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1645:41:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"isWinner","valueNameLocation":"1677:8:25","valueType":{"id":12629,"name":"bool","nodeType":"ElementaryTypeName","src":"1672:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"internal"},{"constant":false,"id":12638,"mutability":"mutable","name":"isEligibleWinner","nameLocation":"2266:16:25","nodeType":"VariableDeclaration","scope":12643,"src":"2192:90:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"typeName":{"id":12637,"keyName":"challengeId","keyNameLocation":"2208:11:25","keyType":{"id":12633,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2192:73:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(uint256 => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12636,"keyName":"account","keyNameLocation":"2239:7:25","keyType":{"id":12634,"name":"address","nodeType":"ElementaryTypeName","src":"2231:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2223:41:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"eligible","valueNameLocation":"2255:8:25","valueType":{"id":12635,"name":"bool","nodeType":"ElementaryTypeName","src":"2250:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"internal"},{"constant":false,"id":12642,"mutability":"mutable","name":"eligibleWinnerCount","nameLocation":"2717:19:25","nodeType":"VariableDeclaration","scope":12643,"src":"2671:65:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":12641,"keyName":"challengeId","keyNameLocation":"2687:11:25","keyType":{"id":12639,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2671:45:25","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"count","valueNameLocation":"2710:5:25","valueType":{"id":12640,"name":"uint256","nodeType":"ElementaryTypeName","src":"2702:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"ChallengesStorage","nameLocation":"503:17:25","nodeType":"StructDefinition","scope":12655,"src":"496:2245:25","visibility":"public"},{"constant":true,"id":12646,"mutability":"constant","name":"ChallengesStorageLocation","nameLocation":"2874:25:25","nodeType":"VariableDeclaration","scope":12655,"src":"2849:123:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2849:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834363032633761373965616332633138366135303439666131386161353133653234623638396131656433323737663234623165356234323636313264313030","id":12645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2906:66:25","typeDescriptions":{"typeIdentifier":"t_rational_31666811061502478329270442030130571231396433022287237791472769201916211286272_by_1","typeString":"int_const 3166...(69 digits omitted)...6272"},"value":"0x4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d100"},"visibility":"private"},{"body":{"id":12653,"nodeType":"Block","src":"3061:68:25","statements":[{"AST":{"nodeType":"YulBlock","src":"3076:49:25","statements":[{"nodeType":"YulAssignment","src":"3084:35:25","value":{"name":"ChallengesStorageLocation","nodeType":"YulIdentifier","src":"3094:25:25"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"3084:6:25"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":12650,"isOffset":false,"isSlot":true,"src":"3084:6:25","suffix":"slot","valueSize":1},{"declaration":12646,"isOffset":false,"isSlot":false,"src":"3094:25:25","valueSize":1}],"id":12652,"nodeType":"InlineAssembly","src":"3067:58:25"}]},"id":12654,"implemented":true,"kind":"function","modifiers":[],"name":"getChallengesStorage","nameLocation":"2986:20:25","nodeType":"FunctionDefinition","parameters":{"id":12647,"nodeType":"ParameterList","parameters":[],"src":"3006:2:25"},"returnParameters":{"id":12651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12650,"mutability":"mutable","name":"$","nameLocation":"3058:1:25","nodeType":"VariableDeclaration","scope":12654,"src":"3032:27:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"},"typeName":{"id":12649,"nodeType":"UserDefinedTypeName","pathNode":{"id":12648,"name":"ChallengesStorage","nameLocations":["3032:17:25"],"nodeType":"IdentifierPath","referencedDeclaration":12643,"src":"3032:17:25"},"referencedDeclaration":12643,"src":"3032:17:25","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengesStorage_$12643_storage_ptr","typeString":"struct ChallengeStorageTypes.ChallengesStorage"}},"visibility":"internal"}],"src":"3031:29:25"},"scope":12655,"src":"2977:152:25","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":12656,"src":"399:2732:25","usedErrors":[],"usedEvents":[]}],"src":"32:3100:25"},"id":25},"contracts/challenges/libraries/ChallengeTypes.sol":{"ast":{"absolutePath":"contracts/challenges/libraries/ChallengeTypes.sol","exportedSymbols":{"ChallengeTypes":[12871]},"id":12872,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":12657,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:26"},{"abstract":false,"baseContracts":[],"canonicalName":"ChallengeTypes","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":12871,"linearizedBaseContracts":[12871],"name":"ChallengeTypes","nameLocation":"65:14:26","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ChallengeTypes.ChallengeKind","id":12660,"members":[{"id":12658,"name":"Stake","nameLocation":"109:5:26","nodeType":"EnumValue","src":"109:5:26"},{"id":12659,"name":"Sponsored","nameLocation":"120:9:26","nodeType":"EnumValue","src":"120:9:26"}],"name":"ChallengeKind","nameLocation":"89:13:26","nodeType":"EnumDefinition","src":"84:49:26"},{"canonicalName":"ChallengeTypes.ChallengeVisibility","id":12663,"members":[{"id":12661,"name":"Public","nameLocation":"168:6:26","nodeType":"EnumValue","src":"168:6:26"},{"id":12662,"name":"Private","nameLocation":"180:7:26","nodeType":"EnumValue","src":"180:7:26"}],"name":"ChallengeVisibility","nameLocation":"142:19:26","nodeType":"EnumDefinition","src":"137:54:26"},{"canonicalName":"ChallengeTypes.ChallengeType","documentation":{"id":12664,"nodeType":"StructuredDocumentation","src":"195:241:26","text":"@notice Discriminates the two challenge mechanics.\n - `MaxActions`: capped participant pool, top scorer wins after completion.\n - `SplitWin`: uncapped participants, sponsored only, first-to-claim wins one of `numWinners` slots."},"id":12667,"members":[{"id":12665,"name":"MaxActions","nameLocation":"464:10:26","nodeType":"EnumValue","src":"464:10:26"},{"id":12666,"name":"SplitWin","nameLocation":"480:8:26","nodeType":"EnumValue","src":"480:8:26"}],"name":"ChallengeType","nameLocation":"444:13:26","nodeType":"EnumDefinition","src":"439:53:26"},{"canonicalName":"ChallengeTypes.ChallengeStatus","id":12673,"members":[{"id":12668,"name":"Pending","nameLocation":"523:7:26","nodeType":"EnumValue","src":"523:7:26"},{"id":12669,"name":"Active","nameLocation":"536:6:26","nodeType":"EnumValue","src":"536:6:26"},{"id":12670,"name":"Completed","nameLocation":"548:9:26","nodeType":"EnumValue","src":"548:9:26"},{"id":12671,"name":"Cancelled","nameLocation":"563:9:26","nodeType":"EnumValue","src":"563:9:26"},{"id":12672,"name":"Invalid","nameLocation":"578:7:26","nodeType":"EnumValue","src":"578:7:26"}],"name":"ChallengeStatus","nameLocation":"501:15:26","nodeType":"EnumDefinition","src":"496:93:26"},{"canonicalName":"ChallengeTypes.SettlementMode","id":12678,"members":[{"id":12674,"name":"None","nameLocation":"619:4:26","nodeType":"EnumValue","src":"619:4:26"},{"id":12675,"name":"TopWinners","nameLocation":"629:10:26","nodeType":"EnumValue","src":"629:10:26"},{"id":12676,"name":"CreatorRefund","nameLocation":"645:13:26","nodeType":"EnumValue","src":"645:13:26"},{"id":12677,"name":"SplitWinCompleted","nameLocation":"664:17:26","nodeType":"EnumValue","src":"664:17:26"}],"name":"SettlementMode","nameLocation":"598:14:26","nodeType":"EnumDefinition","src":"593:92:26"},{"canonicalName":"ChallengeTypes.ParticipantStatus","id":12683,"members":[{"id":12679,"name":"None","nameLocation":"718:4:26","nodeType":"EnumValue","src":"718:4:26"},{"id":12680,"name":"Invited","nameLocation":"728:7:26","nodeType":"EnumValue","src":"728:7:26"},{"id":12681,"name":"Declined","nameLocation":"741:8:26","nodeType":"EnumValue","src":"741:8:26"},{"id":12682,"name":"Joined","nameLocation":"755:6:26","nodeType":"EnumValue","src":"755:6:26"}],"name":"ParticipantStatus","nameLocation":"694:17:26","nodeType":"EnumDefinition","src":"689:76:26"},{"canonicalName":"ChallengeTypes.CreateChallengeParams","id":12717,"members":[{"constant":false,"id":12686,"mutability":"mutable","name":"kind","nameLocation":"818:4:26","nodeType":"VariableDeclaration","scope":12717,"src":"804:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"typeName":{"id":12685,"nodeType":"UserDefinedTypeName","pathNode":{"id":12684,"name":"ChallengeKind","nameLocations":["804:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":12660,"src":"804:13:26"},"referencedDeclaration":12660,"src":"804:13:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"visibility":"internal"},{"constant":false,"id":12689,"mutability":"mutable","name":"visibility","nameLocation":"848:10:26","nodeType":"VariableDeclaration","scope":12717,"src":"828:30:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},"typeName":{"id":12688,"nodeType":"UserDefinedTypeName","pathNode":{"id":12687,"name":"ChallengeVisibility","nameLocations":["828:19:26"],"nodeType":"IdentifierPath","referencedDeclaration":12663,"src":"828:19:26"},"referencedDeclaration":12663,"src":"828:19:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"visibility":"internal"},{"constant":false,"id":12692,"mutability":"mutable","name":"challengeType","nameLocation":"878:13:26","nodeType":"VariableDeclaration","scope":12717,"src":"864:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"typeName":{"id":12691,"nodeType":"UserDefinedTypeName","pathNode":{"id":12690,"name":"ChallengeType","nameLocations":["864:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":12667,"src":"864:13:26"},"referencedDeclaration":12667,"src":"864:13:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"visibility":"internal"},{"constant":false,"id":12694,"mutability":"mutable","name":"stakeAmount","nameLocation":"905:11:26","nodeType":"VariableDeclaration","scope":12717,"src":"897:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12693,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12696,"mutability":"mutable","name":"startRound","nameLocation":"930:10:26","nodeType":"VariableDeclaration","scope":12717,"src":"922:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12695,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12698,"mutability":"mutable","name":"endRound","nameLocation":"954:8:26","nodeType":"VariableDeclaration","scope":12717,"src":"946:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12697,"name":"uint256","nodeType":"ElementaryTypeName","src":"946:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12700,"mutability":"mutable","name":"threshold","nameLocation":"976:9:26","nodeType":"VariableDeclaration","scope":12717,"src":"968:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12699,"name":"uint256","nodeType":"ElementaryTypeName","src":"968:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12702,"mutability":"mutable","name":"numWinners","nameLocation":"999:10:26","nodeType":"VariableDeclaration","scope":12717,"src":"991:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12701,"name":"uint256","nodeType":"ElementaryTypeName","src":"991:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12705,"mutability":"mutable","name":"appIds","nameLocation":"1025:6:26","nodeType":"VariableDeclaration","scope":12717,"src":"1015:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":12703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1015:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":12704,"nodeType":"ArrayTypeName","src":"1015:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":12708,"mutability":"mutable","name":"invitees","nameLocation":"1047:8:26","nodeType":"VariableDeclaration","scope":12717,"src":"1037:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12706,"name":"address","nodeType":"ElementaryTypeName","src":"1037:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12707,"nodeType":"ArrayTypeName","src":"1037:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12710,"mutability":"mutable","name":"title","nameLocation":"1068:5:26","nodeType":"VariableDeclaration","scope":12717,"src":"1061:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12709,"name":"string","nodeType":"ElementaryTypeName","src":"1061:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12712,"mutability":"mutable","name":"description","nameLocation":"1086:11:26","nodeType":"VariableDeclaration","scope":12717,"src":"1079:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12711,"name":"string","nodeType":"ElementaryTypeName","src":"1079:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12714,"mutability":"mutable","name":"imageURI","nameLocation":"1110:8:26","nodeType":"VariableDeclaration","scope":12717,"src":"1103:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12713,"name":"string","nodeType":"ElementaryTypeName","src":"1103:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12716,"mutability":"mutable","name":"metadataURI","nameLocation":"1131:11:26","nodeType":"VariableDeclaration","scope":12717,"src":"1124:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12715,"name":"string","nodeType":"ElementaryTypeName","src":"1124:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"CreateChallengeParams","nameLocation":"776:21:26","nodeType":"StructDefinition","scope":12871,"src":"769:378:26","visibility":"public"},{"canonicalName":"ChallengeTypes.InitializationData","id":12734,"members":[{"constant":false,"id":12719,"mutability":"mutable","name":"b3trAddress","nameLocation":"1191:11:26","nodeType":"VariableDeclaration","scope":12734,"src":"1183:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12718,"name":"address","nodeType":"ElementaryTypeName","src":"1183:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12721,"mutability":"mutable","name":"veBetterPassportAddress","nameLocation":"1216:23:26","nodeType":"VariableDeclaration","scope":12734,"src":"1208:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12720,"name":"address","nodeType":"ElementaryTypeName","src":"1208:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12723,"mutability":"mutable","name":"xAllocationVotingAddress","nameLocation":"1253:24:26","nodeType":"VariableDeclaration","scope":12734,"src":"1245:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12722,"name":"address","nodeType":"ElementaryTypeName","src":"1245:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12725,"mutability":"mutable","name":"x2EarnAppsAddress","nameLocation":"1291:17:26","nodeType":"VariableDeclaration","scope":12734,"src":"1283:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12724,"name":"address","nodeType":"ElementaryTypeName","src":"1283:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12727,"mutability":"mutable","name":"maxChallengeDuration","nameLocation":"1322:20:26","nodeType":"VariableDeclaration","scope":12734,"src":"1314:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12726,"name":"uint256","nodeType":"ElementaryTypeName","src":"1314:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12729,"mutability":"mutable","name":"maxSelectedApps","nameLocation":"1356:15:26","nodeType":"VariableDeclaration","scope":12734,"src":"1348:23:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12728,"name":"uint256","nodeType":"ElementaryTypeName","src":"1348:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12731,"mutability":"mutable","name":"maxParticipants","nameLocation":"1385:15:26","nodeType":"VariableDeclaration","scope":12734,"src":"1377:23:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12730,"name":"uint256","nodeType":"ElementaryTypeName","src":"1377:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12733,"mutability":"mutable","name":"minBetAmount","nameLocation":"1414:12:26","nodeType":"VariableDeclaration","scope":12734,"src":"1406:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12732,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"InitializationData","nameLocation":"1158:18:26","nodeType":"StructDefinition","scope":12871,"src":"1151:280:26","visibility":"public"},{"canonicalName":"ChallengeTypes.InitializationRoleData","id":12743,"members":[{"constant":false,"id":12736,"mutability":"mutable","name":"admin","nameLocation":"1479:5:26","nodeType":"VariableDeclaration","scope":12743,"src":"1471:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12735,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12738,"mutability":"mutable","name":"upgrader","nameLocation":"1498:8:26","nodeType":"VariableDeclaration","scope":12743,"src":"1490:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12737,"name":"address","nodeType":"ElementaryTypeName","src":"1490:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12740,"mutability":"mutable","name":"contractsAddressManager","nameLocation":"1520:23:26","nodeType":"VariableDeclaration","scope":12743,"src":"1512:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12739,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12742,"mutability":"mutable","name":"settingsManager","nameLocation":"1557:15:26","nodeType":"VariableDeclaration","scope":12743,"src":"1549:23:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12741,"name":"address","nodeType":"ElementaryTypeName","src":"1549:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"InitializationRoleData","nameLocation":"1442:22:26","nodeType":"StructDefinition","scope":12871,"src":"1435:142:26","visibility":"public"},{"canonicalName":"ChallengeTypes.Challenge","id":12806,"members":[{"constant":false,"id":12746,"mutability":"mutable","name":"kind","nameLocation":"1689:4:26","nodeType":"VariableDeclaration","scope":12806,"src":"1675:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"typeName":{"id":12745,"nodeType":"UserDefinedTypeName","pathNode":{"id":12744,"name":"ChallengeKind","nameLocations":["1675:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":12660,"src":"1675:13:26"},"referencedDeclaration":12660,"src":"1675:13:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"visibility":"internal"},{"constant":false,"id":12749,"mutability":"mutable","name":"visibility","nameLocation":"1719:10:26","nodeType":"VariableDeclaration","scope":12806,"src":"1699:30:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},"typeName":{"id":12748,"nodeType":"UserDefinedTypeName","pathNode":{"id":12747,"name":"ChallengeVisibility","nameLocations":["1699:19:26"],"nodeType":"IdentifierPath","referencedDeclaration":12663,"src":"1699:19:26"},"referencedDeclaration":12663,"src":"1699:19:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"visibility":"internal"},{"constant":false,"id":12752,"mutability":"mutable","name":"challengeType","nameLocation":"1749:13:26","nodeType":"VariableDeclaration","scope":12806,"src":"1735:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"typeName":{"id":12751,"nodeType":"UserDefinedTypeName","pathNode":{"id":12750,"name":"ChallengeType","nameLocations":["1735:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":12667,"src":"1735:13:26"},"referencedDeclaration":12667,"src":"1735:13:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"visibility":"internal"},{"constant":false,"id":12755,"mutability":"mutable","name":"status","nameLocation":"1784:6:26","nodeType":"VariableDeclaration","scope":12806,"src":"1768:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"typeName":{"id":12754,"nodeType":"UserDefinedTypeName","pathNode":{"id":12753,"name":"ChallengeStatus","nameLocations":["1768:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":12673,"src":"1768:15:26"},"referencedDeclaration":12673,"src":"1768:15:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"visibility":"internal"},{"constant":false,"id":12758,"mutability":"mutable","name":"settlementMode","nameLocation":"1811:14:26","nodeType":"VariableDeclaration","scope":12806,"src":"1796:29:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},"typeName":{"id":12757,"nodeType":"UserDefinedTypeName","pathNode":{"id":12756,"name":"SettlementMode","nameLocations":["1796:14:26"],"nodeType":"IdentifierPath","referencedDeclaration":12678,"src":"1796:14:26"},"referencedDeclaration":12678,"src":"1796:14:26","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"visibility":"internal"},{"constant":false,"id":12760,"mutability":"mutable","name":"allApps","nameLocation":"1836:7:26","nodeType":"VariableDeclaration","scope":12806,"src":"1831:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12759,"name":"bool","nodeType":"ElementaryTypeName","src":"1831:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12762,"mutability":"mutable","name":"creator","nameLocation":"1857:7:26","nodeType":"VariableDeclaration","scope":12806,"src":"1849:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12761,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12764,"mutability":"mutable","name":"stakeAmount","nameLocation":"1878:11:26","nodeType":"VariableDeclaration","scope":12806,"src":"1870:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12763,"name":"uint256","nodeType":"ElementaryTypeName","src":"1870:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12766,"mutability":"mutable","name":"startRound","nameLocation":"1903:10:26","nodeType":"VariableDeclaration","scope":12806,"src":"1895:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12765,"name":"uint256","nodeType":"ElementaryTypeName","src":"1895:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12768,"mutability":"mutable","name":"endRound","nameLocation":"1927:8:26","nodeType":"VariableDeclaration","scope":12806,"src":"1919:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12767,"name":"uint256","nodeType":"ElementaryTypeName","src":"1919:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12770,"mutability":"mutable","name":"threshold","nameLocation":"1949:9:26","nodeType":"VariableDeclaration","scope":12806,"src":"1941:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12769,"name":"uint256","nodeType":"ElementaryTypeName","src":"1941:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12772,"mutability":"mutable","name":"numWinners","nameLocation":"1972:10:26","nodeType":"VariableDeclaration","scope":12806,"src":"1964:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12771,"name":"uint256","nodeType":"ElementaryTypeName","src":"1964:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12774,"mutability":"mutable","name":"prizePerWinner","nameLocation":"1996:14:26","nodeType":"VariableDeclaration","scope":12806,"src":"1988:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12773,"name":"uint256","nodeType":"ElementaryTypeName","src":"1988:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12776,"mutability":"mutable","name":"totalPrize","nameLocation":"2024:10:26","nodeType":"VariableDeclaration","scope":12806,"src":"2016:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12775,"name":"uint256","nodeType":"ElementaryTypeName","src":"2016:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12778,"mutability":"mutable","name":"bestScore","nameLocation":"2048:9:26","nodeType":"VariableDeclaration","scope":12806,"src":"2040:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12777,"name":"uint256","nodeType":"ElementaryTypeName","src":"2040:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12780,"mutability":"mutable","name":"bestCount","nameLocation":"2071:9:26","nodeType":"VariableDeclaration","scope":12806,"src":"2063:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12779,"name":"uint256","nodeType":"ElementaryTypeName","src":"2063:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12782,"mutability":"mutable","name":"payoutsClaimed","nameLocation":"2094:14:26","nodeType":"VariableDeclaration","scope":12806,"src":"2086:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12781,"name":"uint256","nodeType":"ElementaryTypeName","src":"2086:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12785,"mutability":"mutable","name":"participants","nameLocation":"2124:12:26","nodeType":"VariableDeclaration","scope":12806,"src":"2114:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12783,"name":"address","nodeType":"ElementaryTypeName","src":"2114:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12784,"nodeType":"ArrayTypeName","src":"2114:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12788,"mutability":"mutable","name":"invited","nameLocation":"2152:7:26","nodeType":"VariableDeclaration","scope":12806,"src":"2142:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12786,"name":"address","nodeType":"ElementaryTypeName","src":"2142:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12787,"nodeType":"ArrayTypeName","src":"2142:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12791,"mutability":"mutable","name":"declined","nameLocation":"2175:8:26","nodeType":"VariableDeclaration","scope":12806,"src":"2165:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12789,"name":"address","nodeType":"ElementaryTypeName","src":"2165:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12790,"nodeType":"ArrayTypeName","src":"2165:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12794,"mutability":"mutable","name":"winners","nameLocation":"2199:7:26","nodeType":"VariableDeclaration","scope":12806,"src":"2189:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12792,"name":"address","nodeType":"ElementaryTypeName","src":"2189:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12793,"nodeType":"ArrayTypeName","src":"2189:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12797,"mutability":"mutable","name":"appIds","nameLocation":"2222:6:26","nodeType":"VariableDeclaration","scope":12806,"src":"2212:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":12795,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2212:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":12796,"nodeType":"ArrayTypeName","src":"2212:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":12799,"mutability":"mutable","name":"title","nameLocation":"2241:5:26","nodeType":"VariableDeclaration","scope":12806,"src":"2234:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12798,"name":"string","nodeType":"ElementaryTypeName","src":"2234:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12801,"mutability":"mutable","name":"description","nameLocation":"2259:11:26","nodeType":"VariableDeclaration","scope":12806,"src":"2252:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12800,"name":"string","nodeType":"ElementaryTypeName","src":"2252:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12803,"mutability":"mutable","name":"imageURI","nameLocation":"2283:8:26","nodeType":"VariableDeclaration","scope":12806,"src":"2276:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12802,"name":"string","nodeType":"ElementaryTypeName","src":"2276:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12805,"mutability":"mutable","name":"metadataURI","nameLocation":"2304:11:26","nodeType":"VariableDeclaration","scope":12806,"src":"2297:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12804,"name":"string","nodeType":"ElementaryTypeName","src":"2297:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"Challenge","nameLocation":"1588:9:26","nodeType":"StructDefinition","scope":12871,"src":"1581:739:26","visibility":"public"},{"canonicalName":"ChallengeTypes.ChallengeView","id":12870,"members":[{"constant":false,"id":12808,"mutability":"mutable","name":"challengeId","nameLocation":"2359:11:26","nodeType":"VariableDeclaration","scope":12870,"src":"2351:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12807,"name":"uint256","nodeType":"ElementaryTypeName","src":"2351:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12811,"mutability":"mutable","name":"kind","nameLocation":"2390:4:26","nodeType":"VariableDeclaration","scope":12870,"src":"2376:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"typeName":{"id":12810,"nodeType":"UserDefinedTypeName","pathNode":{"id":12809,"name":"ChallengeKind","nameLocations":["2376:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":12660,"src":"2376:13:26"},"referencedDeclaration":12660,"src":"2376:13:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"visibility":"internal"},{"constant":false,"id":12814,"mutability":"mutable","name":"visibility","nameLocation":"2420:10:26","nodeType":"VariableDeclaration","scope":12870,"src":"2400:30:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},"typeName":{"id":12813,"nodeType":"UserDefinedTypeName","pathNode":{"id":12812,"name":"ChallengeVisibility","nameLocations":["2400:19:26"],"nodeType":"IdentifierPath","referencedDeclaration":12663,"src":"2400:19:26"},"referencedDeclaration":12663,"src":"2400:19:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"visibility":"internal"},{"constant":false,"id":12817,"mutability":"mutable","name":"challengeType","nameLocation":"2450:13:26","nodeType":"VariableDeclaration","scope":12870,"src":"2436:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"typeName":{"id":12816,"nodeType":"UserDefinedTypeName","pathNode":{"id":12815,"name":"ChallengeType","nameLocations":["2436:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":12667,"src":"2436:13:26"},"referencedDeclaration":12667,"src":"2436:13:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"visibility":"internal"},{"constant":false,"id":12820,"mutability":"mutable","name":"status","nameLocation":"2485:6:26","nodeType":"VariableDeclaration","scope":12870,"src":"2469:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"typeName":{"id":12819,"nodeType":"UserDefinedTypeName","pathNode":{"id":12818,"name":"ChallengeStatus","nameLocations":["2469:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":12673,"src":"2469:15:26"},"referencedDeclaration":12673,"src":"2469:15:26","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"visibility":"internal"},{"constant":false,"id":12823,"mutability":"mutable","name":"settlementMode","nameLocation":"2512:14:26","nodeType":"VariableDeclaration","scope":12870,"src":"2497:29:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},"typeName":{"id":12822,"nodeType":"UserDefinedTypeName","pathNode":{"id":12821,"name":"SettlementMode","nameLocations":["2497:14:26"],"nodeType":"IdentifierPath","referencedDeclaration":12678,"src":"2497:14:26"},"referencedDeclaration":12678,"src":"2497:14:26","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"visibility":"internal"},{"constant":false,"id":12825,"mutability":"mutable","name":"creator","nameLocation":"2540:7:26","nodeType":"VariableDeclaration","scope":12870,"src":"2532:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12824,"name":"address","nodeType":"ElementaryTypeName","src":"2532:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12827,"mutability":"mutable","name":"stakeAmount","nameLocation":"2561:11:26","nodeType":"VariableDeclaration","scope":12870,"src":"2553:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12826,"name":"uint256","nodeType":"ElementaryTypeName","src":"2553:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12829,"mutability":"mutable","name":"startRound","nameLocation":"2586:10:26","nodeType":"VariableDeclaration","scope":12870,"src":"2578:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12828,"name":"uint256","nodeType":"ElementaryTypeName","src":"2578:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12831,"mutability":"mutable","name":"endRound","nameLocation":"2610:8:26","nodeType":"VariableDeclaration","scope":12870,"src":"2602:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12830,"name":"uint256","nodeType":"ElementaryTypeName","src":"2602:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12833,"mutability":"mutable","name":"duration","nameLocation":"2632:8:26","nodeType":"VariableDeclaration","scope":12870,"src":"2624:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12832,"name":"uint256","nodeType":"ElementaryTypeName","src":"2624:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12835,"mutability":"mutable","name":"threshold","nameLocation":"2654:9:26","nodeType":"VariableDeclaration","scope":12870,"src":"2646:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12834,"name":"uint256","nodeType":"ElementaryTypeName","src":"2646:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12837,"mutability":"mutable","name":"numWinners","nameLocation":"2677:10:26","nodeType":"VariableDeclaration","scope":12870,"src":"2669:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12836,"name":"uint256","nodeType":"ElementaryTypeName","src":"2669:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12839,"mutability":"mutable","name":"winnersClaimed","nameLocation":"2701:14:26","nodeType":"VariableDeclaration","scope":12870,"src":"2693:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12838,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12841,"mutability":"mutable","name":"prizePerWinner","nameLocation":"2729:14:26","nodeType":"VariableDeclaration","scope":12870,"src":"2721:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12840,"name":"uint256","nodeType":"ElementaryTypeName","src":"2721:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12843,"mutability":"mutable","name":"allApps","nameLocation":"2754:7:26","nodeType":"VariableDeclaration","scope":12870,"src":"2749:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12842,"name":"bool","nodeType":"ElementaryTypeName","src":"2749:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12845,"mutability":"mutable","name":"totalPrize","nameLocation":"2775:10:26","nodeType":"VariableDeclaration","scope":12870,"src":"2767:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12844,"name":"uint256","nodeType":"ElementaryTypeName","src":"2767:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12847,"mutability":"mutable","name":"participantCount","nameLocation":"2799:16:26","nodeType":"VariableDeclaration","scope":12870,"src":"2791:24:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12846,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12849,"mutability":"mutable","name":"invitedCount","nameLocation":"2829:12:26","nodeType":"VariableDeclaration","scope":12870,"src":"2821:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12848,"name":"uint256","nodeType":"ElementaryTypeName","src":"2821:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12851,"mutability":"mutable","name":"declinedCount","nameLocation":"2855:13:26","nodeType":"VariableDeclaration","scope":12870,"src":"2847:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12850,"name":"uint256","nodeType":"ElementaryTypeName","src":"2847:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12853,"mutability":"mutable","name":"selectedAppsCount","nameLocation":"2882:17:26","nodeType":"VariableDeclaration","scope":12870,"src":"2874:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12852,"name":"uint256","nodeType":"ElementaryTypeName","src":"2874:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12855,"mutability":"mutable","name":"winnersCount","nameLocation":"2913:12:26","nodeType":"VariableDeclaration","scope":12870,"src":"2905:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12854,"name":"uint256","nodeType":"ElementaryTypeName","src":"2905:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12857,"mutability":"mutable","name":"bestScore","nameLocation":"2939:9:26","nodeType":"VariableDeclaration","scope":12870,"src":"2931:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12856,"name":"uint256","nodeType":"ElementaryTypeName","src":"2931:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12859,"mutability":"mutable","name":"bestCount","nameLocation":"2962:9:26","nodeType":"VariableDeclaration","scope":12870,"src":"2954:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12858,"name":"uint256","nodeType":"ElementaryTypeName","src":"2954:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12861,"mutability":"mutable","name":"payoutsClaimed","nameLocation":"2985:14:26","nodeType":"VariableDeclaration","scope":12870,"src":"2977:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12860,"name":"uint256","nodeType":"ElementaryTypeName","src":"2977:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12863,"mutability":"mutable","name":"title","nameLocation":"3012:5:26","nodeType":"VariableDeclaration","scope":12870,"src":"3005:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12862,"name":"string","nodeType":"ElementaryTypeName","src":"3005:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12865,"mutability":"mutable","name":"description","nameLocation":"3030:11:26","nodeType":"VariableDeclaration","scope":12870,"src":"3023:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12864,"name":"string","nodeType":"ElementaryTypeName","src":"3023:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12867,"mutability":"mutable","name":"imageURI","nameLocation":"3054:8:26","nodeType":"VariableDeclaration","scope":12870,"src":"3047:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12866,"name":"string","nodeType":"ElementaryTypeName","src":"3047:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12869,"mutability":"mutable","name":"metadataURI","nameLocation":"3075:11:26","nodeType":"VariableDeclaration","scope":12870,"src":"3068:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12868,"name":"string","nodeType":"ElementaryTypeName","src":"3068:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"ChallengeView","nameLocation":"2331:13:26","nodeType":"StructDefinition","scope":12871,"src":"2324:767:26","visibility":"public"}],"scope":12872,"src":"57:3036:26","usedErrors":[],"usedEvents":[]}],"src":"32:3062:26"},"id":26},"contracts/interfaces/IB3TR.sol":{"ast":{"absolutePath":"contracts/interfaces/IB3TR.sol","exportedSymbols":{"IB3TR":[13131]},"id":13132,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":12873,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"33:23:27"},{"abstract":false,"baseContracts":[],"canonicalName":"IB3TR","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":13131,"linearizedBaseContracts":[13131],"name":"IB3TR","nameLocation":"68:5:27","nodeType":"ContractDefinition","nodes":[{"errorSelector":"6697b232","id":12875,"name":"AccessControlBadConfirmation","nameLocation":"84:28:27","nodeType":"ErrorDefinition","parameters":{"id":12874,"nodeType":"ParameterList","parameters":[],"src":"112:2:27"},"src":"78:37:27"},{"errorSelector":"e2517d3f","id":12881,"name":"AccessControlUnauthorizedAccount","nameLocation":"125:32:27","nodeType":"ErrorDefinition","parameters":{"id":12880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12877,"mutability":"mutable","name":"account","nameLocation":"166:7:27","nodeType":"VariableDeclaration","scope":12881,"src":"158:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12876,"name":"address","nodeType":"ElementaryTypeName","src":"158:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12879,"mutability":"mutable","name":"neededRole","nameLocation":"183:10:27","nodeType":"VariableDeclaration","scope":12881,"src":"175:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"175:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"157:37:27"},"src":"119:76:27"},{"errorSelector":"9e79f854","id":12887,"name":"ERC20ExceededCap","nameLocation":"205:16:27","nodeType":"ErrorDefinition","parameters":{"id":12886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12883,"mutability":"mutable","name":"increasedSupply","nameLocation":"230:15:27","nodeType":"VariableDeclaration","scope":12887,"src":"222:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12882,"name":"uint256","nodeType":"ElementaryTypeName","src":"222:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12885,"mutability":"mutable","name":"cap","nameLocation":"255:3:27","nodeType":"VariableDeclaration","scope":12887,"src":"247:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12884,"name":"uint256","nodeType":"ElementaryTypeName","src":"247:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"221:38:27"},"src":"199:61:27"},{"errorSelector":"fb8f41b2","id":12895,"name":"ERC20InsufficientAllowance","nameLocation":"270:26:27","nodeType":"ErrorDefinition","parameters":{"id":12894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12889,"mutability":"mutable","name":"spender","nameLocation":"305:7:27","nodeType":"VariableDeclaration","scope":12895,"src":"297:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12888,"name":"address","nodeType":"ElementaryTypeName","src":"297:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12891,"mutability":"mutable","name":"allowance","nameLocation":"322:9:27","nodeType":"VariableDeclaration","scope":12895,"src":"314:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12890,"name":"uint256","nodeType":"ElementaryTypeName","src":"314:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12893,"mutability":"mutable","name":"needed","nameLocation":"341:6:27","nodeType":"VariableDeclaration","scope":12895,"src":"333:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12892,"name":"uint256","nodeType":"ElementaryTypeName","src":"333:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"296:52:27"},"src":"264:85:27"},{"errorSelector":"e450d38c","id":12903,"name":"ERC20InsufficientBalance","nameLocation":"359:24:27","nodeType":"ErrorDefinition","parameters":{"id":12902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12897,"mutability":"mutable","name":"sender","nameLocation":"392:6:27","nodeType":"VariableDeclaration","scope":12903,"src":"384:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12896,"name":"address","nodeType":"ElementaryTypeName","src":"384:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12899,"mutability":"mutable","name":"balance","nameLocation":"408:7:27","nodeType":"VariableDeclaration","scope":12903,"src":"400:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12898,"name":"uint256","nodeType":"ElementaryTypeName","src":"400:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12901,"mutability":"mutable","name":"needed","nameLocation":"425:6:27","nodeType":"VariableDeclaration","scope":12903,"src":"417:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12900,"name":"uint256","nodeType":"ElementaryTypeName","src":"417:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"383:49:27"},"src":"353:80:27"},{"errorSelector":"e602df05","id":12907,"name":"ERC20InvalidApprover","nameLocation":"443:20:27","nodeType":"ErrorDefinition","parameters":{"id":12906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12905,"mutability":"mutable","name":"approver","nameLocation":"472:8:27","nodeType":"VariableDeclaration","scope":12907,"src":"464:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12904,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"463:18:27"},"src":"437:45:27"},{"errorSelector":"392e1e27","id":12911,"name":"ERC20InvalidCap","nameLocation":"492:15:27","nodeType":"ErrorDefinition","parameters":{"id":12910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12909,"mutability":"mutable","name":"cap","nameLocation":"516:3:27","nodeType":"VariableDeclaration","scope":12911,"src":"508:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12908,"name":"uint256","nodeType":"ElementaryTypeName","src":"508:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"507:13:27"},"src":"486:35:27"},{"errorSelector":"ec442f05","id":12915,"name":"ERC20InvalidReceiver","nameLocation":"531:20:27","nodeType":"ErrorDefinition","parameters":{"id":12914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12913,"mutability":"mutable","name":"receiver","nameLocation":"560:8:27","nodeType":"VariableDeclaration","scope":12915,"src":"552:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12912,"name":"address","nodeType":"ElementaryTypeName","src":"552:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"551:18:27"},"src":"525:45:27"},{"errorSelector":"96c6fd1e","id":12919,"name":"ERC20InvalidSender","nameLocation":"580:18:27","nodeType":"ErrorDefinition","parameters":{"id":12918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12917,"mutability":"mutable","name":"sender","nameLocation":"607:6:27","nodeType":"VariableDeclaration","scope":12919,"src":"599:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12916,"name":"address","nodeType":"ElementaryTypeName","src":"599:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"598:16:27"},"src":"574:41:27"},{"errorSelector":"94280d62","id":12923,"name":"ERC20InvalidSpender","nameLocation":"625:19:27","nodeType":"ErrorDefinition","parameters":{"id":12922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12921,"mutability":"mutable","name":"spender","nameLocation":"653:7:27","nodeType":"VariableDeclaration","scope":12923,"src":"645:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12920,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"644:17:27"},"src":"619:43:27"},{"errorSelector":"d93c0665","id":12925,"name":"EnforcedPause","nameLocation":"672:13:27","nodeType":"ErrorDefinition","parameters":{"id":12924,"nodeType":"ParameterList","parameters":[],"src":"685:2:27"},"src":"666:22:27"},{"errorSelector":"8dfc202b","id":12927,"name":"ExpectedPause","nameLocation":"698:13:27","nodeType":"ErrorDefinition","parameters":{"id":12926,"nodeType":"ParameterList","parameters":[],"src":"711:2:27"},"src":"692:22:27"},{"anonymous":false,"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":12935,"name":"Approval","nameLocation":"724:8:27","nodeType":"EventDefinition","parameters":{"id":12934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12929,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"749:5:27","nodeType":"VariableDeclaration","scope":12935,"src":"733:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12928,"name":"address","nodeType":"ElementaryTypeName","src":"733:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12931,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"772:7:27","nodeType":"VariableDeclaration","scope":12935,"src":"756:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12930,"name":"address","nodeType":"ElementaryTypeName","src":"756:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12933,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"789:5:27","nodeType":"VariableDeclaration","scope":12935,"src":"781:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12932,"name":"uint256","nodeType":"ElementaryTypeName","src":"781:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"732:63:27"},"src":"718:78:27"},{"anonymous":false,"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","id":12939,"name":"Paused","nameLocation":"806:6:27","nodeType":"EventDefinition","parameters":{"id":12938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12937,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"821:7:27","nodeType":"VariableDeclaration","scope":12939,"src":"813:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12936,"name":"address","nodeType":"ElementaryTypeName","src":"813:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"812:17:27"},"src":"800:30:27"},{"anonymous":false,"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":12947,"name":"RoleAdminChanged","nameLocation":"840:16:27","nodeType":"EventDefinition","parameters":{"id":12946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12941,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"873:4:27","nodeType":"VariableDeclaration","scope":12947,"src":"857:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12940,"name":"bytes32","nodeType":"ElementaryTypeName","src":"857:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12943,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"895:17:27","nodeType":"VariableDeclaration","scope":12947,"src":"879:33:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12942,"name":"bytes32","nodeType":"ElementaryTypeName","src":"879:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12945,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"930:12:27","nodeType":"VariableDeclaration","scope":12947,"src":"914:28:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"914:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"856:87:27"},"src":"834:110:27"},{"anonymous":false,"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":12955,"name":"RoleGranted","nameLocation":"954:11:27","nodeType":"EventDefinition","parameters":{"id":12954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12949,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"982:4:27","nodeType":"VariableDeclaration","scope":12955,"src":"966:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12948,"name":"bytes32","nodeType":"ElementaryTypeName","src":"966:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12951,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1004:7:27","nodeType":"VariableDeclaration","scope":12955,"src":"988:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12950,"name":"address","nodeType":"ElementaryTypeName","src":"988:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12953,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1029:6:27","nodeType":"VariableDeclaration","scope":12955,"src":"1013:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12952,"name":"address","nodeType":"ElementaryTypeName","src":"1013:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"965:71:27"},"src":"948:89:27"},{"anonymous":false,"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":12963,"name":"RoleRevoked","nameLocation":"1047:11:27","nodeType":"EventDefinition","parameters":{"id":12962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12957,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1075:4:27","nodeType":"VariableDeclaration","scope":12963,"src":"1059:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12956,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1059:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12959,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1097:7:27","nodeType":"VariableDeclaration","scope":12963,"src":"1081:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12958,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12961,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1122:6:27","nodeType":"VariableDeclaration","scope":12963,"src":"1106:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12960,"name":"address","nodeType":"ElementaryTypeName","src":"1106:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1058:71:27"},"src":"1041:89:27"},{"anonymous":false,"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":12971,"name":"Transfer","nameLocation":"1140:8:27","nodeType":"EventDefinition","parameters":{"id":12970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12965,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"1165:4:27","nodeType":"VariableDeclaration","scope":12971,"src":"1149:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12964,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12967,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"1187:2:27","nodeType":"VariableDeclaration","scope":12971,"src":"1171:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12966,"name":"address","nodeType":"ElementaryTypeName","src":"1171:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12969,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1199:5:27","nodeType":"VariableDeclaration","scope":12971,"src":"1191:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12968,"name":"uint256","nodeType":"ElementaryTypeName","src":"1191:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1148:57:27"},"src":"1134:72:27"},{"anonymous":false,"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","id":12975,"name":"Unpaused","nameLocation":"1216:8:27","nodeType":"EventDefinition","parameters":{"id":12974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12973,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1233:7:27","nodeType":"VariableDeclaration","scope":12975,"src":"1225:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12972,"name":"address","nodeType":"ElementaryTypeName","src":"1225:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1224:17:27"},"src":"1210:32:27"},{"functionSelector":"a217fddf","id":12980,"implemented":false,"kind":"function","modifiers":[],"name":"DEFAULT_ADMIN_ROLE","nameLocation":"1255:18:27","nodeType":"FunctionDefinition","parameters":{"id":12976,"nodeType":"ParameterList","parameters":[],"src":"1273:2:27"},"returnParameters":{"id":12979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12978,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12980,"src":"1299:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12977,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1299:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1298:9:27"},"scope":13131,"src":"1246:62:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d5391393","id":12985,"implemented":false,"kind":"function","modifiers":[],"name":"MINTER_ROLE","nameLocation":"1321:11:27","nodeType":"FunctionDefinition","parameters":{"id":12981,"nodeType":"ParameterList","parameters":[],"src":"1332:2:27"},"returnParameters":{"id":12984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12983,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12985,"src":"1358:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12982,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1358:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1357:9:27"},"scope":13131,"src":"1312:55:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dd62ed3e","id":12994,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1380:9:27","nodeType":"FunctionDefinition","parameters":{"id":12990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12987,"mutability":"mutable","name":"owner","nameLocation":"1398:5:27","nodeType":"VariableDeclaration","scope":12994,"src":"1390:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12986,"name":"address","nodeType":"ElementaryTypeName","src":"1390:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12989,"mutability":"mutable","name":"spender","nameLocation":"1413:7:27","nodeType":"VariableDeclaration","scope":12994,"src":"1405:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12988,"name":"address","nodeType":"ElementaryTypeName","src":"1405:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1389:32:27"},"returnParameters":{"id":12993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12992,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12994,"src":"1445:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1445:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1444:9:27"},"scope":13131,"src":"1371:83:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"095ea7b3","id":13003,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"1467:7:27","nodeType":"FunctionDefinition","parameters":{"id":12999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12996,"mutability":"mutable","name":"spender","nameLocation":"1483:7:27","nodeType":"VariableDeclaration","scope":13003,"src":"1475:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12995,"name":"address","nodeType":"ElementaryTypeName","src":"1475:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12998,"mutability":"mutable","name":"value","nameLocation":"1500:5:27","nodeType":"VariableDeclaration","scope":13003,"src":"1492:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12997,"name":"uint256","nodeType":"ElementaryTypeName","src":"1492:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1474:32:27"},"returnParameters":{"id":13002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13001,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13003,"src":"1525:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13000,"name":"bool","nodeType":"ElementaryTypeName","src":"1525:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1524:6:27"},"scope":13131,"src":"1458:73:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":13010,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1544:9:27","nodeType":"FunctionDefinition","parameters":{"id":13006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13005,"mutability":"mutable","name":"account","nameLocation":"1562:7:27","nodeType":"VariableDeclaration","scope":13010,"src":"1554:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13004,"name":"address","nodeType":"ElementaryTypeName","src":"1554:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1553:17:27"},"returnParameters":{"id":13009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13008,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13010,"src":"1594:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13007,"name":"uint256","nodeType":"ElementaryTypeName","src":"1594:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1593:9:27"},"scope":13131,"src":"1535:68:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"355274ea","id":13015,"implemented":false,"kind":"function","modifiers":[],"name":"cap","nameLocation":"1616:3:27","nodeType":"FunctionDefinition","parameters":{"id":13011,"nodeType":"ParameterList","parameters":[],"src":"1619:2:27"},"returnParameters":{"id":13014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13015,"src":"1645:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13012,"name":"uint256","nodeType":"ElementaryTypeName","src":"1645:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1644:9:27"},"scope":13131,"src":"1607:47:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"313ce567","id":13020,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1667:8:27","nodeType":"FunctionDefinition","parameters":{"id":13016,"nodeType":"ParameterList","parameters":[],"src":"1675:2:27"},"returnParameters":{"id":13019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13018,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13020,"src":"1701:5:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13017,"name":"uint8","nodeType":"ElementaryTypeName","src":"1701:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1700:7:27"},"scope":13131,"src":"1658:50:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"248a9ca3","id":13027,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"1721:12:27","nodeType":"FunctionDefinition","parameters":{"id":13023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13022,"mutability":"mutable","name":"role","nameLocation":"1742:4:27","nodeType":"VariableDeclaration","scope":13027,"src":"1734:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13021,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1734:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1733:14:27"},"returnParameters":{"id":13026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13027,"src":"1771:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13024,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1771:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1770:9:27"},"scope":13131,"src":"1712:68:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2f2ff15d","id":13034,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"1793:9:27","nodeType":"FunctionDefinition","parameters":{"id":13032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13029,"mutability":"mutable","name":"role","nameLocation":"1811:4:27","nodeType":"VariableDeclaration","scope":13034,"src":"1803:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13028,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1803:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13031,"mutability":"mutable","name":"account","nameLocation":"1825:7:27","nodeType":"VariableDeclaration","scope":13034,"src":"1817:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13030,"name":"address","nodeType":"ElementaryTypeName","src":"1817:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1802:31:27"},"returnParameters":{"id":13033,"nodeType":"ParameterList","parameters":[],"src":"1842:0:27"},"scope":13131,"src":"1784:59:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"91d14854","id":13043,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1856:7:27","nodeType":"FunctionDefinition","parameters":{"id":13039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13036,"mutability":"mutable","name":"role","nameLocation":"1872:4:27","nodeType":"VariableDeclaration","scope":13043,"src":"1864:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13035,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1864:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13038,"mutability":"mutable","name":"account","nameLocation":"1886:7:27","nodeType":"VariableDeclaration","scope":13043,"src":"1878:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13037,"name":"address","nodeType":"ElementaryTypeName","src":"1878:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1863:31:27"},"returnParameters":{"id":13042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13043,"src":"1918:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13040,"name":"bool","nodeType":"ElementaryTypeName","src":"1918:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1917:6:27"},"scope":13131,"src":"1847:77:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"40c10f19","id":13050,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"1937:4:27","nodeType":"FunctionDefinition","parameters":{"id":13048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13045,"mutability":"mutable","name":"to","nameLocation":"1950:2:27","nodeType":"VariableDeclaration","scope":13050,"src":"1942:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13044,"name":"address","nodeType":"ElementaryTypeName","src":"1942:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13047,"mutability":"mutable","name":"amount","nameLocation":"1962:6:27","nodeType":"VariableDeclaration","scope":13050,"src":"1954:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13046,"name":"uint256","nodeType":"ElementaryTypeName","src":"1954:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1941:28:27"},"returnParameters":{"id":13049,"nodeType":"ParameterList","parameters":[],"src":"1978:0:27"},"scope":13131,"src":"1928:51:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"06fdde03","id":13055,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"1992:4:27","nodeType":"FunctionDefinition","parameters":{"id":13051,"nodeType":"ParameterList","parameters":[],"src":"1996:2:27"},"returnParameters":{"id":13054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13053,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13055,"src":"2022:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13052,"name":"string","nodeType":"ElementaryTypeName","src":"2022:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2021:15:27"},"scope":13131,"src":"1983:54:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8456cb59","id":13058,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"2050:5:27","nodeType":"FunctionDefinition","parameters":{"id":13056,"nodeType":"ParameterList","parameters":[],"src":"2055:2:27"},"returnParameters":{"id":13057,"nodeType":"ParameterList","parameters":[],"src":"2066:0:27"},"scope":13131,"src":"2041:26:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5c975abb","id":13063,"implemented":false,"kind":"function","modifiers":[],"name":"paused","nameLocation":"2080:6:27","nodeType":"FunctionDefinition","parameters":{"id":13059,"nodeType":"ParameterList","parameters":[],"src":"2086:2:27"},"returnParameters":{"id":13062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13063,"src":"2112:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13060,"name":"bool","nodeType":"ElementaryTypeName","src":"2112:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2111:6:27"},"scope":13131,"src":"2071:47:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"36568abe","id":13070,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"2131:12:27","nodeType":"FunctionDefinition","parameters":{"id":13068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13065,"mutability":"mutable","name":"role","nameLocation":"2152:4:27","nodeType":"VariableDeclaration","scope":13070,"src":"2144:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13064,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2144:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13067,"mutability":"mutable","name":"callerConfirmation","nameLocation":"2166:18:27","nodeType":"VariableDeclaration","scope":13070,"src":"2158:26:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13066,"name":"address","nodeType":"ElementaryTypeName","src":"2158:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2143:42:27"},"returnParameters":{"id":13069,"nodeType":"ParameterList","parameters":[],"src":"2194:0:27"},"scope":13131,"src":"2122:73:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d547741f","id":13077,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2208:10:27","nodeType":"FunctionDefinition","parameters":{"id":13075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13072,"mutability":"mutable","name":"role","nameLocation":"2227:4:27","nodeType":"VariableDeclaration","scope":13077,"src":"2219:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13071,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2219:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13074,"mutability":"mutable","name":"account","nameLocation":"2241:7:27","nodeType":"VariableDeclaration","scope":13077,"src":"2233:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13073,"name":"address","nodeType":"ElementaryTypeName","src":"2233:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2218:31:27"},"returnParameters":{"id":13076,"nodeType":"ParameterList","parameters":[],"src":"2258:0:27"},"scope":13131,"src":"2199:60:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"01ffc9a7","id":13084,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2272:17:27","nodeType":"FunctionDefinition","parameters":{"id":13080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13079,"mutability":"mutable","name":"interfaceId","nameLocation":"2297:11:27","nodeType":"VariableDeclaration","scope":13084,"src":"2290:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13078,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2290:6:27","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2289:20:27"},"returnParameters":{"id":13083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13084,"src":"2333:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13081,"name":"bool","nodeType":"ElementaryTypeName","src":"2333:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2332:6:27"},"scope":13131,"src":"2263:76:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"95d89b41","id":13089,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2352:6:27","nodeType":"FunctionDefinition","parameters":{"id":13085,"nodeType":"ParameterList","parameters":[],"src":"2358:2:27"},"returnParameters":{"id":13088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13089,"src":"2384:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13086,"name":"string","nodeType":"ElementaryTypeName","src":"2384:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2383:15:27"},"scope":13131,"src":"2343:56:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d6abe110","id":13102,"implemented":false,"kind":"function","modifiers":[],"name":"tokenDetails","nameLocation":"2412:12:27","nodeType":"FunctionDefinition","parameters":{"id":13090,"nodeType":"ParameterList","parameters":[],"src":"2424:2:27"},"returnParameters":{"id":13101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13092,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13102,"src":"2450:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13091,"name":"string","nodeType":"ElementaryTypeName","src":"2450:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13094,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13102,"src":"2465:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13093,"name":"string","nodeType":"ElementaryTypeName","src":"2465:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13096,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13102,"src":"2480:5:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13095,"name":"uint8","nodeType":"ElementaryTypeName","src":"2480:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":13098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13102,"src":"2487:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13097,"name":"uint256","nodeType":"ElementaryTypeName","src":"2487:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13102,"src":"2496:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13099,"name":"uint256","nodeType":"ElementaryTypeName","src":"2496:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2449:55:27"},"scope":13131,"src":"2403:102:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":13107,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2518:11:27","nodeType":"FunctionDefinition","parameters":{"id":13103,"nodeType":"ParameterList","parameters":[],"src":"2529:2:27"},"returnParameters":{"id":13106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13105,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13107,"src":"2555:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13104,"name":"uint256","nodeType":"ElementaryTypeName","src":"2555:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2554:9:27"},"scope":13131,"src":"2509:55:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a9059cbb","id":13116,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"2577:8:27","nodeType":"FunctionDefinition","parameters":{"id":13112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13109,"mutability":"mutable","name":"to","nameLocation":"2594:2:27","nodeType":"VariableDeclaration","scope":13116,"src":"2586:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13108,"name":"address","nodeType":"ElementaryTypeName","src":"2586:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13111,"mutability":"mutable","name":"value","nameLocation":"2606:5:27","nodeType":"VariableDeclaration","scope":13116,"src":"2598:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13110,"name":"uint256","nodeType":"ElementaryTypeName","src":"2598:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2585:27:27"},"returnParameters":{"id":13115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13114,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13116,"src":"2631:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13113,"name":"bool","nodeType":"ElementaryTypeName","src":"2631:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2630:6:27"},"scope":13131,"src":"2568:69:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23b872dd","id":13127,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2650:12:27","nodeType":"FunctionDefinition","parameters":{"id":13123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13118,"mutability":"mutable","name":"from","nameLocation":"2671:4:27","nodeType":"VariableDeclaration","scope":13127,"src":"2663:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13117,"name":"address","nodeType":"ElementaryTypeName","src":"2663:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13120,"mutability":"mutable","name":"to","nameLocation":"2685:2:27","nodeType":"VariableDeclaration","scope":13127,"src":"2677:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13119,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13122,"mutability":"mutable","name":"value","nameLocation":"2697:5:27","nodeType":"VariableDeclaration","scope":13127,"src":"2689:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13121,"name":"uint256","nodeType":"ElementaryTypeName","src":"2689:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2662:41:27"},"returnParameters":{"id":13126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13127,"src":"2722:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13124,"name":"bool","nodeType":"ElementaryTypeName","src":"2722:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2721:6:27"},"scope":13131,"src":"2641:87:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f4ba83a","id":13130,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"2741:7:27","nodeType":"FunctionDefinition","parameters":{"id":13128,"nodeType":"ParameterList","parameters":[],"src":"2748:2:27"},"returnParameters":{"id":13129,"nodeType":"ParameterList","parameters":[],"src":"2759:0:27"},"scope":13131,"src":"2732:28:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13132,"src":"58:2704:27","usedErrors":[12875,12881,12887,12895,12903,12907,12911,12915,12919,12923,12925,12927],"usedEvents":[12935,12939,12947,12955,12963,12971,12975]}],"src":"33:2730:27"},"id":27},"contracts/interfaces/IChallenges.sol":{"ast":{"absolutePath":"contracts/interfaces/IChallenges.sol","exportedSymbols":{"ChallengeTypes":[12871],"IChallenges":[13860]},"id":13861,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":13133,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:28"},{"absolutePath":"contracts/challenges/libraries/ChallengeTypes.sol","file":"../challenges/libraries/ChallengeTypes.sol","id":13135,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13861,"sourceUnit":12872,"src":"57:76:28","symbolAliases":[{"foreign":{"id":13134,"name":"ChallengeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"66:14:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IChallenges","contractDependencies":[],"contractKind":"interface","documentation":{"id":13136,"nodeType":"StructuredDocumentation","src":"135:316:28","text":"@title B3TRChallenges Interface\n @notice External interface for creating, joining, settling, and administering B3TR challenges.\n @dev Lifecycle and settlement events emitted from the challenge libraries are declared here as well so the main\n contract ABI remains complete for docs, tests, and indexers."},"fullyImplemented":false,"id":13860,"linearizedBaseContracts":[13860],"name":"IChallenges","nameLocation":"461:11:28","nodeType":"ContractDefinition","nodes":[{"errorSelector":"d92e233d","id":13138,"name":"ZeroAddress","nameLocation":"520:11:28","nodeType":"ErrorDefinition","parameters":{"id":13137,"nodeType":"ParameterList","parameters":[],"src":"531:2:28"},"src":"514:20:28"},{"errorSelector":"2c5211c6","id":13140,"name":"InvalidAmount","nameLocation":"543:13:28","nodeType":"ErrorDefinition","parameters":{"id":13139,"nodeType":"ParameterList","parameters":[],"src":"556:2:28"},"src":"537:22:28"},{"errorSelector":"27ab623f","id":13146,"name":"BetAmountBelowMinimum","nameLocation":"568:21:28","nodeType":"ErrorDefinition","parameters":{"id":13145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13142,"mutability":"mutable","name":"provided","nameLocation":"598:8:28","nodeType":"VariableDeclaration","scope":13146,"src":"590:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13141,"name":"uint256","nodeType":"ElementaryTypeName","src":"590:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13144,"mutability":"mutable","name":"minimum","nameLocation":"616:7:28","nodeType":"VariableDeclaration","scope":13146,"src":"608:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13143,"name":"uint256","nodeType":"ElementaryTypeName","src":"608:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"589:35:28"},"src":"562:63:28"},{"errorSelector":"b986b599","id":13152,"name":"InvalidStartRound","nameLocation":"634:17:28","nodeType":"ErrorDefinition","parameters":{"id":13151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13148,"mutability":"mutable","name":"startRound","nameLocation":"660:10:28","nodeType":"VariableDeclaration","scope":13152,"src":"652:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13147,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13150,"mutability":"mutable","name":"currentRound","nameLocation":"680:12:28","nodeType":"VariableDeclaration","scope":13152,"src":"672:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13149,"name":"uint256","nodeType":"ElementaryTypeName","src":"672:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:42:28"},"src":"628:66:28"},{"errorSelector":"4d7d3923","id":13158,"name":"InvalidEndRound","nameLocation":"703:15:28","nodeType":"ErrorDefinition","parameters":{"id":13157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13154,"mutability":"mutable","name":"startRound","nameLocation":"727:10:28","nodeType":"VariableDeclaration","scope":13158,"src":"719:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13153,"name":"uint256","nodeType":"ElementaryTypeName","src":"719:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13156,"mutability":"mutable","name":"endRound","nameLocation":"747:8:28","nodeType":"VariableDeclaration","scope":13158,"src":"739:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13155,"name":"uint256","nodeType":"ElementaryTypeName","src":"739:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"718:38:28"},"src":"697:60:28"},{"errorSelector":"35f4a26b","id":13160,"name":"InvalidChallengeTypeForCombo","nameLocation":"766:28:28","nodeType":"ErrorDefinition","parameters":{"id":13159,"nodeType":"ParameterList","parameters":[],"src":"794:2:28"},"src":"760:37:28"},{"errorSelector":"6a88293d","id":13162,"name":"InvalidTypeConfiguration","nameLocation":"806:24:28","nodeType":"ErrorDefinition","parameters":{"id":13161,"nodeType":"ParameterList","parameters":[],"src":"830:2:28"},"src":"800:33:28"},{"errorSelector":"f45cb753","id":13170,"name":"InsufficientPrizePerWinner","nameLocation":"842:26:28","nodeType":"ErrorDefinition","parameters":{"id":13169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13164,"mutability":"mutable","name":"stakeAmount","nameLocation":"877:11:28","nodeType":"VariableDeclaration","scope":13170,"src":"869:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13163,"name":"uint256","nodeType":"ElementaryTypeName","src":"869:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13166,"mutability":"mutable","name":"numWinners","nameLocation":"898:10:28","nodeType":"VariableDeclaration","scope":13170,"src":"890:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13165,"name":"uint256","nodeType":"ElementaryTypeName","src":"890:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13168,"mutability":"mutable","name":"minPrizePerWinner","nameLocation":"918:17:28","nodeType":"VariableDeclaration","scope":13170,"src":"910:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13167,"name":"uint256","nodeType":"ElementaryTypeName","src":"910:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"868:68:28"},"src":"836:101:28"},{"errorSelector":"13c3d1b1","id":13176,"name":"ThresholdTooHigh","nameLocation":"946:16:28","nodeType":"ErrorDefinition","parameters":{"id":13175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13172,"mutability":"mutable","name":"provided","nameLocation":"971:8:28","nodeType":"VariableDeclaration","scope":13176,"src":"963:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13171,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13174,"mutability":"mutable","name":"maximum","nameLocation":"989:7:28","nodeType":"VariableDeclaration","scope":13176,"src":"981:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13173,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"962:35:28"},"src":"940:58:28"},{"errorSelector":"83dc6558","id":13182,"name":"TitleTooLong","nameLocation":"1007:12:28","nodeType":"ErrorDefinition","parameters":{"id":13181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13178,"mutability":"mutable","name":"provided","nameLocation":"1028:8:28","nodeType":"VariableDeclaration","scope":13182,"src":"1020:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13177,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13180,"mutability":"mutable","name":"maximum","nameLocation":"1046:7:28","nodeType":"VariableDeclaration","scope":13182,"src":"1038:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13179,"name":"uint256","nodeType":"ElementaryTypeName","src":"1038:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1019:35:28"},"src":"1001:54:28"},{"errorSelector":"71a24cf3","id":13188,"name":"DescriptionTooLong","nameLocation":"1064:18:28","nodeType":"ErrorDefinition","parameters":{"id":13187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13184,"mutability":"mutable","name":"provided","nameLocation":"1091:8:28","nodeType":"VariableDeclaration","scope":13188,"src":"1083:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13183,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13186,"mutability":"mutable","name":"maximum","nameLocation":"1109:7:28","nodeType":"VariableDeclaration","scope":13188,"src":"1101:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13185,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1082:35:28"},"src":"1058:60:28"},{"errorSelector":"6754ccbf","id":13194,"name":"ImageURITooLong","nameLocation":"1127:15:28","nodeType":"ErrorDefinition","parameters":{"id":13193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13190,"mutability":"mutable","name":"provided","nameLocation":"1151:8:28","nodeType":"VariableDeclaration","scope":13194,"src":"1143:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1143:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13192,"mutability":"mutable","name":"maximum","nameLocation":"1169:7:28","nodeType":"VariableDeclaration","scope":13194,"src":"1161:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13191,"name":"uint256","nodeType":"ElementaryTypeName","src":"1161:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1142:35:28"},"src":"1121:57:28"},{"errorSelector":"95e7f526","id":13200,"name":"MetadataURITooLong","nameLocation":"1187:18:28","nodeType":"ErrorDefinition","parameters":{"id":13199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13196,"mutability":"mutable","name":"provided","nameLocation":"1214:8:28","nodeType":"VariableDeclaration","scope":13200,"src":"1206:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13195,"name":"uint256","nodeType":"ElementaryTypeName","src":"1206:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13198,"mutability":"mutable","name":"maximum","nameLocation":"1232:7:28","nodeType":"VariableDeclaration","scope":13200,"src":"1224:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13197,"name":"uint256","nodeType":"ElementaryTypeName","src":"1224:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1205:35:28"},"src":"1181:60:28"},{"errorSelector":"fe00e8fe","id":13206,"name":"MaxChallengeDurationExceeded","nameLocation":"1250:28:28","nodeType":"ErrorDefinition","parameters":{"id":13205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13202,"mutability":"mutable","name":"provided","nameLocation":"1287:8:28","nodeType":"VariableDeclaration","scope":13206,"src":"1279:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1279:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13204,"mutability":"mutable","name":"maximum","nameLocation":"1305:7:28","nodeType":"VariableDeclaration","scope":13206,"src":"1297:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13203,"name":"uint256","nodeType":"ElementaryTypeName","src":"1297:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1278:35:28"},"src":"1244:70:28"},{"errorSelector":"95247282","id":13212,"name":"MaxSelectedAppsExceeded","nameLocation":"1323:23:28","nodeType":"ErrorDefinition","parameters":{"id":13211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13208,"mutability":"mutable","name":"provided","nameLocation":"1355:8:28","nodeType":"VariableDeclaration","scope":13212,"src":"1347:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13207,"name":"uint256","nodeType":"ElementaryTypeName","src":"1347:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13210,"mutability":"mutable","name":"maximum","nameLocation":"1373:7:28","nodeType":"VariableDeclaration","scope":13212,"src":"1365:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13209,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1346:35:28"},"src":"1317:65:28"},{"errorSelector":"ee924c28","id":13218,"name":"MaxParticipantsExceeded","nameLocation":"1391:23:28","nodeType":"ErrorDefinition","parameters":{"id":13217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13214,"mutability":"mutable","name":"provided","nameLocation":"1423:8:28","nodeType":"VariableDeclaration","scope":13218,"src":"1415:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13213,"name":"uint256","nodeType":"ElementaryTypeName","src":"1415:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13216,"mutability":"mutable","name":"maximum","nameLocation":"1441:7:28","nodeType":"VariableDeclaration","scope":13218,"src":"1433:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13215,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1414:35:28"},"src":"1385:65:28"},{"errorSelector":"5bafafd1","id":13222,"name":"ChallengeDoesNotExist","nameLocation":"1459:21:28","nodeType":"ErrorDefinition","parameters":{"id":13221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13220,"mutability":"mutable","name":"challengeId","nameLocation":"1489:11:28","nodeType":"VariableDeclaration","scope":13222,"src":"1481:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13219,"name":"uint256","nodeType":"ElementaryTypeName","src":"1481:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1480:21:28"},"src":"1453:49:28"},{"errorSelector":"6e770b7b","id":13226,"name":"ChallengeUnknownApp","nameLocation":"1511:19:28","nodeType":"ErrorDefinition","parameters":{"id":13225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13224,"mutability":"mutable","name":"appId","nameLocation":"1539:5:28","nodeType":"VariableDeclaration","scope":13226,"src":"1531:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13223,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1531:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1530:15:28"},"src":"1505:41:28"},{"errorSelector":"de0927c9","id":13230,"name":"DuplicateApp","nameLocation":"1555:12:28","nodeType":"ErrorDefinition","parameters":{"id":13229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13228,"mutability":"mutable","name":"appId","nameLocation":"1576:5:28","nodeType":"VariableDeclaration","scope":13230,"src":"1568:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1568:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1567:15:28"},"src":"1549:34:28"},{"errorSelector":"7d288d45","id":13234,"name":"ChallengeNotPending","nameLocation":"1592:19:28","nodeType":"ErrorDefinition","parameters":{"id":13233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13232,"mutability":"mutable","name":"challengeId","nameLocation":"1620:11:28","nodeType":"VariableDeclaration","scope":13234,"src":"1612:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13231,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:21:28"},"src":"1586:47:28"},{"errorSelector":"57684ca5","id":13242,"name":"ChallengeNotEnded","nameLocation":"1642:17:28","nodeType":"ErrorDefinition","parameters":{"id":13241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13236,"mutability":"mutable","name":"challengeId","nameLocation":"1668:11:28","nodeType":"VariableDeclaration","scope":13242,"src":"1660:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13235,"name":"uint256","nodeType":"ElementaryTypeName","src":"1660:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13238,"mutability":"mutable","name":"endRound","nameLocation":"1689:8:28","nodeType":"VariableDeclaration","scope":13242,"src":"1681:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13237,"name":"uint256","nodeType":"ElementaryTypeName","src":"1681:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13240,"mutability":"mutable","name":"currentRound","nameLocation":"1707:12:28","nodeType":"VariableDeclaration","scope":13242,"src":"1699:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13239,"name":"uint256","nodeType":"ElementaryTypeName","src":"1699:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1659:61:28"},"src":"1636:85:28"},{"errorSelector":"7b05ab9b","id":13250,"name":"ChallengeEnded","nameLocation":"1730:14:28","nodeType":"ErrorDefinition","parameters":{"id":13249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13244,"mutability":"mutable","name":"challengeId","nameLocation":"1753:11:28","nodeType":"VariableDeclaration","scope":13250,"src":"1745:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13243,"name":"uint256","nodeType":"ElementaryTypeName","src":"1745:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13246,"mutability":"mutable","name":"endRound","nameLocation":"1774:8:28","nodeType":"VariableDeclaration","scope":13250,"src":"1766:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13245,"name":"uint256","nodeType":"ElementaryTypeName","src":"1766:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13248,"mutability":"mutable","name":"currentRound","nameLocation":"1792:12:28","nodeType":"VariableDeclaration","scope":13250,"src":"1784:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13247,"name":"uint256","nodeType":"ElementaryTypeName","src":"1784:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1744:61:28"},"src":"1724:82:28"},{"errorSelector":"f1be975c","id":13254,"name":"ChallengeAlreadyCompleted","nameLocation":"1815:25:28","nodeType":"ErrorDefinition","parameters":{"id":13253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13252,"mutability":"mutable","name":"challengeId","nameLocation":"1849:11:28","nodeType":"VariableDeclaration","scope":13254,"src":"1841:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13251,"name":"uint256","nodeType":"ElementaryTypeName","src":"1841:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1840:21:28"},"src":"1809:53:28"},{"errorSelector":"66fc8781","id":13261,"name":"ChallengeInvalidStatus","nameLocation":"1871:22:28","nodeType":"ErrorDefinition","parameters":{"id":13260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13256,"mutability":"mutable","name":"challengeId","nameLocation":"1902:11:28","nodeType":"VariableDeclaration","scope":13261,"src":"1894:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13255,"name":"uint256","nodeType":"ElementaryTypeName","src":"1894:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13259,"mutability":"mutable","name":"status","nameLocation":"1946:6:28","nodeType":"VariableDeclaration","scope":13261,"src":"1915:37:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"typeName":{"id":13258,"nodeType":"UserDefinedTypeName","pathNode":{"id":13257,"name":"ChallengeTypes.ChallengeStatus","nameLocations":["1915:14:28","1930:15:28"],"nodeType":"IdentifierPath","referencedDeclaration":12673,"src":"1915:30:28"},"referencedDeclaration":12673,"src":"1915:30:28","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"visibility":"internal"}],"src":"1893:60:28"},"src":"1865:89:28"},{"errorSelector":"f6f0bad1","id":13265,"name":"CreatorCannotJoin","nameLocation":"1963:17:28","nodeType":"ErrorDefinition","parameters":{"id":13264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13263,"mutability":"mutable","name":"challengeId","nameLocation":"1989:11:28","nodeType":"VariableDeclaration","scope":13265,"src":"1981:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13262,"name":"uint256","nodeType":"ElementaryTypeName","src":"1981:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1980:21:28"},"src":"1957:45:28"},{"errorSelector":"1f86b136","id":13269,"name":"CreatorCannotLeave","nameLocation":"2011:18:28","nodeType":"ErrorDefinition","parameters":{"id":13268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13267,"mutability":"mutable","name":"challengeId","nameLocation":"2038:11:28","nodeType":"VariableDeclaration","scope":13269,"src":"2030:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13266,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2029:21:28"},"src":"2005:46:28"},{"errorSelector":"73d45943","id":13275,"name":"AlreadyParticipating","nameLocation":"2060:20:28","nodeType":"ErrorDefinition","parameters":{"id":13274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13271,"mutability":"mutable","name":"challengeId","nameLocation":"2089:11:28","nodeType":"VariableDeclaration","scope":13275,"src":"2081:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13270,"name":"uint256","nodeType":"ElementaryTypeName","src":"2081:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13273,"mutability":"mutable","name":"participant","nameLocation":"2110:11:28","nodeType":"VariableDeclaration","scope":13275,"src":"2102:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13272,"name":"address","nodeType":"ElementaryTypeName","src":"2102:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2080:42:28"},"src":"2054:69:28"},{"errorSelector":"c1000133","id":13281,"name":"NotParticipating","nameLocation":"2132:16:28","nodeType":"ErrorDefinition","parameters":{"id":13280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13277,"mutability":"mutable","name":"challengeId","nameLocation":"2157:11:28","nodeType":"VariableDeclaration","scope":13281,"src":"2149:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13276,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13279,"mutability":"mutable","name":"participant","nameLocation":"2178:11:28","nodeType":"VariableDeclaration","scope":13281,"src":"2170:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13278,"name":"address","nodeType":"ElementaryTypeName","src":"2170:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2148:42:28"},"src":"2126:65:28"},{"errorSelector":"1453c348","id":13287,"name":"NotInvited","nameLocation":"2200:10:28","nodeType":"ErrorDefinition","parameters":{"id":13286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13283,"mutability":"mutable","name":"challengeId","nameLocation":"2219:11:28","nodeType":"VariableDeclaration","scope":13287,"src":"2211:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13282,"name":"uint256","nodeType":"ElementaryTypeName","src":"2211:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13285,"mutability":"mutable","name":"participant","nameLocation":"2240:11:28","nodeType":"VariableDeclaration","scope":13287,"src":"2232:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13284,"name":"address","nodeType":"ElementaryTypeName","src":"2232:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2210:42:28"},"src":"2194:59:28"},{"errorSelector":"b361b5fb","id":13293,"name":"NothingToClaim","nameLocation":"2262:14:28","nodeType":"ErrorDefinition","parameters":{"id":13292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13289,"mutability":"mutable","name":"challengeId","nameLocation":"2285:11:28","nodeType":"VariableDeclaration","scope":13293,"src":"2277:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13288,"name":"uint256","nodeType":"ElementaryTypeName","src":"2277:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13291,"mutability":"mutable","name":"account","nameLocation":"2306:7:28","nodeType":"VariableDeclaration","scope":13293,"src":"2298:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13290,"name":"address","nodeType":"ElementaryTypeName","src":"2298:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2276:38:28"},"src":"2256:59:28"},{"errorSelector":"5bd9a0f6","id":13299,"name":"NothingToRefund","nameLocation":"2324:15:28","nodeType":"ErrorDefinition","parameters":{"id":13298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13295,"mutability":"mutable","name":"challengeId","nameLocation":"2348:11:28","nodeType":"VariableDeclaration","scope":13299,"src":"2340:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13294,"name":"uint256","nodeType":"ElementaryTypeName","src":"2340:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13297,"mutability":"mutable","name":"account","nameLocation":"2369:7:28","nodeType":"VariableDeclaration","scope":13299,"src":"2361:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13296,"name":"address","nodeType":"ElementaryTypeName","src":"2361:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2339:38:28"},"src":"2318:60:28"},{"errorSelector":"a9214540","id":13305,"name":"AlreadyClaimed","nameLocation":"2387:14:28","nodeType":"ErrorDefinition","parameters":{"id":13304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13301,"mutability":"mutable","name":"challengeId","nameLocation":"2410:11:28","nodeType":"VariableDeclaration","scope":13305,"src":"2402:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13300,"name":"uint256","nodeType":"ElementaryTypeName","src":"2402:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13303,"mutability":"mutable","name":"account","nameLocation":"2431:7:28","nodeType":"VariableDeclaration","scope":13305,"src":"2423:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13302,"name":"address","nodeType":"ElementaryTypeName","src":"2423:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2401:38:28"},"src":"2381:59:28"},{"errorSelector":"6101359d","id":13311,"name":"AlreadyRefunded","nameLocation":"2449:15:28","nodeType":"ErrorDefinition","parameters":{"id":13310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13307,"mutability":"mutable","name":"challengeId","nameLocation":"2473:11:28","nodeType":"VariableDeclaration","scope":13311,"src":"2465:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13306,"name":"uint256","nodeType":"ElementaryTypeName","src":"2465:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13309,"mutability":"mutable","name":"account","nameLocation":"2494:7:28","nodeType":"VariableDeclaration","scope":13311,"src":"2486:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13308,"name":"address","nodeType":"ElementaryTypeName","src":"2486:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:38:28"},"src":"2443:60:28"},{"errorSelector":"d494848c","id":13317,"name":"AlreadyInvited","nameLocation":"2512:14:28","nodeType":"ErrorDefinition","parameters":{"id":13316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13313,"mutability":"mutable","name":"challengeId","nameLocation":"2535:11:28","nodeType":"VariableDeclaration","scope":13317,"src":"2527:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13312,"name":"uint256","nodeType":"ElementaryTypeName","src":"2527:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13315,"mutability":"mutable","name":"invitee","nameLocation":"2556:7:28","nodeType":"VariableDeclaration","scope":13317,"src":"2548:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13314,"name":"address","nodeType":"ElementaryTypeName","src":"2548:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2526:38:28"},"src":"2506:59:28"},{"errorSelector":"90b8ec18","id":13319,"name":"TransferFailed","nameLocation":"2574:14:28","nodeType":"ErrorDefinition","parameters":{"id":13318,"nodeType":"ParameterList","parameters":[],"src":"2588:2:28"},"src":"2568:23:28"},{"errorSelector":"11c83d2c","id":13325,"name":"InsufficientWithdrawableFunds","nameLocation":"2600:29:28","nodeType":"ErrorDefinition","parameters":{"id":13324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13321,"mutability":"mutable","name":"available","nameLocation":"2638:9:28","nodeType":"VariableDeclaration","scope":13325,"src":"2630:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13320,"name":"uint256","nodeType":"ElementaryTypeName","src":"2630:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13323,"mutability":"mutable","name":"requested","nameLocation":"2657:9:28","nodeType":"VariableDeclaration","scope":13325,"src":"2649:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13322,"name":"uint256","nodeType":"ElementaryTypeName","src":"2649:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2629:38:28"},"src":"2594:74:28"},{"errorSelector":"13dba1ee","id":13329,"name":"ChallengesUnauthorizedUser","nameLocation":"2677:26:28","nodeType":"ErrorDefinition","parameters":{"id":13328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13327,"mutability":"mutable","name":"user","nameLocation":"2712:4:28","nodeType":"VariableDeclaration","scope":13329,"src":"2704:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13326,"name":"address","nodeType":"ElementaryTypeName","src":"2704:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2703:14:28"},"src":"2671:47:28"},{"errorSelector":"603aee3c","id":13333,"name":"SplitWinCannotComplete","nameLocation":"2727:22:28","nodeType":"ErrorDefinition","parameters":{"id":13332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13331,"mutability":"mutable","name":"challengeId","nameLocation":"2758:11:28","nodeType":"VariableDeclaration","scope":13333,"src":"2750:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13330,"name":"uint256","nodeType":"ElementaryTypeName","src":"2750:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2749:21:28"},"src":"2721:50:28"},{"errorSelector":"e1f10ea4","id":13337,"name":"SplitWinSlotsExhausted","nameLocation":"2780:22:28","nodeType":"ErrorDefinition","parameters":{"id":13336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13335,"mutability":"mutable","name":"challengeId","nameLocation":"2811:11:28","nodeType":"VariableDeclaration","scope":13337,"src":"2803:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13334,"name":"uint256","nodeType":"ElementaryTypeName","src":"2803:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2802:21:28"},"src":"2774:50:28"},{"errorSelector":"8622e1ea","id":13347,"name":"NotEligibleForSplitWin","nameLocation":"2833:22:28","nodeType":"ErrorDefinition","parameters":{"id":13346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13339,"mutability":"mutable","name":"challengeId","nameLocation":"2864:11:28","nodeType":"VariableDeclaration","scope":13347,"src":"2856:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13338,"name":"uint256","nodeType":"ElementaryTypeName","src":"2856:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13341,"mutability":"mutable","name":"account","nameLocation":"2885:7:28","nodeType":"VariableDeclaration","scope":13347,"src":"2877:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13340,"name":"address","nodeType":"ElementaryTypeName","src":"2877:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13343,"mutability":"mutable","name":"actions","nameLocation":"2902:7:28","nodeType":"VariableDeclaration","scope":13347,"src":"2894:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13342,"name":"uint256","nodeType":"ElementaryTypeName","src":"2894:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13345,"mutability":"mutable","name":"threshold","nameLocation":"2919:9:28","nodeType":"VariableDeclaration","scope":13347,"src":"2911:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13344,"name":"uint256","nodeType":"ElementaryTypeName","src":"2911:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2855:74:28"},"src":"2827:103:28"},{"errorSelector":"f8825bf2","id":13351,"name":"NotASplitWinChallenge","nameLocation":"2939:21:28","nodeType":"ErrorDefinition","parameters":{"id":13350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13349,"mutability":"mutable","name":"challengeId","nameLocation":"2969:11:28","nodeType":"VariableDeclaration","scope":13351,"src":"2961:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13348,"name":"uint256","nodeType":"ElementaryTypeName","src":"2961:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2960:21:28"},"src":"2933:49:28"},{"documentation":{"id":13352,"nodeType":"StructuredDocumentation","src":"2985:261:28","text":"@notice Thrown when an account fails the VeBetterPassport personhood check on a participation or claim path.\n @param account Address that failed the personhood check.\n @param reason Reason returned by VeBetterPassport (e.g. \"User is blacklisted\")."},"errorSelector":"411f12c7","id":13358,"name":"NotVerifiedPerson","nameLocation":"3255:17:28","nodeType":"ErrorDefinition","parameters":{"id":13357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13354,"mutability":"mutable","name":"account","nameLocation":"3281:7:28","nodeType":"VariableDeclaration","scope":13358,"src":"3273:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13353,"name":"address","nodeType":"ElementaryTypeName","src":"3273:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13356,"mutability":"mutable","name":"reason","nameLocation":"3297:6:28","nodeType":"VariableDeclaration","scope":13358,"src":"3290:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13355,"name":"string","nodeType":"ElementaryTypeName","src":"3290:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3272:32:28"},"src":"3249:56:28"},{"anonymous":false,"documentation":{"id":13359,"nodeType":"StructuredDocumentation","src":"3347:179:28","text":"@notice Emitted when the B3TR token address used by challenges is updated.\n @param oldAddress Previous B3TR token address.\n @param newAddress New B3TR token address."},"eventSelector":"b3061a8192d243178b0fd92d1809bc86c3fa3b177c046cf74974c45c32cd25e0","id":13365,"name":"B3TRAddressUpdated","nameLocation":"3535:18:28","nodeType":"EventDefinition","parameters":{"id":13364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13361,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"3570:10:28","nodeType":"VariableDeclaration","scope":13365,"src":"3554:26:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13360,"name":"address","nodeType":"ElementaryTypeName","src":"3554:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13363,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"3598:10:28","nodeType":"VariableDeclaration","scope":13365,"src":"3582:26:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13362,"name":"address","nodeType":"ElementaryTypeName","src":"3582:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3553:56:28"},"src":"3529:81:28"},{"anonymous":false,"documentation":{"id":13366,"nodeType":"StructuredDocumentation","src":"3614:205:28","text":"@notice Emitted when the VeBetterPassport address used for action accounting is updated.\n @param oldAddress Previous VeBetterPassport address.\n @param newAddress New VeBetterPassport address."},"eventSelector":"d260589e8955f4324723f68c9c004afe08c82d5790f93946bbf95f6ebcab5347","id":13372,"name":"VeBetterPassportAddressUpdated","nameLocation":"3828:30:28","nodeType":"EventDefinition","parameters":{"id":13371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13368,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"3875:10:28","nodeType":"VariableDeclaration","scope":13372,"src":"3859:26:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13367,"name":"address","nodeType":"ElementaryTypeName","src":"3859:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13370,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"3903:10:28","nodeType":"VariableDeclaration","scope":13372,"src":"3887:26:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13369,"name":"address","nodeType":"ElementaryTypeName","src":"3887:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3858:56:28"},"src":"3822:93:28"},{"anonymous":false,"documentation":{"id":13373,"nodeType":"StructuredDocumentation","src":"3919:208:28","text":"@notice Emitted when the XAllocationVoting governor address is updated.\n @param oldAddress Previous XAllocationVoting governor address.\n @param newAddress New XAllocationVoting governor address."},"eventSelector":"897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f4714259","id":13379,"name":"XAllocationVotingAddressUpdated","nameLocation":"4136:31:28","nodeType":"EventDefinition","parameters":{"id":13378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13375,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"4184:10:28","nodeType":"VariableDeclaration","scope":13379,"src":"4168:26:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13374,"name":"address","nodeType":"ElementaryTypeName","src":"4168:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13377,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"4212:10:28","nodeType":"VariableDeclaration","scope":13379,"src":"4196:26:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13376,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4167:56:28"},"src":"4130:94:28"},{"anonymous":false,"documentation":{"id":13380,"nodeType":"StructuredDocumentation","src":"4228:187:28","text":"@notice Emitted when the X2EarnApps registry address is updated.\n @param oldAddress Previous X2EarnApps registry address.\n @param newAddress New X2EarnApps registry address."},"eventSelector":"02a190d74141c632badc9d2cbb0eb33818f3b5f949c4e8ad29d80aa63a5537ac","id":13386,"name":"X2EarnAppsAddressUpdated","nameLocation":"4424:24:28","nodeType":"EventDefinition","parameters":{"id":13385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13382,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"4465:10:28","nodeType":"VariableDeclaration","scope":13386,"src":"4449:26:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13381,"name":"address","nodeType":"ElementaryTypeName","src":"4449:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13384,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"4493:10:28","nodeType":"VariableDeclaration","scope":13386,"src":"4477:26:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13383,"name":"address","nodeType":"ElementaryTypeName","src":"4477:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4448:56:28"},"src":"4418:87:28"},{"anonymous":false,"documentation":{"id":13387,"nodeType":"StructuredDocumentation","src":"4509:182:28","text":"@notice Emitted when the maximum challenge duration is updated.\n @param oldValue Previous maximum duration, in rounds.\n @param newValue New maximum duration, in rounds."},"eventSelector":"280335b2726d1c2b1770ba289d3de2cebd2f55c641e93c7e77d033cadab1b06b","id":13393,"name":"MaxChallengeDurationUpdated","nameLocation":"4700:27:28","nodeType":"EventDefinition","parameters":{"id":13392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13389,"indexed":false,"mutability":"mutable","name":"oldValue","nameLocation":"4736:8:28","nodeType":"VariableDeclaration","scope":13393,"src":"4728:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13388,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13391,"indexed":false,"mutability":"mutable","name":"newValue","nameLocation":"4754:8:28","nodeType":"VariableDeclaration","scope":13393,"src":"4746:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13390,"name":"uint256","nodeType":"ElementaryTypeName","src":"4746:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4727:36:28"},"src":"4694:70:28"},{"anonymous":false,"documentation":{"id":13394,"nodeType":"StructuredDocumentation","src":"4768:181:28","text":"@notice Emitted when the maximum number of explicit apps per challenge is updated.\n @param oldValue Previous maximum app count.\n @param newValue New maximum app count."},"eventSelector":"2294a958ea1cb2569bfbdbd8a8e8502b08b8a71ea5134d264f97f07ef7f8a8e8","id":13400,"name":"MaxSelectedAppsUpdated","nameLocation":"4958:22:28","nodeType":"EventDefinition","parameters":{"id":13399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13396,"indexed":false,"mutability":"mutable","name":"oldValue","nameLocation":"4989:8:28","nodeType":"VariableDeclaration","scope":13400,"src":"4981:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13395,"name":"uint256","nodeType":"ElementaryTypeName","src":"4981:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13398,"indexed":false,"mutability":"mutable","name":"newValue","nameLocation":"5007:8:28","nodeType":"VariableDeclaration","scope":13400,"src":"4999:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13397,"name":"uint256","nodeType":"ElementaryTypeName","src":"4999:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4980:36:28"},"src":"4952:65:28"},{"anonymous":false,"documentation":{"id":13401,"nodeType":"StructuredDocumentation","src":"5021:208:28","text":"@notice Emitted when the maximum number of participants per Max Actions challenge is updated.\n @param oldValue Previous maximum participant count.\n @param newValue New maximum participant count."},"eventSelector":"43f71dfd216eaaf2f75bdb23d66ae4f5b7e2975e422538b68ef11b46b3874098","id":13407,"name":"MaxParticipantsUpdated","nameLocation":"5238:22:28","nodeType":"EventDefinition","parameters":{"id":13406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13403,"indexed":false,"mutability":"mutable","name":"oldValue","nameLocation":"5269:8:28","nodeType":"VariableDeclaration","scope":13407,"src":"5261:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13402,"name":"uint256","nodeType":"ElementaryTypeName","src":"5261:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13405,"indexed":false,"mutability":"mutable","name":"newValue","nameLocation":"5287:8:28","nodeType":"VariableDeclaration","scope":13407,"src":"5279:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13404,"name":"uint256","nodeType":"ElementaryTypeName","src":"5279:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5260:36:28"},"src":"5232:65:28"},{"anonymous":false,"documentation":{"id":13408,"nodeType":"StructuredDocumentation","src":"5301:179:28","text":"@notice Emitted when the minimum stake or sponsored prize amount is updated.\n @param oldValue Previous minimum B3TR amount.\n @param newValue New minimum B3TR amount."},"eventSelector":"82480e97991520549ac4b5d0e1d97edb3bfac2666202923b6903d2a953dc7608","id":13414,"name":"MinBetAmountUpdated","nameLocation":"5489:19:28","nodeType":"EventDefinition","parameters":{"id":13413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13410,"indexed":false,"mutability":"mutable","name":"oldValue","nameLocation":"5517:8:28","nodeType":"VariableDeclaration","scope":13414,"src":"5509:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13409,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13412,"indexed":false,"mutability":"mutable","name":"newValue","nameLocation":"5535:8:28","nodeType":"VariableDeclaration","scope":13414,"src":"5527:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13411,"name":"uint256","nodeType":"ElementaryTypeName","src":"5527:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5508:36:28"},"src":"5483:62:28"},{"anonymous":false,"documentation":{"id":13415,"nodeType":"StructuredDocumentation","src":"5549:230:28","text":"@notice Emitted when an admin withdraws B3TR from the contract.\n @param admin Address that performed the withdrawal.\n @param recipient Address that received the withdrawn tokens.\n @param amount Amount withdrawn."},"eventSelector":"8b192dc173e314b16d9067e45c2afbdcdc1713fc4fe1a95aff9076249648abc0","id":13423,"name":"AdminWithdrawal","nameLocation":"5788:15:28","nodeType":"EventDefinition","parameters":{"id":13422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13417,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"5820:5:28","nodeType":"VariableDeclaration","scope":13423,"src":"5804:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13416,"name":"address","nodeType":"ElementaryTypeName","src":"5804:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13419,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"5843:9:28","nodeType":"VariableDeclaration","scope":13423,"src":"5827:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13418,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13421,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"5862:6:28","nodeType":"VariableDeclaration","scope":13423,"src":"5854:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13420,"name":"uint256","nodeType":"ElementaryTypeName","src":"5854:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5803:66:28"},"src":"5782:88:28"},{"anonymous":false,"documentation":{"id":13424,"nodeType":"StructuredDocumentation","src":"5874:1282:28","text":"@notice Emitted when a challenge is created and funded.\n @dev Split Win-specific configuration (numWinners, prizePerWinner) is emitted right after via\n `SplitWinConfigured` to keep this event signature within Solidity stack limits.\n @param challengeId Newly created challenge identifier.\n @param creator Address that created the challenge.\n @param endRound Last round whose actions count toward the challenge.\n @param kind Challenge funding model.\n @param visibility Challenge participation mode.\n @param challengeType Challenge mechanic (Max Actions or Split Win).\n @param stakeAmount Amount locked at creation and required from each joining participant in stake challenges.\n @param startRound First round whose actions count toward the challenge.\n @param threshold Minimum action threshold required to claim a Split Win slot (0 for Max Actions).\n @param allApps True when actions from all apps count, false when only `selectedApps` count.\n @param selectedApps Explicit app allowlist when `allApps` is false.\n @param title Human-readable challenge title.\n @param description Human-readable challenge description.\n @param imageURI Optional image URI.\n @param metadataURI Optional metadata URI."},"eventSelector":"facaa812f3ddb00d0d30b86be7240dff1cd3372e8f77a7b421d35125891e3060","id":13460,"name":"ChallengeCreated","nameLocation":"7165:16:28","nodeType":"EventDefinition","parameters":{"id":13459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13426,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"7203:11:28","nodeType":"VariableDeclaration","scope":13460,"src":"7187:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13425,"name":"uint256","nodeType":"ElementaryTypeName","src":"7187:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13428,"indexed":true,"mutability":"mutable","name":"creator","nameLocation":"7236:7:28","nodeType":"VariableDeclaration","scope":13460,"src":"7220:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13427,"name":"address","nodeType":"ElementaryTypeName","src":"7220:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13430,"indexed":true,"mutability":"mutable","name":"endRound","nameLocation":"7265:8:28","nodeType":"VariableDeclaration","scope":13460,"src":"7249:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13429,"name":"uint256","nodeType":"ElementaryTypeName","src":"7249:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13433,"indexed":false,"mutability":"mutable","name":"kind","nameLocation":"7308:4:28","nodeType":"VariableDeclaration","scope":13460,"src":"7279:33:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"},"typeName":{"id":13432,"nodeType":"UserDefinedTypeName","pathNode":{"id":13431,"name":"ChallengeTypes.ChallengeKind","nameLocations":["7279:14:28","7294:13:28"],"nodeType":"IdentifierPath","referencedDeclaration":12660,"src":"7279:28:28"},"referencedDeclaration":12660,"src":"7279:28:28","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeKind_$12660","typeString":"enum ChallengeTypes.ChallengeKind"}},"visibility":"internal"},{"constant":false,"id":13436,"indexed":false,"mutability":"mutable","name":"visibility","nameLocation":"7353:10:28","nodeType":"VariableDeclaration","scope":13460,"src":"7318:45:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"},"typeName":{"id":13435,"nodeType":"UserDefinedTypeName","pathNode":{"id":13434,"name":"ChallengeTypes.ChallengeVisibility","nameLocations":["7318:14:28","7333:19:28"],"nodeType":"IdentifierPath","referencedDeclaration":12663,"src":"7318:34:28"},"referencedDeclaration":12663,"src":"7318:34:28","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeVisibility_$12663","typeString":"enum ChallengeTypes.ChallengeVisibility"}},"visibility":"internal"},{"constant":false,"id":13439,"indexed":false,"mutability":"mutable","name":"challengeType","nameLocation":"7398:13:28","nodeType":"VariableDeclaration","scope":13460,"src":"7369:42:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"},"typeName":{"id":13438,"nodeType":"UserDefinedTypeName","pathNode":{"id":13437,"name":"ChallengeTypes.ChallengeType","nameLocations":["7369:14:28","7384:13:28"],"nodeType":"IdentifierPath","referencedDeclaration":12667,"src":"7369:28:28"},"referencedDeclaration":12667,"src":"7369:28:28","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeType_$12667","typeString":"enum ChallengeTypes.ChallengeType"}},"visibility":"internal"},{"constant":false,"id":13441,"indexed":false,"mutability":"mutable","name":"stakeAmount","nameLocation":"7425:11:28","nodeType":"VariableDeclaration","scope":13460,"src":"7417:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13440,"name":"uint256","nodeType":"ElementaryTypeName","src":"7417:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13443,"indexed":false,"mutability":"mutable","name":"startRound","nameLocation":"7450:10:28","nodeType":"VariableDeclaration","scope":13460,"src":"7442:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13442,"name":"uint256","nodeType":"ElementaryTypeName","src":"7442:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13445,"indexed":false,"mutability":"mutable","name":"threshold","nameLocation":"7474:9:28","nodeType":"VariableDeclaration","scope":13460,"src":"7466:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13444,"name":"uint256","nodeType":"ElementaryTypeName","src":"7466:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13447,"indexed":false,"mutability":"mutable","name":"allApps","nameLocation":"7494:7:28","nodeType":"VariableDeclaration","scope":13460,"src":"7489:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13446,"name":"bool","nodeType":"ElementaryTypeName","src":"7489:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13450,"indexed":false,"mutability":"mutable","name":"selectedApps","nameLocation":"7517:12:28","nodeType":"VariableDeclaration","scope":13460,"src":"7507:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":13448,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7507:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":13449,"nodeType":"ArrayTypeName","src":"7507:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":13452,"indexed":false,"mutability":"mutable","name":"title","nameLocation":"7542:5:28","nodeType":"VariableDeclaration","scope":13460,"src":"7535:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13451,"name":"string","nodeType":"ElementaryTypeName","src":"7535:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13454,"indexed":false,"mutability":"mutable","name":"description","nameLocation":"7560:11:28","nodeType":"VariableDeclaration","scope":13460,"src":"7553:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13453,"name":"string","nodeType":"ElementaryTypeName","src":"7553:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13456,"indexed":false,"mutability":"mutable","name":"imageURI","nameLocation":"7584:8:28","nodeType":"VariableDeclaration","scope":13460,"src":"7577:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13455,"name":"string","nodeType":"ElementaryTypeName","src":"7577:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13458,"indexed":false,"mutability":"mutable","name":"metadataURI","nameLocation":"7605:11:28","nodeType":"VariableDeclaration","scope":13460,"src":"7598:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13457,"name":"string","nodeType":"ElementaryTypeName","src":"7598:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7181:439:28"},"src":"7159:462:28"},{"anonymous":false,"documentation":{"id":13461,"nodeType":"StructuredDocumentation","src":"7625:309:28","text":"@notice Emitted immediately after `ChallengeCreated` for Split Win challenges only.\n @param challengeId Newly created challenge identifier.\n @param numWinners Number of Split Win slots (creator-defined).\n @param prizePerWinner Locked-at-creation per-slot prize (`stakeAmount / numWinners`)."},"eventSelector":"632e7af18aa775a9a28c2f3530920c3dc0924efe616499de9943f6dc93c699a5","id":13469,"name":"SplitWinConfigured","nameLocation":"7943:18:28","nodeType":"EventDefinition","parameters":{"id":13468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13463,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"7978:11:28","nodeType":"VariableDeclaration","scope":13469,"src":"7962:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13462,"name":"uint256","nodeType":"ElementaryTypeName","src":"7962:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13465,"indexed":false,"mutability":"mutable","name":"numWinners","nameLocation":"7999:10:28","nodeType":"VariableDeclaration","scope":13469,"src":"7991:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13464,"name":"uint256","nodeType":"ElementaryTypeName","src":"7991:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13467,"indexed":false,"mutability":"mutable","name":"prizePerWinner","nameLocation":"8019:14:28","nodeType":"VariableDeclaration","scope":13469,"src":"8011:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13466,"name":"uint256","nodeType":"ElementaryTypeName","src":"8011:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7961:73:28"},"src":"7937:98:28"},{"anonymous":false,"documentation":{"id":13470,"nodeType":"StructuredDocumentation","src":"8039:154:28","text":"@notice Emitted when an invitee is added to a challenge.\n @param challengeId Challenge identifier.\n @param invitee Address that was invited."},"eventSelector":"9a32db57826ebc3e7487a5b33bf9b4eeec26e87e54fbaa4d09df62f3fb627314","id":13476,"name":"ChallengeInviteAdded","nameLocation":"8202:20:28","nodeType":"EventDefinition","parameters":{"id":13475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13472,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"8239:11:28","nodeType":"VariableDeclaration","scope":13476,"src":"8223:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13471,"name":"uint256","nodeType":"ElementaryTypeName","src":"8223:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13474,"indexed":true,"mutability":"mutable","name":"invitee","nameLocation":"8268:7:28","nodeType":"VariableDeclaration","scope":13476,"src":"8252:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13473,"name":"address","nodeType":"ElementaryTypeName","src":"8252:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8222:54:28"},"src":"8196:81:28"},{"anonymous":false,"documentation":{"id":13477,"nodeType":"StructuredDocumentation","src":"8281:150:28","text":"@notice Emitted when a participant joins a challenge.\n @param challengeId Challenge identifier.\n @param participant Address that joined."},"eventSelector":"690ecbabe96222b39728b512682860cc6460002a670ff94954038286bea0ba69","id":13483,"name":"ChallengeJoined","nameLocation":"8440:15:28","nodeType":"EventDefinition","parameters":{"id":13482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13479,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"8472:11:28","nodeType":"VariableDeclaration","scope":13483,"src":"8456:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13478,"name":"uint256","nodeType":"ElementaryTypeName","src":"8456:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13481,"indexed":true,"mutability":"mutable","name":"participant","nameLocation":"8501:11:28","nodeType":"VariableDeclaration","scope":13483,"src":"8485:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13480,"name":"address","nodeType":"ElementaryTypeName","src":"8485:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8455:58:28"},"src":"8434:80:28"},{"anonymous":false,"documentation":{"id":13484,"nodeType":"StructuredDocumentation","src":"8518:166:28","text":"@notice Emitted when a participant leaves a challenge before it starts.\n @param challengeId Challenge identifier.\n @param participant Address that left."},"eventSelector":"a1132418813654d1519f5c54cbeaa3aef5c41c01f9fad4cf6bd730eca8f43575","id":13490,"name":"ChallengeLeft","nameLocation":"8693:13:28","nodeType":"EventDefinition","parameters":{"id":13489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13486,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"8723:11:28","nodeType":"VariableDeclaration","scope":13490,"src":"8707:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13485,"name":"uint256","nodeType":"ElementaryTypeName","src":"8707:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13488,"indexed":true,"mutability":"mutable","name":"participant","nameLocation":"8752:11:28","nodeType":"VariableDeclaration","scope":13490,"src":"8736:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13487,"name":"address","nodeType":"ElementaryTypeName","src":"8736:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8706:58:28"},"src":"8687:78:28"},{"anonymous":false,"documentation":{"id":13491,"nodeType":"StructuredDocumentation","src":"8769:152:28","text":"@notice Emitted when an invitee declines a challenge.\n @param challengeId Challenge identifier.\n @param participant Address that declined."},"eventSelector":"622307417dca07086bf34ab5f56032aa32328c417e8fd3020ae0394eb9180837","id":13497,"name":"ChallengeDeclined","nameLocation":"8930:17:28","nodeType":"EventDefinition","parameters":{"id":13496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13493,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"8964:11:28","nodeType":"VariableDeclaration","scope":13497,"src":"8948:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13492,"name":"uint256","nodeType":"ElementaryTypeName","src":"8948:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13495,"indexed":true,"mutability":"mutable","name":"participant","nameLocation":"8993:11:28","nodeType":"VariableDeclaration","scope":13497,"src":"8977:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13494,"name":"address","nodeType":"ElementaryTypeName","src":"8977:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8947:58:28"},"src":"8924:82:28"},{"anonymous":false,"documentation":{"id":13498,"nodeType":"StructuredDocumentation","src":"9010:112:28","text":"@notice Emitted when the creator cancels a pending challenge.\n @param challengeId Challenge identifier."},"eventSelector":"8f468517950218b9c61ac630652209be7aeda4de4f6eda5e0d4b106d784fa4e9","id":13502,"name":"ChallengeCancelled","nameLocation":"9131:18:28","nodeType":"EventDefinition","parameters":{"id":13501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13500,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"9166:11:28","nodeType":"VariableDeclaration","scope":13502,"src":"9150:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13499,"name":"uint256","nodeType":"ElementaryTypeName","src":"9150:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9149:29:28"},"src":"9125:54:28"},{"anonymous":false,"documentation":{"id":13503,"nodeType":"StructuredDocumentation","src":"9183:107:28","text":"@notice Emitted when a pending challenge becomes active.\n @param challengeId Challenge identifier."},"eventSelector":"15aacf6098564d68b408a7200e71ed0dcdc4b4538f11437b0fe1f3976afef914","id":13507,"name":"ChallengeActivated","nameLocation":"9299:18:28","nodeType":"EventDefinition","parameters":{"id":13506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13505,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"9334:11:28","nodeType":"VariableDeclaration","scope":13507,"src":"9318:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13504,"name":"uint256","nodeType":"ElementaryTypeName","src":"9318:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9317:29:28"},"src":"9293:54:28"},{"anonymous":false,"documentation":{"id":13508,"nodeType":"StructuredDocumentation","src":"9351:122:28","text":"@notice Emitted when a pending challenge becomes invalid at start time.\n @param challengeId Challenge identifier."},"eventSelector":"d483b2246f0bbcfae793b6618f6da27d09bc5d458d1ed0ca1c0003c4b696cd1b","id":13512,"name":"ChallengeInvalidated","nameLocation":"9482:20:28","nodeType":"EventDefinition","parameters":{"id":13511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13510,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"9519:11:28","nodeType":"VariableDeclaration","scope":13512,"src":"9503:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13509,"name":"uint256","nodeType":"ElementaryTypeName","src":"9503:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9502:29:28"},"src":"9476:56:28"},{"anonymous":false,"documentation":{"id":13513,"nodeType":"StructuredDocumentation","src":"9536:478:28","text":"@notice Emitted when a challenge transitions to Completed status.\n @dev For Split Win the `bestScore` and `bestCount` fields are 0 and `settlementMode` is `SplitWinCompleted`.\n @param challengeId Challenge identifier.\n @param settlementMode Settlement mode selected for payout or refund.\n @param bestScore Highest participant action score recorded (Max Actions only).\n @param bestCount Number of participants tied for `bestScore` (Max Actions only)."},"eventSelector":"fe3d640dfe4a822948e2e15da6bbca1b630a18d21e825edeb5816d60f4e5703b","id":13524,"name":"ChallengeCompleted","nameLocation":"10023:18:28","nodeType":"EventDefinition","parameters":{"id":13523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13515,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"10063:11:28","nodeType":"VariableDeclaration","scope":13524,"src":"10047:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13514,"name":"uint256","nodeType":"ElementaryTypeName","src":"10047:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13518,"indexed":false,"mutability":"mutable","name":"settlementMode","nameLocation":"10110:14:28","nodeType":"VariableDeclaration","scope":13524,"src":"10080:44:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"},"typeName":{"id":13517,"nodeType":"UserDefinedTypeName","pathNode":{"id":13516,"name":"ChallengeTypes.SettlementMode","nameLocations":["10080:14:28","10095:14:28"],"nodeType":"IdentifierPath","referencedDeclaration":12678,"src":"10080:29:28"},"referencedDeclaration":12678,"src":"10080:29:28","typeDescriptions":{"typeIdentifier":"t_enum$_SettlementMode_$12678","typeString":"enum ChallengeTypes.SettlementMode"}},"visibility":"internal"},{"constant":false,"id":13520,"indexed":false,"mutability":"mutable","name":"bestScore","nameLocation":"10138:9:28","nodeType":"VariableDeclaration","scope":13524,"src":"10130:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13519,"name":"uint256","nodeType":"ElementaryTypeName","src":"10130:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13522,"indexed":false,"mutability":"mutable","name":"bestCount","nameLocation":"10161:9:28","nodeType":"VariableDeclaration","scope":13524,"src":"10153:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13521,"name":"uint256","nodeType":"ElementaryTypeName","src":"10153:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10041:133:28"},"src":"10017:158:28"},{"anonymous":false,"documentation":{"id":13525,"nodeType":"StructuredDocumentation","src":"10179:217:28","text":"@notice Emitted when a payout is claimed from a completed Max Actions challenge.\n @param challengeId Challenge identifier.\n @param account Recipient of the payout.\n @param amount Amount transferred."},"eventSelector":"88f0c55826d9ef2f514f933a99edb543a1514ee7211d8bfa04e66e29954fe6b4","id":13533,"name":"ChallengePayoutClaimed","nameLocation":"10405:22:28","nodeType":"EventDefinition","parameters":{"id":13532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13527,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"10444:11:28","nodeType":"VariableDeclaration","scope":13533,"src":"10428:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13526,"name":"uint256","nodeType":"ElementaryTypeName","src":"10428:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13529,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"10473:7:28","nodeType":"VariableDeclaration","scope":13533,"src":"10457:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13528,"name":"address","nodeType":"ElementaryTypeName","src":"10457:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13531,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"10490:6:28","nodeType":"VariableDeclaration","scope":13533,"src":"10482:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13530,"name":"uint256","nodeType":"ElementaryTypeName","src":"10482:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10427:70:28"},"src":"10399:99:28"},{"anonymous":false,"documentation":{"id":13534,"nodeType":"StructuredDocumentation","src":"10502:216:28","text":"@notice Emitted when a refund is claimed from a cancelled or invalid challenge.\n @param challengeId Challenge identifier.\n @param account Recipient of the refund.\n @param amount Amount transferred."},"eventSelector":"fb13634c7c32bbfbc28f461ca4b0c850887c9cfbde7d6c97f24bfcff25c7be36","id":13542,"name":"ChallengeRefundClaimed","nameLocation":"10727:22:28","nodeType":"EventDefinition","parameters":{"id":13541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13536,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"10766:11:28","nodeType":"VariableDeclaration","scope":13542,"src":"10750:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13535,"name":"uint256","nodeType":"ElementaryTypeName","src":"10750:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13538,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"10795:7:28","nodeType":"VariableDeclaration","scope":13542,"src":"10779:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13537,"name":"address","nodeType":"ElementaryTypeName","src":"10779:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13540,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"10812:6:28","nodeType":"VariableDeclaration","scope":13542,"src":"10804:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13539,"name":"uint256","nodeType":"ElementaryTypeName","src":"10804:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10749:70:28"},"src":"10721:99:28"},{"anonymous":false,"documentation":{"id":13543,"nodeType":"StructuredDocumentation","src":"10824:358:28","text":"@notice Emitted when a participant claims a Split Win slot.\n @param challengeId Challenge identifier.\n @param winner Address that secured the slot.\n @param prize Locked per-winner prize transferred.\n @param actions Action count recorded at claim time.\n @param winnersClaimed Cumulative number of slots claimed including this one."},"eventSelector":"4dcac657463253f9668a0d5c9a2f7c00a7d7ac72a1afe05e65034691fdd911c3","id":13555,"name":"SplitWinPrizeClaimed","nameLocation":"11191:20:28","nodeType":"EventDefinition","parameters":{"id":13554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13545,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"11233:11:28","nodeType":"VariableDeclaration","scope":13555,"src":"11217:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13544,"name":"uint256","nodeType":"ElementaryTypeName","src":"11217:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13547,"indexed":true,"mutability":"mutable","name":"winner","nameLocation":"11266:6:28","nodeType":"VariableDeclaration","scope":13555,"src":"11250:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13546,"name":"address","nodeType":"ElementaryTypeName","src":"11250:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13549,"indexed":false,"mutability":"mutable","name":"prize","nameLocation":"11286:5:28","nodeType":"VariableDeclaration","scope":13555,"src":"11278:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13548,"name":"uint256","nodeType":"ElementaryTypeName","src":"11278:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13551,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"11305:7:28","nodeType":"VariableDeclaration","scope":13555,"src":"11297:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13550,"name":"uint256","nodeType":"ElementaryTypeName","src":"11297:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13553,"indexed":false,"mutability":"mutable","name":"winnersClaimed","nameLocation":"11326:14:28","nodeType":"VariableDeclaration","scope":13555,"src":"11318:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13552,"name":"uint256","nodeType":"ElementaryTypeName","src":"11318:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11211:133:28"},"src":"11185:160:28"},{"anonymous":false,"documentation":{"id":13556,"nodeType":"StructuredDocumentation","src":"11349:283:28","text":"@notice Emitted when the creator reclaims unclaimed Split Win slots after the end round.\n @param challengeId Challenge identifier.\n @param creator Challenge creator.\n @param amount Amount transferred (unclaimed slots * prizePerWinner + integer-division remainder)."},"eventSelector":"24c3cd6e13a29307bab455491e4cd5b29f6a457854a08f27f319ab4f8fec5138","id":13564,"name":"SplitWinCreatorRefunded","nameLocation":"11641:23:28","nodeType":"EventDefinition","parameters":{"id":13563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13558,"indexed":true,"mutability":"mutable","name":"challengeId","nameLocation":"11681:11:28","nodeType":"VariableDeclaration","scope":13564,"src":"11665:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13557,"name":"uint256","nodeType":"ElementaryTypeName","src":"11665:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13560,"indexed":true,"mutability":"mutable","name":"creator","nameLocation":"11710:7:28","nodeType":"VariableDeclaration","scope":13564,"src":"11694:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13559,"name":"address","nodeType":"ElementaryTypeName","src":"11694:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13562,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"11727:6:28","nodeType":"VariableDeclaration","scope":13564,"src":"11719:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13561,"name":"uint256","nodeType":"ElementaryTypeName","src":"11719:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11664:70:28"},"src":"11635:100:28"},{"documentation":{"id":13565,"nodeType":"StructuredDocumentation","src":"11780:174:28","text":"@notice Initializes the challenge contract.\n @param data Initial contract addresses and challenge limits.\n @param roles Role assignments for the proxy instance."},"functionSelector":"3cc376bb","id":13574,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"11966:10:28","nodeType":"FunctionDefinition","parameters":{"id":13572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13568,"mutability":"mutable","name":"data","nameLocation":"12025:4:28","nodeType":"VariableDeclaration","scope":13574,"src":"11982:47:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_calldata_ptr","typeString":"struct ChallengeTypes.InitializationData"},"typeName":{"id":13567,"nodeType":"UserDefinedTypeName","pathNode":{"id":13566,"name":"ChallengeTypes.InitializationData","nameLocations":["11982:14:28","11997:18:28"],"nodeType":"IdentifierPath","referencedDeclaration":12734,"src":"11982:33:28"},"referencedDeclaration":12734,"src":"11982:33:28","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$12734_storage_ptr","typeString":"struct ChallengeTypes.InitializationData"}},"visibility":"internal"},{"constant":false,"id":13571,"mutability":"mutable","name":"roles","nameLocation":"12082:5:28","nodeType":"VariableDeclaration","scope":13574,"src":"12035:52:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_calldata_ptr","typeString":"struct ChallengeTypes.InitializationRoleData"},"typeName":{"id":13570,"nodeType":"UserDefinedTypeName","pathNode":{"id":13569,"name":"ChallengeTypes.InitializationRoleData","nameLocations":["12035:14:28","12050:22:28"],"nodeType":"IdentifierPath","referencedDeclaration":12743,"src":"12035:37:28"},"referencedDeclaration":12743,"src":"12035:37:28","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$12743_storage_ptr","typeString":"struct ChallengeTypes.InitializationRoleData"}},"visibility":"internal"}],"src":"11976:115:28"},"returnParameters":{"id":13573,"nodeType":"ParameterList","parameters":[],"src":"12100:0:28"},"scope":13860,"src":"11957:144:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13575,"nodeType":"StructuredDocumentation","src":"12105:108:28","text":"@notice Returns the current implementation version.\n @return Current implementation version string."},"functionSelector":"54fd4d50","id":13580,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"12225:7:28","nodeType":"FunctionDefinition","parameters":{"id":13576,"nodeType":"ParameterList","parameters":[],"src":"12232:2:28"},"returnParameters":{"id":13579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13580,"src":"12258:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13577,"name":"string","nodeType":"ElementaryTypeName","src":"12258:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"12257:15:28"},"scope":13860,"src":"12216:57:28","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":13581,"nodeType":"StructuredDocumentation","src":"12277:103:28","text":"@notice Returns the total number of created challenges.\n @return Number of created challenges."},"functionSelector":"a2f05725","id":13586,"implemented":false,"kind":"function","modifiers":[],"name":"challengeCount","nameLocation":"12392:14:28","nodeType":"FunctionDefinition","parameters":{"id":13582,"nodeType":"ParameterList","parameters":[],"src":"12406:2:28"},"returnParameters":{"id":13585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13584,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13586,"src":"12432:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13583,"name":"uint256","nodeType":"ElementaryTypeName","src":"12432:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12431:9:28"},"scope":13860,"src":"12383:58:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13587,"nodeType":"StructuredDocumentation","src":"12445:118:28","text":"@notice Returns the maximum duration allowed for a challenge.\n @return Maximum challenge duration, in rounds."},"functionSelector":"d2177bdd","id":13592,"implemented":false,"kind":"function","modifiers":[],"name":"maxChallengeDuration","nameLocation":"12575:20:28","nodeType":"FunctionDefinition","parameters":{"id":13588,"nodeType":"ParameterList","parameters":[],"src":"12595:2:28"},"returnParameters":{"id":13591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13590,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13592,"src":"12621:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13589,"name":"uint256","nodeType":"ElementaryTypeName","src":"12621:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12620:9:28"},"scope":13860,"src":"12566:64:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13593,"nodeType":"StructuredDocumentation","src":"12634:121:28","text":"@notice Returns the maximum number of explicit apps allowed in a challenge.\n @return Maximum selected app count."},"functionSelector":"f7806522","id":13598,"implemented":false,"kind":"function","modifiers":[],"name":"maxSelectedApps","nameLocation":"12767:15:28","nodeType":"FunctionDefinition","parameters":{"id":13594,"nodeType":"ParameterList","parameters":[],"src":"12782:2:28"},"returnParameters":{"id":13597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13596,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13598,"src":"12808:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13595,"name":"uint256","nodeType":"ElementaryTypeName","src":"12808:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12807:9:28"},"scope":13860,"src":"12758:59:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13599,"nodeType":"StructuredDocumentation","src":"12821:131:28","text":"@notice Returns the maximum number of participants allowed in a Max Actions challenge.\n @return Maximum participant count."},"functionSelector":"24924bf7","id":13604,"implemented":false,"kind":"function","modifiers":[],"name":"maxParticipants","nameLocation":"12964:15:28","nodeType":"FunctionDefinition","parameters":{"id":13600,"nodeType":"ParameterList","parameters":[],"src":"12979:2:28"},"returnParameters":{"id":13603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13602,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13604,"src":"13005:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13601,"name":"uint256","nodeType":"ElementaryTypeName","src":"13005:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13004:9:28"},"scope":13860,"src":"12955:59:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13605,"nodeType":"StructuredDocumentation","src":"13018:129:28","text":"@notice Returns the minimum B3TR amount allowed for challenge funding.\n @return Minimum stake or sponsored prize amount."},"functionSelector":"fa968eea","id":13610,"implemented":false,"kind":"function","modifiers":[],"name":"minBetAmount","nameLocation":"13159:12:28","nodeType":"FunctionDefinition","parameters":{"id":13606,"nodeType":"ParameterList","parameters":[],"src":"13171:2:28"},"returnParameters":{"id":13609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13608,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13610,"src":"13197:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13607,"name":"uint256","nodeType":"ElementaryTypeName","src":"13197:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13196:9:28"},"scope":13860,"src":"13150:56:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13611,"nodeType":"StructuredDocumentation","src":"13210:200:28","text":"@notice Returns a full challenge view with derived counters and status.\n @param challengeId Challenge identifier.\n @return Challenge data plus derived lifecycle and participation fields."},"functionSelector":"1bdd4b74","id":13619,"implemented":false,"kind":"function","modifiers":[],"name":"getChallenge","nameLocation":"13422:12:28","nodeType":"FunctionDefinition","parameters":{"id":13614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13613,"mutability":"mutable","name":"challengeId","nameLocation":"13443:11:28","nodeType":"VariableDeclaration","scope":13619,"src":"13435:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13612,"name":"uint256","nodeType":"ElementaryTypeName","src":"13435:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13434:21:28"},"returnParameters":{"id":13618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13617,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13619,"src":"13479:35:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengeView_$12870_memory_ptr","typeString":"struct ChallengeTypes.ChallengeView"},"typeName":{"id":13616,"nodeType":"UserDefinedTypeName","pathNode":{"id":13615,"name":"ChallengeTypes.ChallengeView","nameLocations":["13479:14:28","13494:13:28"],"nodeType":"IdentifierPath","referencedDeclaration":12870,"src":"13479:28:28"},"referencedDeclaration":12870,"src":"13479:28:28","typeDescriptions":{"typeIdentifier":"t_struct$_ChallengeView_$12870_storage_ptr","typeString":"struct ChallengeTypes.ChallengeView"}},"visibility":"internal"}],"src":"13478:37:28"},"scope":13860,"src":"13413:103:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13620,"nodeType":"StructuredDocumentation","src":"13520:144:28","text":"@notice Returns the current challenge status.\n @param challengeId Challenge identifier.\n @return Current status for the challenge."},"functionSelector":"832c8bc6","id":13628,"implemented":false,"kind":"function","modifiers":[],"name":"getChallengeStatus","nameLocation":"13676:18:28","nodeType":"FunctionDefinition","parameters":{"id":13623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13622,"mutability":"mutable","name":"challengeId","nameLocation":"13703:11:28","nodeType":"VariableDeclaration","scope":13628,"src":"13695:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13621,"name":"uint256","nodeType":"ElementaryTypeName","src":"13695:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13694:21:28"},"returnParameters":{"id":13627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13626,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13628,"src":"13739:30:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"typeName":{"id":13625,"nodeType":"UserDefinedTypeName","pathNode":{"id":13624,"name":"ChallengeTypes.ChallengeStatus","nameLocations":["13739:14:28","13754:15:28"],"nodeType":"IdentifierPath","referencedDeclaration":12673,"src":"13739:30:28"},"referencedDeclaration":12673,"src":"13739:30:28","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"visibility":"internal"}],"src":"13738:32:28"},"scope":13860,"src":"13667:104:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13629,"nodeType":"StructuredDocumentation","src":"13775:144:28","text":"@notice Returns the current participants of a challenge.\n @param challengeId Challenge identifier.\n @return Participant addresses."},"functionSelector":"023bf958","id":13637,"implemented":false,"kind":"function","modifiers":[],"name":"getChallengeParticipants","nameLocation":"13931:24:28","nodeType":"FunctionDefinition","parameters":{"id":13632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13631,"mutability":"mutable","name":"challengeId","nameLocation":"13964:11:28","nodeType":"VariableDeclaration","scope":13637,"src":"13956:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13630,"name":"uint256","nodeType":"ElementaryTypeName","src":"13956:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13955:21:28"},"returnParameters":{"id":13636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13635,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13637,"src":"14000:16:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13633,"name":"address","nodeType":"ElementaryTypeName","src":"14000:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13634,"nodeType":"ArrayTypeName","src":"14000:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13999:18:28"},"scope":13860,"src":"13922:96:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13638,"nodeType":"StructuredDocumentation","src":"14022:157:28","text":"@notice Returns the accounts currently marked as invited for a challenge.\n @param challengeId Challenge identifier.\n @return Invited addresses."},"functionSelector":"5de5720f","id":13646,"implemented":false,"kind":"function","modifiers":[],"name":"getChallengeInvited","nameLocation":"14191:19:28","nodeType":"FunctionDefinition","parameters":{"id":13641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13640,"mutability":"mutable","name":"challengeId","nameLocation":"14219:11:28","nodeType":"VariableDeclaration","scope":13646,"src":"14211:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13639,"name":"uint256","nodeType":"ElementaryTypeName","src":"14211:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14210:21:28"},"returnParameters":{"id":13645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13644,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13646,"src":"14255:16:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13642,"name":"address","nodeType":"ElementaryTypeName","src":"14255:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13643,"nodeType":"ArrayTypeName","src":"14255:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"14254:18:28"},"scope":13860,"src":"14182:91:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13647,"nodeType":"StructuredDocumentation","src":"14277:151:28","text":"@notice Returns the accounts that declined a challenge invitation.\n @param challengeId Challenge identifier.\n @return Declined addresses."},"functionSelector":"cf33e76c","id":13655,"implemented":false,"kind":"function","modifiers":[],"name":"getChallengeDeclined","nameLocation":"14440:20:28","nodeType":"FunctionDefinition","parameters":{"id":13650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13649,"mutability":"mutable","name":"challengeId","nameLocation":"14469:11:28","nodeType":"VariableDeclaration","scope":13655,"src":"14461:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13648,"name":"uint256","nodeType":"ElementaryTypeName","src":"14461:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14460:21:28"},"returnParameters":{"id":13654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13653,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13655,"src":"14505:16:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13651,"name":"address","nodeType":"ElementaryTypeName","src":"14505:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13652,"nodeType":"ArrayTypeName","src":"14505:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"14504:18:28"},"scope":13860,"src":"14431:92:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13656,"nodeType":"StructuredDocumentation","src":"14527:164:28","text":"@notice Returns the explicit app allowlist for a challenge.\n @param challengeId Challenge identifier.\n @return Explicit app ids used by the challenge."},"functionSelector":"2b5adc1e","id":13664,"implemented":false,"kind":"function","modifiers":[],"name":"getChallengeSelectedApps","nameLocation":"14703:24:28","nodeType":"FunctionDefinition","parameters":{"id":13659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13658,"mutability":"mutable","name":"challengeId","nameLocation":"14736:11:28","nodeType":"VariableDeclaration","scope":13664,"src":"14728:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13657,"name":"uint256","nodeType":"ElementaryTypeName","src":"14728:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14727:21:28"},"returnParameters":{"id":13663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13664,"src":"14772:16:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":13660,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14772:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":13661,"nodeType":"ArrayTypeName","src":"14772:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"14771:18:28"},"scope":13860,"src":"14694:96:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13665,"nodeType":"StructuredDocumentation","src":"14794:200:28","text":"@notice Returns the ordered list of Split Win winners (claim order).\n @param challengeId Challenge identifier.\n @return Winner addresses in claim order; empty for Max Actions challenges."},"functionSelector":"039ddca9","id":13673,"implemented":false,"kind":"function","modifiers":[],"name":"getChallengeWinners","nameLocation":"15006:19:28","nodeType":"FunctionDefinition","parameters":{"id":13668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13667,"mutability":"mutable","name":"challengeId","nameLocation":"15034:11:28","nodeType":"VariableDeclaration","scope":13673,"src":"15026:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13666,"name":"uint256","nodeType":"ElementaryTypeName","src":"15026:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15025:21:28"},"returnParameters":{"id":13672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13673,"src":"15070:16:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13669,"name":"address","nodeType":"ElementaryTypeName","src":"15070:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13670,"nodeType":"ArrayTypeName","src":"15070:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"15069:18:28"},"scope":13860,"src":"14997:91:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13674,"nodeType":"StructuredDocumentation","src":"15092:202:28","text":"@notice Returns the current participant status for an account.\n @param challengeId Challenge identifier.\n @param account Account to query.\n @return Participant status for the account."},"functionSelector":"81363aeb","id":13684,"implemented":false,"kind":"function","modifiers":[],"name":"getParticipantStatus","nameLocation":"15306:20:28","nodeType":"FunctionDefinition","parameters":{"id":13679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13676,"mutability":"mutable","name":"challengeId","nameLocation":"15340:11:28","nodeType":"VariableDeclaration","scope":13684,"src":"15332:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13675,"name":"uint256","nodeType":"ElementaryTypeName","src":"15332:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13678,"mutability":"mutable","name":"account","nameLocation":"15365:7:28","nodeType":"VariableDeclaration","scope":13684,"src":"15357:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13677,"name":"address","nodeType":"ElementaryTypeName","src":"15357:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15326:50:28"},"returnParameters":{"id":13683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13684,"src":"15400:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"},"typeName":{"id":13681,"nodeType":"UserDefinedTypeName","pathNode":{"id":13680,"name":"ChallengeTypes.ParticipantStatus","nameLocations":["15400:14:28","15415:17:28"],"nodeType":"IdentifierPath","referencedDeclaration":12683,"src":"15400:32:28"},"referencedDeclaration":12683,"src":"15400:32:28","typeDescriptions":{"typeIdentifier":"t_enum$_ParticipantStatus_$12683","typeString":"enum ChallengeTypes.ParticipantStatus"}},"visibility":"internal"}],"src":"15399:34:28"},"scope":13860,"src":"15297:137:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13685,"nodeType":"StructuredDocumentation","src":"15438:245:28","text":"@notice Returns whether an account is eligible to join or be re-invited to a challenge.\n @param challengeId Challenge identifier.\n @param account Account to query.\n @return True if the account is marked as invitation-eligible."},"functionSelector":"4a6ff70b","id":13694,"implemented":false,"kind":"function","modifiers":[],"name":"isInvitationEligible","nameLocation":"15695:20:28","nodeType":"FunctionDefinition","parameters":{"id":13690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13687,"mutability":"mutable","name":"challengeId","nameLocation":"15724:11:28","nodeType":"VariableDeclaration","scope":13694,"src":"15716:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13686,"name":"uint256","nodeType":"ElementaryTypeName","src":"15716:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13689,"mutability":"mutable","name":"account","nameLocation":"15745:7:28","nodeType":"VariableDeclaration","scope":13694,"src":"15737:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13688,"name":"address","nodeType":"ElementaryTypeName","src":"15737:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15715:38:28"},"returnParameters":{"id":13693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13694,"src":"15777:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13691,"name":"bool","nodeType":"ElementaryTypeName","src":"15777:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15776:6:28"},"scope":13860,"src":"15686:97:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13695,"nodeType":"StructuredDocumentation","src":"15787:220:28","text":"@notice Returns whether an account has already claimed a Split Win slot.\n @param challengeId Challenge identifier.\n @param account Account to query.\n @return True if the account is in the winners list."},"functionSelector":"87d30164","id":13704,"implemented":false,"kind":"function","modifiers":[],"name":"isSplitWinWinner","nameLocation":"16019:16:28","nodeType":"FunctionDefinition","parameters":{"id":13700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13697,"mutability":"mutable","name":"challengeId","nameLocation":"16044:11:28","nodeType":"VariableDeclaration","scope":13704,"src":"16036:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13696,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13699,"mutability":"mutable","name":"account","nameLocation":"16065:7:28","nodeType":"VariableDeclaration","scope":13704,"src":"16057:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13698,"name":"address","nodeType":"ElementaryTypeName","src":"16057:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16035:38:28"},"returnParameters":{"id":13703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13704,"src":"16097:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13701,"name":"bool","nodeType":"ElementaryTypeName","src":"16097:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16096:6:28"},"scope":13860,"src":"16010:93:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13705,"nodeType":"StructuredDocumentation","src":"16107:230:28","text":"@notice Returns the total counted actions for a participant across the challenge scope.\n @param challengeId Challenge identifier.\n @param participant Participant address to query.\n @return Total counted actions."},"functionSelector":"14cf9077","id":13714,"implemented":false,"kind":"function","modifiers":[],"name":"getParticipantActions","nameLocation":"16349:21:28","nodeType":"FunctionDefinition","parameters":{"id":13710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13707,"mutability":"mutable","name":"challengeId","nameLocation":"16379:11:28","nodeType":"VariableDeclaration","scope":13714,"src":"16371:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13706,"name":"uint256","nodeType":"ElementaryTypeName","src":"16371:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13709,"mutability":"mutable","name":"participant","nameLocation":"16400:11:28","nodeType":"VariableDeclaration","scope":13714,"src":"16392:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13708,"name":"address","nodeType":"ElementaryTypeName","src":"16392:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16370:42:28"},"returnParameters":{"id":13713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13714,"src":"16436:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13711,"name":"uint256","nodeType":"ElementaryTypeName","src":"16436:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16435:9:28"},"scope":13860,"src":"16340:105:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13715,"nodeType":"StructuredDocumentation","src":"16449:211:28","text":"@notice Creates and funds a new challenge.\n @dev If `params.startRound` is zero, the next round is used.\n @param params Challenge creation payload.\n @return Newly created challenge identifier."},"functionSelector":"4caf6d5f","id":13723,"implemented":false,"kind":"function","modifiers":[],"name":"createChallenge","nameLocation":"16672:15:28","nodeType":"FunctionDefinition","parameters":{"id":13719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13718,"mutability":"mutable","name":"params","nameLocation":"16734:6:28","nodeType":"VariableDeclaration","scope":13723,"src":"16688:52:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_calldata_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"},"typeName":{"id":13717,"nodeType":"UserDefinedTypeName","pathNode":{"id":13716,"name":"ChallengeTypes.CreateChallengeParams","nameLocations":["16688:14:28","16703:21:28"],"nodeType":"IdentifierPath","referencedDeclaration":12717,"src":"16688:36:28"},"referencedDeclaration":12717,"src":"16688:36:28","typeDescriptions":{"typeIdentifier":"t_struct$_CreateChallengeParams_$12717_storage_ptr","typeString":"struct ChallengeTypes.CreateChallengeParams"}},"visibility":"internal"}],"src":"16687:54:28"},"returnParameters":{"id":13722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13723,"src":"16760:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13720,"name":"uint256","nodeType":"ElementaryTypeName","src":"16760:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16759:9:28"},"scope":13860,"src":"16663:106:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13724,"nodeType":"StructuredDocumentation","src":"16773:142:28","text":"@notice Adds new invitees to a pending challenge.\n @param challengeId Challenge identifier.\n @param invitees Accounts to invite."},"functionSelector":"262ad80b","id":13732,"implemented":false,"kind":"function","modifiers":[],"name":"addInvites","nameLocation":"16927:10:28","nodeType":"FunctionDefinition","parameters":{"id":13730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13726,"mutability":"mutable","name":"challengeId","nameLocation":"16946:11:28","nodeType":"VariableDeclaration","scope":13732,"src":"16938:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13725,"name":"uint256","nodeType":"ElementaryTypeName","src":"16938:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13729,"mutability":"mutable","name":"invitees","nameLocation":"16978:8:28","nodeType":"VariableDeclaration","scope":13732,"src":"16959:27:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13727,"name":"address","nodeType":"ElementaryTypeName","src":"16959:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13728,"nodeType":"ArrayTypeName","src":"16959:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"16937:50:28"},"returnParameters":{"id":13731,"nodeType":"ParameterList","parameters":[],"src":"16996:0:28"},"scope":13860,"src":"16918:79:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13733,"nodeType":"StructuredDocumentation","src":"17001:85:28","text":"@notice Joins a pending challenge.\n @param challengeId Challenge identifier."},"functionSelector":"e448ee26","id":13738,"implemented":false,"kind":"function","modifiers":[],"name":"joinChallenge","nameLocation":"17098:13:28","nodeType":"FunctionDefinition","parameters":{"id":13736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13735,"mutability":"mutable","name":"challengeId","nameLocation":"17120:11:28","nodeType":"VariableDeclaration","scope":13738,"src":"17112:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13734,"name":"uint256","nodeType":"ElementaryTypeName","src":"17112:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17111:21:28"},"returnParameters":{"id":13737,"nodeType":"ParameterList","parameters":[],"src":"17141:0:28"},"scope":13860,"src":"17089:53:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13739,"nodeType":"StructuredDocumentation","src":"17146:103:28","text":"@notice Leaves a pending challenge before it starts.\n @param challengeId Challenge identifier."},"functionSelector":"67fc8c89","id":13744,"implemented":false,"kind":"function","modifiers":[],"name":"leaveChallenge","nameLocation":"17261:14:28","nodeType":"FunctionDefinition","parameters":{"id":13742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13741,"mutability":"mutable","name":"challengeId","nameLocation":"17284:11:28","nodeType":"VariableDeclaration","scope":13744,"src":"17276:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13740,"name":"uint256","nodeType":"ElementaryTypeName","src":"17276:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17275:21:28"},"returnParameters":{"id":13743,"nodeType":"ParameterList","parameters":[],"src":"17305:0:28"},"scope":13860,"src":"17252:54:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13745,"nodeType":"StructuredDocumentation","src":"17310:91:28","text":"@notice Declines a challenge invitation.\n @param challengeId Challenge identifier."},"functionSelector":"0012462a","id":13750,"implemented":false,"kind":"function","modifiers":[],"name":"declineChallenge","nameLocation":"17413:16:28","nodeType":"FunctionDefinition","parameters":{"id":13748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13747,"mutability":"mutable","name":"challengeId","nameLocation":"17438:11:28","nodeType":"VariableDeclaration","scope":13750,"src":"17430:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13746,"name":"uint256","nodeType":"ElementaryTypeName","src":"17430:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17429:21:28"},"returnParameters":{"id":13749,"nodeType":"ParameterList","parameters":[],"src":"17459:0:28"},"scope":13860,"src":"17404:56:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13751,"nodeType":"StructuredDocumentation","src":"17464:87:28","text":"@notice Cancels a pending challenge.\n @param challengeId Challenge identifier."},"functionSelector":"a41483e3","id":13756,"implemented":false,"kind":"function","modifiers":[],"name":"cancelChallenge","nameLocation":"17563:15:28","nodeType":"FunctionDefinition","parameters":{"id":13754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13753,"mutability":"mutable","name":"challengeId","nameLocation":"17587:11:28","nodeType":"VariableDeclaration","scope":13756,"src":"17579:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13752,"name":"uint256","nodeType":"ElementaryTypeName","src":"17579:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17578:21:28"},"returnParameters":{"id":13755,"nodeType":"ParameterList","parameters":[],"src":"17608:0:28"},"scope":13860,"src":"17554:55:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13757,"nodeType":"StructuredDocumentation","src":"17613:146:28","text":"@notice Resolves the latest status for a pending challenge.\n @param challengeId Challenge identifier.\n @return Status after syncing."},"functionSelector":"b30f0584","id":13765,"implemented":false,"kind":"function","modifiers":[],"name":"syncChallenge","nameLocation":"17771:13:28","nodeType":"FunctionDefinition","parameters":{"id":13760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13759,"mutability":"mutable","name":"challengeId","nameLocation":"17793:11:28","nodeType":"VariableDeclaration","scope":13765,"src":"17785:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13758,"name":"uint256","nodeType":"ElementaryTypeName","src":"17785:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17784:21:28"},"returnParameters":{"id":13764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13765,"src":"17824:30:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"},"typeName":{"id":13762,"nodeType":"UserDefinedTypeName","pathNode":{"id":13761,"name":"ChallengeTypes.ChallengeStatus","nameLocations":["17824:14:28","17839:15:28"],"nodeType":"IdentifierPath","referencedDeclaration":12673,"src":"17824:30:28"},"referencedDeclaration":12673,"src":"17824:30:28","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$12673","typeString":"enum ChallengeTypes.ChallengeStatus"}},"visibility":"internal"}],"src":"17823:32:28"},"scope":13860,"src":"17762:94:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13766,"nodeType":"StructuredDocumentation","src":"17860:124:28","text":"@notice Completes a Max Actions challenge after its end round has passed.\n @param challengeId Challenge identifier."},"functionSelector":"a7817bbc","id":13771,"implemented":false,"kind":"function","modifiers":[],"name":"completeChallenge","nameLocation":"17996:17:28","nodeType":"FunctionDefinition","parameters":{"id":13769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13768,"mutability":"mutable","name":"challengeId","nameLocation":"18022:11:28","nodeType":"VariableDeclaration","scope":13771,"src":"18014:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13767,"name":"uint256","nodeType":"ElementaryTypeName","src":"18014:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18013:21:28"},"returnParameters":{"id":13770,"nodeType":"ParameterList","parameters":[],"src":"18043:0:28"},"scope":13860,"src":"17987:57:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13772,"nodeType":"StructuredDocumentation","src":"18048:173:28","text":"@notice Claims the caller's payout from a completed Max Actions challenge.\n @param challengeId Challenge identifier.\n @return Amount transferred to the caller."},"functionSelector":"87d6e213","id":13779,"implemented":false,"kind":"function","modifiers":[],"name":"claimChallengePayout","nameLocation":"18233:20:28","nodeType":"FunctionDefinition","parameters":{"id":13775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13774,"mutability":"mutable","name":"challengeId","nameLocation":"18262:11:28","nodeType":"VariableDeclaration","scope":13779,"src":"18254:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13773,"name":"uint256","nodeType":"ElementaryTypeName","src":"18254:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18253:21:28"},"returnParameters":{"id":13778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13779,"src":"18293:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13776,"name":"uint256","nodeType":"ElementaryTypeName","src":"18293:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18292:9:28"},"scope":13860,"src":"18224:78:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13780,"nodeType":"StructuredDocumentation","src":"18306:156:28","text":"@notice Claims a Split Win slot during the active window.\n @param challengeId Challenge identifier.\n @return Amount transferred to the caller."},"functionSelector":"a0427700","id":13787,"implemented":false,"kind":"function","modifiers":[],"name":"claimSplitWinPrize","nameLocation":"18474:18:28","nodeType":"FunctionDefinition","parameters":{"id":13783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13782,"mutability":"mutable","name":"challengeId","nameLocation":"18501:11:28","nodeType":"VariableDeclaration","scope":13787,"src":"18493:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13781,"name":"uint256","nodeType":"ElementaryTypeName","src":"18493:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18492:21:28"},"returnParameters":{"id":13786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13787,"src":"18532:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13784,"name":"uint256","nodeType":"ElementaryTypeName","src":"18532:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18531:9:28"},"scope":13860,"src":"18465:76:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13788,"nodeType":"StructuredDocumentation","src":"18545:178:28","text":"@notice Reclaims unclaimed Split Win slots after the end round (creator only).\n @param challengeId Challenge identifier.\n @return Amount transferred to the creator."},"functionSelector":"cb3e0d2b","id":13795,"implemented":false,"kind":"function","modifiers":[],"name":"claimCreatorSplitWinRefund","nameLocation":"18735:26:28","nodeType":"FunctionDefinition","parameters":{"id":13791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13790,"mutability":"mutable","name":"challengeId","nameLocation":"18770:11:28","nodeType":"VariableDeclaration","scope":13795,"src":"18762:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13789,"name":"uint256","nodeType":"ElementaryTypeName","src":"18762:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18761:21:28"},"returnParameters":{"id":13794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13795,"src":"18801:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13792,"name":"uint256","nodeType":"ElementaryTypeName","src":"18801:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18800:9:28"},"scope":13860,"src":"18726:84:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13796,"nodeType":"StructuredDocumentation","src":"18814:172:28","text":"@notice Claims the caller's refund from a cancelled or invalid challenge.\n @param challengeId Challenge identifier.\n @return Amount transferred to the caller."},"functionSelector":"b58bd356","id":13803,"implemented":false,"kind":"function","modifiers":[],"name":"claimChallengeRefund","nameLocation":"18998:20:28","nodeType":"FunctionDefinition","parameters":{"id":13799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13798,"mutability":"mutable","name":"challengeId","nameLocation":"19027:11:28","nodeType":"VariableDeclaration","scope":13803,"src":"19019:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13797,"name":"uint256","nodeType":"ElementaryTypeName","src":"19019:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19018:21:28"},"returnParameters":{"id":13802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13803,"src":"19058:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13800,"name":"uint256","nodeType":"ElementaryTypeName","src":"19058:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19057:9:28"},"scope":13860,"src":"18989:78:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13804,"nodeType":"StructuredDocumentation","src":"19071:234:28","text":"@notice Withdraws B3TR from the contract.\n @dev Emergency admin function that can drain any B3TR currently held by the contract.\n @param to Recipient of the withdrawn B3TR.\n @param amount Amount of B3TR to withdraw."},"functionSelector":"f3fef3a3","id":13811,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"19317:8:28","nodeType":"FunctionDefinition","parameters":{"id":13809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13806,"mutability":"mutable","name":"to","nameLocation":"19334:2:28","nodeType":"VariableDeclaration","scope":13811,"src":"19326:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13805,"name":"address","nodeType":"ElementaryTypeName","src":"19326:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13808,"mutability":"mutable","name":"amount","nameLocation":"19346:6:28","nodeType":"VariableDeclaration","scope":13811,"src":"19338:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13807,"name":"uint256","nodeType":"ElementaryTypeName","src":"19338:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19325:28:28"},"returnParameters":{"id":13810,"nodeType":"ParameterList","parameters":[],"src":"19362:0:28"},"scope":13860,"src":"19308:55:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13812,"nodeType":"StructuredDocumentation","src":"19367:91:28","text":"@notice Updates the B3TR token address.\n @param newAddress New B3TR token address."},"functionSelector":"47b0b33e","id":13817,"implemented":false,"kind":"function","modifiers":[],"name":"setB3TRAddress","nameLocation":"19470:14:28","nodeType":"FunctionDefinition","parameters":{"id":13815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13814,"mutability":"mutable","name":"newAddress","nameLocation":"19493:10:28","nodeType":"VariableDeclaration","scope":13817,"src":"19485:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13813,"name":"address","nodeType":"ElementaryTypeName","src":"19485:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19484:20:28"},"returnParameters":{"id":13816,"nodeType":"ParameterList","parameters":[],"src":"19513:0:28"},"scope":13860,"src":"19461:53:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13818,"nodeType":"StructuredDocumentation","src":"19518:103:28","text":"@notice Updates the VeBetterPassport address.\n @param newAddress New VeBetterPassport address."},"functionSelector":"3800ff4d","id":13823,"implemented":false,"kind":"function","modifiers":[],"name":"setVeBetterPassportAddress","nameLocation":"19633:26:28","nodeType":"FunctionDefinition","parameters":{"id":13821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13820,"mutability":"mutable","name":"newAddress","nameLocation":"19668:10:28","nodeType":"VariableDeclaration","scope":13823,"src":"19660:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13819,"name":"address","nodeType":"ElementaryTypeName","src":"19660:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19659:20:28"},"returnParameters":{"id":13822,"nodeType":"ParameterList","parameters":[],"src":"19688:0:28"},"scope":13860,"src":"19624:65:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13824,"nodeType":"StructuredDocumentation","src":"19693:123:28","text":"@notice Updates the XAllocationVoting governor address.\n @param newAddress New XAllocationVoting governor address."},"functionSelector":"3bb18a76","id":13829,"implemented":false,"kind":"function","modifiers":[],"name":"setXAllocationVotingAddress","nameLocation":"19828:27:28","nodeType":"FunctionDefinition","parameters":{"id":13827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13826,"mutability":"mutable","name":"newAddress","nameLocation":"19864:10:28","nodeType":"VariableDeclaration","scope":13829,"src":"19856:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13825,"name":"address","nodeType":"ElementaryTypeName","src":"19856:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19855:20:28"},"returnParameters":{"id":13828,"nodeType":"ParameterList","parameters":[],"src":"19884:0:28"},"scope":13860,"src":"19819:66:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13830,"nodeType":"StructuredDocumentation","src":"19889:109:28","text":"@notice Updates the X2EarnApps registry address.\n @param newAddress New X2EarnApps registry address."},"functionSelector":"c048f6c9","id":13835,"implemented":false,"kind":"function","modifiers":[],"name":"setX2EarnAppsAddress","nameLocation":"20010:20:28","nodeType":"FunctionDefinition","parameters":{"id":13833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13832,"mutability":"mutable","name":"newAddress","nameLocation":"20039:10:28","nodeType":"VariableDeclaration","scope":13835,"src":"20031:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13831,"name":"address","nodeType":"ElementaryTypeName","src":"20031:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20030:20:28"},"returnParameters":{"id":13834,"nodeType":"ParameterList","parameters":[],"src":"20059:0:28"},"scope":13860,"src":"20001:59:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13836,"nodeType":"StructuredDocumentation","src":"20064:123:28","text":"@notice Updates the maximum duration allowed for new challenges.\n @param newValue New maximum duration, in rounds."},"functionSelector":"a934718c","id":13841,"implemented":false,"kind":"function","modifiers":[],"name":"setMaxChallengeDuration","nameLocation":"20199:23:28","nodeType":"FunctionDefinition","parameters":{"id":13839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13838,"mutability":"mutable","name":"newValue","nameLocation":"20231:8:28","nodeType":"VariableDeclaration","scope":13841,"src":"20223:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13837,"name":"uint256","nodeType":"ElementaryTypeName","src":"20223:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20222:18:28"},"returnParameters":{"id":13840,"nodeType":"ParameterList","parameters":[],"src":"20249:0:28"},"scope":13860,"src":"20190:60:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13842,"nodeType":"StructuredDocumentation","src":"20254:137:28","text":"@notice Updates the maximum number of explicit apps allowed for new challenges.\n @param newValue New maximum selected app count."},"functionSelector":"21c688fa","id":13847,"implemented":false,"kind":"function","modifiers":[],"name":"setMaxSelectedApps","nameLocation":"20403:18:28","nodeType":"FunctionDefinition","parameters":{"id":13845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13844,"mutability":"mutable","name":"newValue","nameLocation":"20430:8:28","nodeType":"VariableDeclaration","scope":13847,"src":"20422:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13843,"name":"uint256","nodeType":"ElementaryTypeName","src":"20422:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20421:18:28"},"returnParameters":{"id":13846,"nodeType":"ParameterList","parameters":[],"src":"20448:0:28"},"scope":13860,"src":"20394:55:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13848,"nodeType":"StructuredDocumentation","src":"20453:147:28","text":"@notice Updates the maximum number of participants allowed for new Max Actions challenges.\n @param newValue New maximum participant count."},"functionSelector":"2bf7299b","id":13853,"implemented":false,"kind":"function","modifiers":[],"name":"setMaxParticipants","nameLocation":"20612:18:28","nodeType":"FunctionDefinition","parameters":{"id":13851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13850,"mutability":"mutable","name":"newValue","nameLocation":"20639:8:28","nodeType":"VariableDeclaration","scope":13853,"src":"20631:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13849,"name":"uint256","nodeType":"ElementaryTypeName","src":"20631:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20630:18:28"},"returnParameters":{"id":13852,"nodeType":"ParameterList","parameters":[],"src":"20657:0:28"},"scope":13860,"src":"20603:55:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13854,"nodeType":"StructuredDocumentation","src":"20662:121:28","text":"@notice Updates the minimum B3TR amount allowed for challenge funding.\n @param newValue New minimum B3TR amount."},"functionSelector":"6c188593","id":13859,"implemented":false,"kind":"function","modifiers":[],"name":"setMinBetAmount","nameLocation":"20795:15:28","nodeType":"FunctionDefinition","parameters":{"id":13857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13856,"mutability":"mutable","name":"newValue","nameLocation":"20819:8:28","nodeType":"VariableDeclaration","scope":13859,"src":"20811:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13855,"name":"uint256","nodeType":"ElementaryTypeName","src":"20811:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20810:18:28"},"returnParameters":{"id":13858,"nodeType":"ParameterList","parameters":[],"src":"20837:0:28"},"scope":13860,"src":"20786:52:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13861,"src":"451:20389:28","usedErrors":[13138,13140,13146,13152,13158,13160,13162,13170,13176,13182,13188,13194,13200,13206,13212,13218,13222,13226,13230,13234,13242,13250,13254,13261,13265,13269,13275,13281,13287,13293,13299,13305,13311,13317,13319,13325,13329,13333,13337,13347,13351,13358],"usedEvents":[13365,13372,13379,13386,13393,13400,13407,13414,13423,13460,13469,13476,13483,13490,13497,13502,13507,13512,13524,13533,13542,13555,13564]}],"src":"32:20809:28"},"id":28},"contracts/interfaces/IGalaxyMember.sol":{"ast":{"absolutePath":"contracts/interfaces/IGalaxyMember.sol","exportedSymbols":{"Checkpoints":[6421],"IGalaxyMember":[14602],"Math":[3094]},"id":14603,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":13862,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"33:23:29"},{"absolutePath":"@openzeppelin/contracts/utils/structs/Checkpoints.sol","file":"@openzeppelin/contracts/utils/structs/Checkpoints.sol","id":13863,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14603,"sourceUnit":6422,"src":"58:63:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IGalaxyMember","contractDependencies":[],"contractKind":"interface","documentation":{"id":13864,"nodeType":"StructuredDocumentation","src":"123:258:29","text":" @title IGalaxyMember\n @notice Interface for the GalaxyMember contract which handles NFT membership and governance functionality\n @dev Implements ERC721 with additional features for level upgrades, node attachments, and governance participation"},"fullyImplemented":false,"id":14602,"linearizedBaseContracts":[14602],"name":"IGalaxyMember","nameLocation":"392:13:29","nodeType":"ContractDefinition","nodes":[{"errorSelector":"6697b232","id":13866,"name":"AccessControlBadConfirmation","nameLocation":"435:28:29","nodeType":"ErrorDefinition","parameters":{"id":13865,"nodeType":"ParameterList","parameters":[],"src":"463:2:29"},"src":"429:37:29"},{"errorSelector":"e2517d3f","id":13872,"name":"AccessControlUnauthorizedAccount","nameLocation":"475:32:29","nodeType":"ErrorDefinition","parameters":{"id":13871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13868,"mutability":"mutable","name":"account","nameLocation":"516:7:29","nodeType":"VariableDeclaration","scope":13872,"src":"508:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13867,"name":"address","nodeType":"ElementaryTypeName","src":"508:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13870,"mutability":"mutable","name":"neededRole","nameLocation":"533:10:29","nodeType":"VariableDeclaration","scope":13872,"src":"525:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"525:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"507:37:29"},"src":"469:76:29"},{"errorSelector":"9996b315","id":13876,"name":"AddressEmptyCode","nameLocation":"554:16:29","nodeType":"ErrorDefinition","parameters":{"id":13875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13874,"mutability":"mutable","name":"target","nameLocation":"579:6:29","nodeType":"VariableDeclaration","scope":13876,"src":"571:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13873,"name":"address","nodeType":"ElementaryTypeName","src":"571:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"570:16:29"},"src":"548:39:29"},{"errorSelector":"4c9c8ce3","id":13880,"name":"ERC1967InvalidImplementation","nameLocation":"596:28:29","nodeType":"ErrorDefinition","parameters":{"id":13879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13878,"mutability":"mutable","name":"implementation","nameLocation":"633:14:29","nodeType":"VariableDeclaration","scope":13880,"src":"625:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13877,"name":"address","nodeType":"ElementaryTypeName","src":"625:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"624:24:29"},"src":"590:59:29"},{"errorSelector":"b398979f","id":13882,"name":"ERC1967NonPayable","nameLocation":"658:17:29","nodeType":"ErrorDefinition","parameters":{"id":13881,"nodeType":"ParameterList","parameters":[],"src":"675:2:29"},"src":"652:26:29"},{"errorSelector":"ecd3f81e","id":13888,"name":"ERC5805FutureLookup","nameLocation":"687:19:29","nodeType":"ErrorDefinition","parameters":{"id":13887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13884,"mutability":"mutable","name":"timepoint","nameLocation":"715:9:29","nodeType":"VariableDeclaration","scope":13888,"src":"707:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13883,"name":"uint256","nodeType":"ElementaryTypeName","src":"707:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13886,"mutability":"mutable","name":"clock","nameLocation":"733:5:29","nodeType":"VariableDeclaration","scope":13888,"src":"726:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13885,"name":"uint48","nodeType":"ElementaryTypeName","src":"726:6:29","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"706:33:29"},"src":"681:59:29"},{"errorSelector":"6ff07140","id":13890,"name":"ERC6372InconsistentClock","nameLocation":"749:24:29","nodeType":"ErrorDefinition","parameters":{"id":13889,"nodeType":"ParameterList","parameters":[],"src":"773:2:29"},"src":"743:33:29"},{"errorSelector":"59171fc1","id":13892,"name":"ERC721EnumerableForbiddenBatchMint","nameLocation":"785:34:29","nodeType":"ErrorDefinition","parameters":{"id":13891,"nodeType":"ParameterList","parameters":[],"src":"819:2:29"},"src":"779:43:29"},{"errorSelector":"64283d7b","id":13900,"name":"ERC721IncorrectOwner","nameLocation":"831:20:29","nodeType":"ErrorDefinition","parameters":{"id":13899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13894,"mutability":"mutable","name":"sender","nameLocation":"860:6:29","nodeType":"VariableDeclaration","scope":13900,"src":"852:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13893,"name":"address","nodeType":"ElementaryTypeName","src":"852:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13896,"mutability":"mutable","name":"tokenId","nameLocation":"876:7:29","nodeType":"VariableDeclaration","scope":13900,"src":"868:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13895,"name":"uint256","nodeType":"ElementaryTypeName","src":"868:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13898,"mutability":"mutable","name":"owner","nameLocation":"893:5:29","nodeType":"VariableDeclaration","scope":13900,"src":"885:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13897,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"851:48:29"},"src":"825:75:29"},{"errorSelector":"177e802f","id":13906,"name":"ERC721InsufficientApproval","nameLocation":"909:26:29","nodeType":"ErrorDefinition","parameters":{"id":13905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13902,"mutability":"mutable","name":"operator","nameLocation":"944:8:29","nodeType":"VariableDeclaration","scope":13906,"src":"936:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13901,"name":"address","nodeType":"ElementaryTypeName","src":"936:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13904,"mutability":"mutable","name":"tokenId","nameLocation":"962:7:29","nodeType":"VariableDeclaration","scope":13906,"src":"954:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13903,"name":"uint256","nodeType":"ElementaryTypeName","src":"954:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"935:35:29"},"src":"903:68:29"},{"errorSelector":"a9fbf51f","id":13910,"name":"ERC721InvalidApprover","nameLocation":"980:21:29","nodeType":"ErrorDefinition","parameters":{"id":13909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13908,"mutability":"mutable","name":"approver","nameLocation":"1010:8:29","nodeType":"VariableDeclaration","scope":13910,"src":"1002:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13907,"name":"address","nodeType":"ElementaryTypeName","src":"1002:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1001:18:29"},"src":"974:46:29"},{"errorSelector":"5b08ba18","id":13914,"name":"ERC721InvalidOperator","nameLocation":"1029:21:29","nodeType":"ErrorDefinition","parameters":{"id":13913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13912,"mutability":"mutable","name":"operator","nameLocation":"1059:8:29","nodeType":"VariableDeclaration","scope":13914,"src":"1051:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13911,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1050:18:29"},"src":"1023:46:29"},{"errorSelector":"89c62b64","id":13918,"name":"ERC721InvalidOwner","nameLocation":"1078:18:29","nodeType":"ErrorDefinition","parameters":{"id":13917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13916,"mutability":"mutable","name":"owner","nameLocation":"1105:5:29","nodeType":"VariableDeclaration","scope":13918,"src":"1097:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13915,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1096:15:29"},"src":"1072:40:29"},{"errorSelector":"64a0ae92","id":13922,"name":"ERC721InvalidReceiver","nameLocation":"1121:21:29","nodeType":"ErrorDefinition","parameters":{"id":13921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13920,"mutability":"mutable","name":"receiver","nameLocation":"1151:8:29","nodeType":"VariableDeclaration","scope":13922,"src":"1143:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13919,"name":"address","nodeType":"ElementaryTypeName","src":"1143:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1142:18:29"},"src":"1115:46:29"},{"errorSelector":"73c6ac6e","id":13926,"name":"ERC721InvalidSender","nameLocation":"1170:19:29","nodeType":"ErrorDefinition","parameters":{"id":13925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13924,"mutability":"mutable","name":"sender","nameLocation":"1198:6:29","nodeType":"VariableDeclaration","scope":13926,"src":"1190:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13923,"name":"address","nodeType":"ElementaryTypeName","src":"1190:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1189:16:29"},"src":"1164:42:29"},{"errorSelector":"7e273289","id":13930,"name":"ERC721NonexistentToken","nameLocation":"1215:22:29","nodeType":"ErrorDefinition","parameters":{"id":13929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13928,"mutability":"mutable","name":"tokenId","nameLocation":"1246:7:29","nodeType":"VariableDeclaration","scope":13930,"src":"1238:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1238:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1237:17:29"},"src":"1209:46:29"},{"errorSelector":"a57d13dc","id":13936,"name":"ERC721OutOfBoundsIndex","nameLocation":"1264:22:29","nodeType":"ErrorDefinition","parameters":{"id":13935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13932,"mutability":"mutable","name":"owner","nameLocation":"1295:5:29","nodeType":"VariableDeclaration","scope":13936,"src":"1287:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13931,"name":"address","nodeType":"ElementaryTypeName","src":"1287:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13934,"mutability":"mutable","name":"index","nameLocation":"1310:5:29","nodeType":"VariableDeclaration","scope":13936,"src":"1302:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13933,"name":"uint256","nodeType":"ElementaryTypeName","src":"1302:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1286:30:29"},"src":"1258:59:29"},{"errorSelector":"d93c0665","id":13938,"name":"EnforcedPause","nameLocation":"1326:13:29","nodeType":"ErrorDefinition","parameters":{"id":13937,"nodeType":"ParameterList","parameters":[],"src":"1339:2:29"},"src":"1320:22:29"},{"errorSelector":"8dfc202b","id":13940,"name":"ExpectedPause","nameLocation":"1351:13:29","nodeType":"ErrorDefinition","parameters":{"id":13939,"nodeType":"ParameterList","parameters":[],"src":"1364:2:29"},"src":"1345:22:29"},{"errorSelector":"1425ea42","id":13942,"name":"FailedInnerCall","nameLocation":"1376:15:29","nodeType":"ErrorDefinition","parameters":{"id":13941,"nodeType":"ParameterList","parameters":[],"src":"1391:2:29"},"src":"1370:24:29"},{"errorSelector":"f92ee8a9","id":13944,"name":"InvalidInitialization","nameLocation":"1403:21:29","nodeType":"ErrorDefinition","parameters":{"id":13943,"nodeType":"ParameterList","parameters":[],"src":"1424:2:29"},"src":"1397:30:29"},{"errorSelector":"d7e6bcf8","id":13946,"name":"NotInitializing","nameLocation":"1436:15:29","nodeType":"ErrorDefinition","parameters":{"id":13945,"nodeType":"ParameterList","parameters":[],"src":"1451:2:29"},"src":"1430:24:29"},{"errorSelector":"3ee5aeb5","id":13948,"name":"ReentrancyGuardReentrantCall","nameLocation":"1463:28:29","nodeType":"ErrorDefinition","parameters":{"id":13947,"nodeType":"ParameterList","parameters":[],"src":"1491:2:29"},"src":"1457:37:29"},{"errorSelector":"e07c8dba","id":13950,"name":"UUPSUnauthorizedCallContext","nameLocation":"1503:27:29","nodeType":"ErrorDefinition","parameters":{"id":13949,"nodeType":"ParameterList","parameters":[],"src":"1530:2:29"},"src":"1497:36:29"},{"errorSelector":"aa1d49a4","id":13954,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"1542:28:29","nodeType":"ErrorDefinition","parameters":{"id":13953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13952,"mutability":"mutable","name":"slot","nameLocation":"1579:4:29","nodeType":"VariableDeclaration","scope":13954,"src":"1571:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13951,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1571:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1570:14:29"},"src":"1536:49:29"},{"anonymous":false,"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":13962,"name":"Approval","nameLocation":"1607:8:29","nodeType":"EventDefinition","parameters":{"id":13961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13956,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1632:5:29","nodeType":"VariableDeclaration","scope":13962,"src":"1616:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13955,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13958,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"1655:8:29","nodeType":"VariableDeclaration","scope":13962,"src":"1639:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13957,"name":"address","nodeType":"ElementaryTypeName","src":"1639:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13960,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"1681:7:29","nodeType":"VariableDeclaration","scope":13962,"src":"1665:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13959,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1615:74:29"},"src":"1601:89:29"},{"anonymous":false,"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":13970,"name":"ApprovalForAll","nameLocation":"1699:14:29","nodeType":"EventDefinition","parameters":{"id":13969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13964,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1730:5:29","nodeType":"VariableDeclaration","scope":13970,"src":"1714:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13963,"name":"address","nodeType":"ElementaryTypeName","src":"1714:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13966,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1753:8:29","nodeType":"VariableDeclaration","scope":13970,"src":"1737:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13965,"name":"address","nodeType":"ElementaryTypeName","src":"1737:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13968,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"1768:8:29","nodeType":"VariableDeclaration","scope":13970,"src":"1763:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13967,"name":"bool","nodeType":"ElementaryTypeName","src":"1763:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1713:64:29"},"src":"1693:85:29"},{"anonymous":false,"eventSelector":"0f2521083e08ca3f37d49583abc9580665e796ebb1f7b803f30e3651275bf870","id":13975,"name":"B3TRtoUpgradeToLevelUpdated","nameLocation":"1787:27:29","nodeType":"EventDefinition","parameters":{"id":13974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13973,"indexed":false,"mutability":"mutable","name":"b3trToUpgradeToLevel","nameLocation":"1825:20:29","nodeType":"VariableDeclaration","scope":13975,"src":"1815:30:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13971,"name":"uint256","nodeType":"ElementaryTypeName","src":"1815:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13972,"nodeType":"ArrayTypeName","src":"1815:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1814:32:29"},"src":"1781:66:29"},{"anonymous":false,"eventSelector":"95ebd3ff3915ee96ee38c1e67a23d1e1adcb9b82fb8a930067dcee36b72a8270","id":13981,"name":"B3trGovernorAddressUpdated","nameLocation":"1856:26:29","nodeType":"EventDefinition","parameters":{"id":13980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13977,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"1899:10:29","nodeType":"VariableDeclaration","scope":13981,"src":"1883:26:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13976,"name":"address","nodeType":"ElementaryTypeName","src":"1883:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13979,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"1927:10:29","nodeType":"VariableDeclaration","scope":13981,"src":"1911:26:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13978,"name":"address","nodeType":"ElementaryTypeName","src":"1911:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1882:56:29"},"src":"1850:89:29"},{"anonymous":false,"eventSelector":"309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1","id":13987,"name":"BaseURIUpdated","nameLocation":"1948:14:29","nodeType":"EventDefinition","parameters":{"id":13986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13983,"indexed":true,"mutability":"mutable","name":"newBaseURI","nameLocation":"1978:10:29","nodeType":"VariableDeclaration","scope":13987,"src":"1963:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13982,"name":"string","nodeType":"ElementaryTypeName","src":"1963:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13985,"indexed":true,"mutability":"mutable","name":"oldBaseURI","nameLocation":"2005:10:29","nodeType":"VariableDeclaration","scope":13987,"src":"1990:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13984,"name":"string","nodeType":"ElementaryTypeName","src":"1990:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1962:54:29"},"src":"1942:75:29"},{"anonymous":false,"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":13991,"name":"Initialized","nameLocation":"2026:11:29","nodeType":"EventDefinition","parameters":{"id":13990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13989,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2045:7:29","nodeType":"VariableDeclaration","scope":13991,"src":"2038:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13988,"name":"uint64","nodeType":"ElementaryTypeName","src":"2038:6:29","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2037:16:29"},"src":"2020:34:29"},{"anonymous":false,"eventSelector":"53e438896671f1a18a4e583cceb4f0c901de52ef22ad122ea8c7f1f5b2de7450","id":13997,"name":"MaxLevelUpdated","nameLocation":"2063:15:29","nodeType":"EventDefinition","parameters":{"id":13996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13993,"indexed":false,"mutability":"mutable","name":"oldLevel","nameLocation":"2087:8:29","nodeType":"VariableDeclaration","scope":13997,"src":"2079:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13992,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13995,"indexed":false,"mutability":"mutable","name":"newLevel","nameLocation":"2105:8:29","nodeType":"VariableDeclaration","scope":13997,"src":"2097:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13994,"name":"uint256","nodeType":"ElementaryTypeName","src":"2097:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2078:36:29"},"src":"2057:58:29"},{"anonymous":false,"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","id":14001,"name":"Paused","nameLocation":"2124:6:29","nodeType":"EventDefinition","parameters":{"id":14000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13999,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"2139:7:29","nodeType":"VariableDeclaration","scope":14001,"src":"2131:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13998,"name":"address","nodeType":"ElementaryTypeName","src":"2131:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2130:17:29"},"src":"2118:30:29"},{"anonymous":false,"eventSelector":"5021318db3b191bc0f54787c8649fc31d3ea3da887601b922b2f347ff33b7cbe","id":14005,"name":"PublicMintingPaused","nameLocation":"2157:19:29","nodeType":"EventDefinition","parameters":{"id":14004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14003,"indexed":false,"mutability":"mutable","name":"isPaused","nameLocation":"2182:8:29","nodeType":"VariableDeclaration","scope":14005,"src":"2177:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14002,"name":"bool","nodeType":"ElementaryTypeName","src":"2177:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2176:15:29"},"src":"2151:41:29"},{"anonymous":false,"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":14013,"name":"RoleAdminChanged","nameLocation":"2201:16:29","nodeType":"EventDefinition","parameters":{"id":14012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14007,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"2234:4:29","nodeType":"VariableDeclaration","scope":14013,"src":"2218:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2218:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14009,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"2256:17:29","nodeType":"VariableDeclaration","scope":14013,"src":"2240:33:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14008,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2240:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14011,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"2291:12:29","nodeType":"VariableDeclaration","scope":14013,"src":"2275:28:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14010,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2275:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2217:87:29"},"src":"2195:110:29"},{"anonymous":false,"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":14021,"name":"RoleGranted","nameLocation":"2314:11:29","nodeType":"EventDefinition","parameters":{"id":14020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14015,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"2342:4:29","nodeType":"VariableDeclaration","scope":14021,"src":"2326:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14014,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2326:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14017,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"2364:7:29","nodeType":"VariableDeclaration","scope":14021,"src":"2348:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14016,"name":"address","nodeType":"ElementaryTypeName","src":"2348:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14019,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"2389:6:29","nodeType":"VariableDeclaration","scope":14021,"src":"2373:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14018,"name":"address","nodeType":"ElementaryTypeName","src":"2373:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2325:71:29"},"src":"2308:89:29"},{"anonymous":false,"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":14029,"name":"RoleRevoked","nameLocation":"2406:11:29","nodeType":"EventDefinition","parameters":{"id":14028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14023,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"2434:4:29","nodeType":"VariableDeclaration","scope":14029,"src":"2418:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14022,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2418:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14025,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"2456:7:29","nodeType":"VariableDeclaration","scope":14029,"src":"2440:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14024,"name":"address","nodeType":"ElementaryTypeName","src":"2440:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14027,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"2481:6:29","nodeType":"VariableDeclaration","scope":14029,"src":"2465:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14026,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2417:71:29"},"src":"2400:89:29"},{"anonymous":false,"eventSelector":"d3818de8151087adedb4219255d574b8fd0658bfacde78fee2b4691fbd99a8fc","id":14035,"name":"Selected","nameLocation":"2498:8:29","nodeType":"EventDefinition","parameters":{"id":14034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14031,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"2523:5:29","nodeType":"VariableDeclaration","scope":14035,"src":"2507:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14030,"name":"address","nodeType":"ElementaryTypeName","src":"2507:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14033,"indexed":false,"mutability":"mutable","name":"tokenId","nameLocation":"2538:7:29","nodeType":"VariableDeclaration","scope":14035,"src":"2530:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14032,"name":"uint256","nodeType":"ElementaryTypeName","src":"2530:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2506:40:29"},"src":"2492:55:29"},{"anonymous":false,"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":14043,"name":"Transfer","nameLocation":"2556:8:29","nodeType":"EventDefinition","parameters":{"id":14042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14037,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2581:4:29","nodeType":"VariableDeclaration","scope":14043,"src":"2565:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14036,"name":"address","nodeType":"ElementaryTypeName","src":"2565:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14039,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"2603:2:29","nodeType":"VariableDeclaration","scope":14043,"src":"2587:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14038,"name":"address","nodeType":"ElementaryTypeName","src":"2587:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14041,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"2623:7:29","nodeType":"VariableDeclaration","scope":14043,"src":"2607:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14040,"name":"uint256","nodeType":"ElementaryTypeName","src":"2607:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2564:67:29"},"src":"2550:82:29"},{"anonymous":false,"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","id":14047,"name":"Unpaused","nameLocation":"2641:8:29","nodeType":"EventDefinition","parameters":{"id":14046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14045,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"2658:7:29","nodeType":"VariableDeclaration","scope":14047,"src":"2650:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14044,"name":"address","nodeType":"ElementaryTypeName","src":"2650:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2649:17:29"},"src":"2635:32:29"},{"anonymous":false,"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":14051,"name":"Upgraded","nameLocation":"2676:8:29","nodeType":"EventDefinition","parameters":{"id":14050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14049,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"2701:14:29","nodeType":"VariableDeclaration","scope":14051,"src":"2685:30:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14048,"name":"address","nodeType":"ElementaryTypeName","src":"2685:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2684:32:29"},"src":"2670:47:29"},{"anonymous":false,"eventSelector":"936f056112badb39ff4b5bf0d185576c15ed35d94502e37e8b6d7bfbec428854","id":14059,"name":"Upgraded","nameLocation":"2726:8:29","nodeType":"EventDefinition","parameters":{"id":14058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14053,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"2751:7:29","nodeType":"VariableDeclaration","scope":14059,"src":"2735:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14052,"name":"uint256","nodeType":"ElementaryTypeName","src":"2735:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14055,"indexed":false,"mutability":"mutable","name":"oldLevel","nameLocation":"2768:8:29","nodeType":"VariableDeclaration","scope":14059,"src":"2760:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14054,"name":"uint256","nodeType":"ElementaryTypeName","src":"2760:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14057,"indexed":false,"mutability":"mutable","name":"newLevel","nameLocation":"2786:8:29","nodeType":"VariableDeclaration","scope":14059,"src":"2778:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14056,"name":"uint256","nodeType":"ElementaryTypeName","src":"2778:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2734:61:29"},"src":"2720:76:29"},{"anonymous":false,"eventSelector":"d9365634b1542359685e4d736b69f8a87476421f69da0f3f8054668ab19af129","id":14065,"name":"XAllocationsGovernorAddressUpdated","nameLocation":"2805:34:29","nodeType":"EventDefinition","parameters":{"id":14064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14061,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"2856:10:29","nodeType":"VariableDeclaration","scope":14065,"src":"2840:26:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14060,"name":"address","nodeType":"ElementaryTypeName","src":"2840:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14063,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"2884:10:29","nodeType":"VariableDeclaration","scope":14065,"src":"2868:26:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14062,"name":"address","nodeType":"ElementaryTypeName","src":"2868:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2839:56:29"},"src":"2799:97:29"},{"anonymous":false,"eventSelector":"d391f0bbb61c5821a44e72761001d99f230b0697a92ed3c1f65189377455d708","id":14071,"name":"NodeDetached","nameLocation":"2905:12:29","nodeType":"EventDefinition","parameters":{"id":14070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14067,"indexed":true,"mutability":"mutable","name":"nodeTokenId","nameLocation":"2934:11:29","nodeType":"VariableDeclaration","scope":14071,"src":"2918:27:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14066,"name":"uint256","nodeType":"ElementaryTypeName","src":"2918:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14069,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"2963:7:29","nodeType":"VariableDeclaration","scope":14071,"src":"2947:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14068,"name":"uint256","nodeType":"ElementaryTypeName","src":"2947:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2917:54:29"},"src":"2899:73:29"},{"anonymous":false,"eventSelector":"b7dd3be96487dcdf850b8109db67313befd6e4022f3faec019619391cd95913f","id":14077,"name":"NodeAttached","nameLocation":"2981:12:29","nodeType":"EventDefinition","parameters":{"id":14076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14073,"indexed":true,"mutability":"mutable","name":"nodeTokenId","nameLocation":"3010:11:29","nodeType":"VariableDeclaration","scope":14077,"src":"2994:27:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14072,"name":"uint256","nodeType":"ElementaryTypeName","src":"2994:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14075,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3039:7:29","nodeType":"VariableDeclaration","scope":14077,"src":"3023:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14074,"name":"uint256","nodeType":"ElementaryTypeName","src":"3023:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2993:54:29"},"src":"2975:73:29"},{"anonymous":false,"eventSelector":"dd061ffadd9dff78128b6af54abbf2b83cbc680b9f75a2c08294800146baace7","id":14085,"name":"LevelWhenAttached","nameLocation":"3057:17:29","nodeType":"EventDefinition","parameters":{"id":14084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14079,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3091:7:29","nodeType":"VariableDeclaration","scope":14085,"src":"3075:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14078,"name":"uint256","nodeType":"ElementaryTypeName","src":"3075:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14081,"indexed":true,"mutability":"mutable","name":"nodeTokenId","nameLocation":"3116:11:29","nodeType":"VariableDeclaration","scope":14085,"src":"3100:27:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14080,"name":"uint256","nodeType":"ElementaryTypeName","src":"3100:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14083,"indexed":false,"mutability":"mutable","name":"level","nameLocation":"3137:5:29","nodeType":"VariableDeclaration","scope":14085,"src":"3129:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14082,"name":"uint256","nodeType":"ElementaryTypeName","src":"3129:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3074:69:29"},"src":"3051:93:29"},{"anonymous":false,"eventSelector":"48129b4a18f9ca1400152e3f45a48cf58787e9948a48294199c83a66517b8590","id":14093,"name":"LevelWhenDetached","nameLocation":"3153:17:29","nodeType":"EventDefinition","parameters":{"id":14092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14087,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3187:7:29","nodeType":"VariableDeclaration","scope":14093,"src":"3171:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14086,"name":"uint256","nodeType":"ElementaryTypeName","src":"3171:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14089,"indexed":true,"mutability":"mutable","name":"nodeTokenId","nameLocation":"3212:11:29","nodeType":"VariableDeclaration","scope":14093,"src":"3196:27:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14088,"name":"uint256","nodeType":"ElementaryTypeName","src":"3196:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14091,"indexed":false,"mutability":"mutable","name":"level","nameLocation":"3233:5:29","nodeType":"VariableDeclaration","scope":14093,"src":"3225:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14090,"name":"uint256","nodeType":"ElementaryTypeName","src":"3225:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3170:69:29"},"src":"3147:93:29"},{"anonymous":false,"eventSelector":"b6903cd12b733685254149291b10013cb82ad4c0da7775f32176e9f9b3334639","id":14099,"name":"StargateNFTAddressUpdated","nameLocation":"3249:25:29","nodeType":"EventDefinition","parameters":{"id":14098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14095,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"3291:10:29","nodeType":"VariableDeclaration","scope":14099,"src":"3275:26:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14094,"name":"address","nodeType":"ElementaryTypeName","src":"3275:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14097,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"3319:10:29","nodeType":"VariableDeclaration","scope":14099,"src":"3303:26:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14096,"name":"address","nodeType":"ElementaryTypeName","src":"3303:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3274:56:29"},"src":"3243:88:29"},{"documentation":{"id":14100,"nodeType":"StructuredDocumentation","src":"3335:69:29","text":"@notice Returns the role identifier for contracts address manager"},"functionSelector":"952f2133","id":14105,"implemented":false,"kind":"function","modifiers":[],"name":"CONTRACTS_ADDRESS_MANAGER_ROLE","nameLocation":"3416:30:29","nodeType":"FunctionDefinition","parameters":{"id":14101,"nodeType":"ParameterList","parameters":[],"src":"3446:2:29"},"returnParameters":{"id":14104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14103,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14105,"src":"3472:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14102,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3472:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3471:9:29"},"scope":14602,"src":"3407:74:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14106,"nodeType":"StructuredDocumentation","src":"3485:57:29","text":"@notice Returns the role identifier for default admin"},"functionSelector":"a217fddf","id":14111,"implemented":false,"kind":"function","modifiers":[],"name":"DEFAULT_ADMIN_ROLE","nameLocation":"3554:18:29","nodeType":"FunctionDefinition","parameters":{"id":14107,"nodeType":"ParameterList","parameters":[],"src":"3572:2:29"},"returnParameters":{"id":14110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14111,"src":"3598:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14108,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3598:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3597:9:29"},"scope":14602,"src":"3545:62:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14112,"nodeType":"StructuredDocumentation","src":"3611:60:29","text":"@notice Returns the maximum level achievable for a token"},"functionSelector":"a49062d4","id":14117,"implemented":false,"kind":"function","modifiers":[],"name":"MAX_LEVEL","nameLocation":"3683:9:29","nodeType":"FunctionDefinition","parameters":{"id":14113,"nodeType":"ParameterList","parameters":[],"src":"3692:2:29"},"returnParameters":{"id":14116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14117,"src":"3718:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14114,"name":"uint256","nodeType":"ElementaryTypeName","src":"3718:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3717:9:29"},"scope":14602,"src":"3674:53:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14118,"nodeType":"StructuredDocumentation","src":"3731:50:29","text":"@notice Returns the role identifier for minter"},"functionSelector":"d5391393","id":14123,"implemented":false,"kind":"function","modifiers":[],"name":"MINTER_ROLE","nameLocation":"3793:11:29","nodeType":"FunctionDefinition","parameters":{"id":14119,"nodeType":"ParameterList","parameters":[],"src":"3804:2:29"},"returnParameters":{"id":14122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14123,"src":"3830:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14120,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3830:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3829:9:29"},"scope":14602,"src":"3784:55:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14124,"nodeType":"StructuredDocumentation","src":"3843:57:29","text":"@notice Returns the role identifier for nodes manager"},"functionSelector":"3d6dbee8","id":14129,"implemented":false,"kind":"function","modifiers":[],"name":"NODES_MANAGER_ROLE","nameLocation":"3912:18:29","nodeType":"FunctionDefinition","parameters":{"id":14125,"nodeType":"ParameterList","parameters":[],"src":"3930:2:29"},"returnParameters":{"id":14128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14129,"src":"3956:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14126,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3956:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3955:9:29"},"scope":14602,"src":"3903:62:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14130,"nodeType":"StructuredDocumentation","src":"3969:50:29","text":"@notice Returns the role identifier for pauser"},"functionSelector":"e63ab1e9","id":14135,"implemented":false,"kind":"function","modifiers":[],"name":"PAUSER_ROLE","nameLocation":"4031:11:29","nodeType":"FunctionDefinition","parameters":{"id":14131,"nodeType":"ParameterList","parameters":[],"src":"4042:2:29"},"returnParameters":{"id":14134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14133,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14135,"src":"4068:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14132,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4068:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4067:9:29"},"scope":14602,"src":"4022:55:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14136,"nodeType":"StructuredDocumentation","src":"4081:52:29","text":"@notice Returns the role identifier for upgrader"},"functionSelector":"f72c0d8b","id":14141,"implemented":false,"kind":"function","modifiers":[],"name":"UPGRADER_ROLE","nameLocation":"4145:13:29","nodeType":"FunctionDefinition","parameters":{"id":14137,"nodeType":"ParameterList","parameters":[],"src":"4158:2:29"},"returnParameters":{"id":14140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14141,"src":"4184:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4184:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4183:9:29"},"scope":14602,"src":"4136:57:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14142,"nodeType":"StructuredDocumentation","src":"4197:48:29","text":"@notice Returns the interface version string"},"functionSelector":"ad3cb1cc","id":14147,"implemented":false,"kind":"function","modifiers":[],"name":"UPGRADE_INTERFACE_VERSION","nameLocation":"4257:25:29","nodeType":"FunctionDefinition","parameters":{"id":14143,"nodeType":"ParameterList","parameters":[],"src":"4282:2:29"},"returnParameters":{"id":14146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14147,"src":"4308:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14144,"name":"string","nodeType":"ElementaryTypeName","src":"4308:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4307:15:29"},"scope":14602,"src":"4248:75:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14148,"nodeType":"StructuredDocumentation","src":"4327:151:29","text":"@notice Approves an address to transfer a specific token\n @param to Address to be approved\n @param tokenId ID of the token to be approved"},"functionSelector":"095ea7b3","id":14155,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4490:7:29","nodeType":"FunctionDefinition","parameters":{"id":14153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14150,"mutability":"mutable","name":"to","nameLocation":"4506:2:29","nodeType":"VariableDeclaration","scope":14155,"src":"4498:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14149,"name":"address","nodeType":"ElementaryTypeName","src":"4498:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14152,"mutability":"mutable","name":"tokenId","nameLocation":"4518:7:29","nodeType":"VariableDeclaration","scope":14155,"src":"4510:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14151,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4497:29:29"},"returnParameters":{"id":14154,"nodeType":"ParameterList","parameters":[],"src":"4535:0:29"},"scope":14602,"src":"4481:55:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14156,"nodeType":"StructuredDocumentation","src":"4540:138:29","text":"@notice Attaches a node to a token\n @param nodeTokenId ID of the node to attach\n @param tokenId ID of the token to attach to"},"functionSelector":"88371110","id":14163,"implemented":false,"kind":"function","modifiers":[],"name":"attachNode","nameLocation":"4690:10:29","nodeType":"FunctionDefinition","parameters":{"id":14161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14158,"mutability":"mutable","name":"nodeTokenId","nameLocation":"4709:11:29","nodeType":"VariableDeclaration","scope":14163,"src":"4701:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14157,"name":"uint256","nodeType":"ElementaryTypeName","src":"4701:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14160,"mutability":"mutable","name":"tokenId","nameLocation":"4730:7:29","nodeType":"VariableDeclaration","scope":14163,"src":"4722:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14159,"name":"uint256","nodeType":"ElementaryTypeName","src":"4722:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4700:38:29"},"returnParameters":{"id":14162,"nodeType":"ParameterList","parameters":[],"src":"4747:0:29"},"scope":14602,"src":"4681:67:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14164,"nodeType":"StructuredDocumentation","src":"4752:51:29","text":"@notice Returns the B3TR token contract address"},"functionSelector":"582a486a","id":14169,"implemented":false,"kind":"function","modifiers":[],"name":"b3tr","nameLocation":"4815:4:29","nodeType":"FunctionDefinition","parameters":{"id":14165,"nodeType":"ParameterList","parameters":[],"src":"4819:2:29"},"returnParameters":{"id":14168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14167,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14169,"src":"4845:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14166,"name":"address","nodeType":"ElementaryTypeName","src":"4845:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4844:9:29"},"scope":14602,"src":"4806:48:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14170,"nodeType":"StructuredDocumentation","src":"4858:54:29","text":"@notice Returns the B3TR governor contract address"},"functionSelector":"7893d736","id":14175,"implemented":false,"kind":"function","modifiers":[],"name":"b3trGovernor","nameLocation":"4924:12:29","nodeType":"FunctionDefinition","parameters":{"id":14171,"nodeType":"ParameterList","parameters":[],"src":"4936:2:29"},"returnParameters":{"id":14174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14173,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14175,"src":"4962:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14172,"name":"address","nodeType":"ElementaryTypeName","src":"4962:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4961:9:29"},"scope":14602,"src":"4915:56:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14176,"nodeType":"StructuredDocumentation","src":"4975:133:29","text":"@notice Returns the number of tokens owned by an address\n @param owner Address to query\n @return Number of tokens owned"},"functionSelector":"70a08231","id":14183,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"5120:9:29","nodeType":"FunctionDefinition","parameters":{"id":14179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14178,"mutability":"mutable","name":"owner","nameLocation":"5138:5:29","nodeType":"VariableDeclaration","scope":14183,"src":"5130:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14177,"name":"address","nodeType":"ElementaryTypeName","src":"5130:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5129:15:29"},"returnParameters":{"id":14182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14183,"src":"5168:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14180,"name":"uint256","nodeType":"ElementaryTypeName","src":"5168:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5167:9:29"},"scope":14602,"src":"5111:66:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14184,"nodeType":"StructuredDocumentation","src":"5181:51:29","text":"@notice Returns the base URI for token metadata"},"functionSelector":"6c0360eb","id":14189,"implemented":false,"kind":"function","modifiers":[],"name":"baseURI","nameLocation":"5244:7:29","nodeType":"FunctionDefinition","parameters":{"id":14185,"nodeType":"ParameterList","parameters":[],"src":"5251:2:29"},"returnParameters":{"id":14188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14187,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14189,"src":"5277:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14186,"name":"string","nodeType":"ElementaryTypeName","src":"5277:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5276:15:29"},"scope":14602,"src":"5235:57:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14190,"nodeType":"StructuredDocumentation","src":"5296:79:29","text":"@notice Burns a specific token\n @param tokenId ID of the token to burn"},"functionSelector":"42966c68","id":14195,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"5387:4:29","nodeType":"FunctionDefinition","parameters":{"id":14193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14192,"mutability":"mutable","name":"tokenId","nameLocation":"5400:7:29","nodeType":"VariableDeclaration","scope":14195,"src":"5392:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14191,"name":"uint256","nodeType":"ElementaryTypeName","src":"5392:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5391:17:29"},"returnParameters":{"id":14194,"nodeType":"ParameterList","parameters":[],"src":"5417:0:29"},"scope":14602,"src":"5378:40:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14196,"nodeType":"StructuredDocumentation","src":"5422:142:29","text":"@notice Detaches a node from a token\n @param nodeTokenId ID of the node to detach\n @param tokenId ID of the token to detach from"},"functionSelector":"4a6565e1","id":14203,"implemented":false,"kind":"function","modifiers":[],"name":"detachNode","nameLocation":"5576:10:29","nodeType":"FunctionDefinition","parameters":{"id":14201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14198,"mutability":"mutable","name":"nodeTokenId","nameLocation":"5595:11:29","nodeType":"VariableDeclaration","scope":14203,"src":"5587:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14197,"name":"uint256","nodeType":"ElementaryTypeName","src":"5587:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14200,"mutability":"mutable","name":"tokenId","nameLocation":"5616:7:29","nodeType":"VariableDeclaration","scope":14203,"src":"5608:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14199,"name":"uint256","nodeType":"ElementaryTypeName","src":"5608:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5586:38:29"},"returnParameters":{"id":14202,"nodeType":"ParameterList","parameters":[],"src":"5633:0:29"},"scope":14602,"src":"5567:67:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14204,"nodeType":"StructuredDocumentation","src":"5638:62:29","text":"@notice Allows eligible addresses to mint a token for free"},"functionSelector":"5b70ea9f","id":14207,"implemented":false,"kind":"function","modifiers":[],"name":"freeMint","nameLocation":"5712:8:29","nodeType":"FunctionDefinition","parameters":{"id":14205,"nodeType":"ParameterList","parameters":[],"src":"5720:2:29"},"returnParameters":{"id":14206,"nodeType":"ParameterList","parameters":[],"src":"5731:0:29"},"scope":14602,"src":"5703:29:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14208,"nodeType":"StructuredDocumentation","src":"5736:143:29","text":"@notice Returns the approved address for a token\n @param tokenId ID of the token to query\n @return Address approved for the token"},"functionSelector":"081812fc","id":14215,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"5891:11:29","nodeType":"FunctionDefinition","parameters":{"id":14211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14210,"mutability":"mutable","name":"tokenId","nameLocation":"5911:7:29","nodeType":"VariableDeclaration","scope":14215,"src":"5903:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14209,"name":"uint256","nodeType":"ElementaryTypeName","src":"5903:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5902:17:29"},"returnParameters":{"id":14214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14215,"src":"5943:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14212,"name":"address","nodeType":"ElementaryTypeName","src":"5943:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5942:9:29"},"scope":14602,"src":"5882:70:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14216,"nodeType":"StructuredDocumentation","src":"5956:141:29","text":"@notice Returns the amount of B3TR donated for a token\n @param tokenId ID of the token to query\n @return Amount of B3TR donated"},"functionSelector":"865c380b","id":14223,"implemented":false,"kind":"function","modifiers":[],"name":"getB3TRdonated","nameLocation":"6109:14:29","nodeType":"FunctionDefinition","parameters":{"id":14219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14218,"mutability":"mutable","name":"tokenId","nameLocation":"6132:7:29","nodeType":"VariableDeclaration","scope":14223,"src":"6124:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14217,"name":"uint256","nodeType":"ElementaryTypeName","src":"6124:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6123:17:29"},"returnParameters":{"id":14222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14223,"src":"6164:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14220,"name":"uint256","nodeType":"ElementaryTypeName","src":"6164:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6163:9:29"},"scope":14602,"src":"6100:73:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14224,"nodeType":"StructuredDocumentation","src":"6177:146:29","text":"@notice Returns the amount of B3TR needed to upgrade a token\n @param tokenId ID of the token to query\n @return Amount of B3TR needed"},"functionSelector":"a51d2e0b","id":14231,"implemented":false,"kind":"function","modifiers":[],"name":"getB3TRtoUpgrade","nameLocation":"6335:16:29","nodeType":"FunctionDefinition","parameters":{"id":14227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14226,"mutability":"mutable","name":"tokenId","nameLocation":"6360:7:29","nodeType":"VariableDeclaration","scope":14231,"src":"6352:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14225,"name":"uint256","nodeType":"ElementaryTypeName","src":"6352:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6351:17:29"},"returnParameters":{"id":14230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14231,"src":"6392:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14228,"name":"uint256","nodeType":"ElementaryTypeName","src":"6392:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6391:9:29"},"scope":14602,"src":"6326:75:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14232,"nodeType":"StructuredDocumentation","src":"6405:144:29","text":"@notice Returns the amount of B3TR needed to upgrade to a specific level\n @param level Target level\n @return Amount of B3TR needed"},"functionSelector":"2b42df38","id":14239,"implemented":false,"kind":"function","modifiers":[],"name":"getB3TRtoUpgradeToLevel","nameLocation":"6561:23:29","nodeType":"FunctionDefinition","parameters":{"id":14235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14234,"mutability":"mutable","name":"level","nameLocation":"6593:5:29","nodeType":"VariableDeclaration","scope":14239,"src":"6585:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14233,"name":"uint256","nodeType":"ElementaryTypeName","src":"6585:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6584:15:29"},"returnParameters":{"id":14238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14237,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14239,"src":"6623:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14236,"name":"uint256","nodeType":"ElementaryTypeName","src":"6623:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6622:9:29"},"scope":14602,"src":"6552:80:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14240,"nodeType":"StructuredDocumentation","src":"6636:139:29","text":"@notice Returns the token ID attached to a node\n @param nodeId ID of the node to query\n @return Token ID attached to the node"},"functionSelector":"51c438d1","id":14247,"implemented":false,"kind":"function","modifiers":[],"name":"getIdAttachedToNode","nameLocation":"6787:19:29","nodeType":"FunctionDefinition","parameters":{"id":14243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14242,"mutability":"mutable","name":"nodeId","nameLocation":"6815:6:29","nodeType":"VariableDeclaration","scope":14247,"src":"6807:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14241,"name":"uint256","nodeType":"ElementaryTypeName","src":"6807:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6806:16:29"},"returnParameters":{"id":14246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14247,"src":"6846:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14244,"name":"uint256","nodeType":"ElementaryTypeName","src":"6846:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6845:9:29"},"scope":14602,"src":"6778:77:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14248,"nodeType":"StructuredDocumentation","src":"6859:183:29","text":"@notice Calculates the level after attaching a node\n @param tokenId ID of the token\n @param nodeTokenId ID of the node to attach\n @return New level after attachment"},"functionSelector":"a1843bd0","id":14257,"implemented":false,"kind":"function","modifiers":[],"name":"getLevelAfterAttachingNode","nameLocation":"7054:26:29","nodeType":"FunctionDefinition","parameters":{"id":14253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14250,"mutability":"mutable","name":"tokenId","nameLocation":"7089:7:29","nodeType":"VariableDeclaration","scope":14257,"src":"7081:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14249,"name":"uint256","nodeType":"ElementaryTypeName","src":"7081:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14252,"mutability":"mutable","name":"nodeTokenId","nameLocation":"7106:11:29","nodeType":"VariableDeclaration","scope":14257,"src":"7098:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14251,"name":"uint256","nodeType":"ElementaryTypeName","src":"7098:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7080:38:29"},"returnParameters":{"id":14256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14257,"src":"7142:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14254,"name":"uint256","nodeType":"ElementaryTypeName","src":"7142:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7141:9:29"},"scope":14602,"src":"7045:106:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14258,"nodeType":"StructuredDocumentation","src":"7155:133:29","text":"@notice Calculates the level after detaching a node\n @param tokenId ID of the token\n @return New level after detachment"},"functionSelector":"cc421d07","id":14265,"implemented":false,"kind":"function","modifiers":[],"name":"getLevelAfterDetachingNode","nameLocation":"7300:26:29","nodeType":"FunctionDefinition","parameters":{"id":14261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14260,"mutability":"mutable","name":"tokenId","nameLocation":"7335:7:29","nodeType":"VariableDeclaration","scope":14265,"src":"7327:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14259,"name":"uint256","nodeType":"ElementaryTypeName","src":"7327:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7326:17:29"},"returnParameters":{"id":14264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14265,"src":"7367:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14262,"name":"uint256","nodeType":"ElementaryTypeName","src":"7367:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7366:9:29"},"scope":14602,"src":"7291:85:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14266,"nodeType":"StructuredDocumentation","src":"7380:135:29","text":"@notice Returns the node ID attached to a token\n @param tokenId ID of the token to query\n @return ID of the attached node"},"functionSelector":"958fc97d","id":14273,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeIdAttached","nameLocation":"7527:17:29","nodeType":"FunctionDefinition","parameters":{"id":14269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14268,"mutability":"mutable","name":"tokenId","nameLocation":"7553:7:29","nodeType":"VariableDeclaration","scope":14273,"src":"7545:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14267,"name":"uint256","nodeType":"ElementaryTypeName","src":"7545:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7544:17:29"},"returnParameters":{"id":14272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14273,"src":"7585:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14270,"name":"uint256","nodeType":"ElementaryTypeName","src":"7585:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7584:9:29"},"scope":14602,"src":"7518:76:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14274,"nodeType":"StructuredDocumentation","src":"7598:115:29","text":"@notice Returns the level of a node\n @param nodeId ID of the node to query\n @return Level of the node"},"functionSelector":"3ff453af","id":14281,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeLevelOf","nameLocation":"7725:14:29","nodeType":"FunctionDefinition","parameters":{"id":14277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14276,"mutability":"mutable","name":"nodeId","nameLocation":"7748:6:29","nodeType":"VariableDeclaration","scope":14281,"src":"7740:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14275,"name":"uint256","nodeType":"ElementaryTypeName","src":"7740:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7739:16:29"},"returnParameters":{"id":14280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14279,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14281,"src":"7779:5:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14278,"name":"uint8","nodeType":"ElementaryTypeName","src":"7779:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"7778:7:29"},"scope":14602,"src":"7716:70:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14282,"nodeType":"StructuredDocumentation","src":"7790:132:29","text":"@notice Returns the free level granted by a node level\n @param nodeLevel Level of the node\n @return Free level granted"},"functionSelector":"e617e49f","id":14289,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeToFreeLevel","nameLocation":"7934:18:29","nodeType":"FunctionDefinition","parameters":{"id":14285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14284,"mutability":"mutable","name":"nodeLevel","nameLocation":"7959:9:29","nodeType":"VariableDeclaration","scope":14289,"src":"7953:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14283,"name":"uint8","nodeType":"ElementaryTypeName","src":"7953:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"7952:17:29"},"returnParameters":{"id":14288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14289,"src":"7993:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14286,"name":"uint256","nodeType":"ElementaryTypeName","src":"7993:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7992:9:29"},"scope":14602,"src":"7925:77:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14290,"nodeType":"StructuredDocumentation","src":"8006:108:29","text":"@notice Returns the admin role for a given role\n @param role Role to query\n @return Admin role"},"functionSelector":"248a9ca3","id":14297,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"8126:12:29","nodeType":"FunctionDefinition","parameters":{"id":14293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14292,"mutability":"mutable","name":"role","nameLocation":"8147:4:29","nodeType":"VariableDeclaration","scope":14297,"src":"8139:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14291,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8139:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8138:14:29"},"returnParameters":{"id":14296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14295,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14297,"src":"8176:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14294,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8176:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8175:9:29"},"scope":14602,"src":"8117:68:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14298,"nodeType":"StructuredDocumentation","src":"8189:122:29","text":"@notice Returns the selected token ID for an owner\n @param owner Address to query\n @return Selected token ID"},"functionSelector":"d206885d","id":14305,"implemented":false,"kind":"function","modifiers":[],"name":"getSelectedTokenId","nameLocation":"8323:18:29","nodeType":"FunctionDefinition","parameters":{"id":14301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14300,"mutability":"mutable","name":"owner","nameLocation":"8350:5:29","nodeType":"VariableDeclaration","scope":14305,"src":"8342:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14299,"name":"address","nodeType":"ElementaryTypeName","src":"8342:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8341:15:29"},"returnParameters":{"id":14304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14305,"src":"8380:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14302,"name":"uint256","nodeType":"ElementaryTypeName","src":"8380:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8379:9:29"},"scope":14602,"src":"8314:75:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14306,"nodeType":"StructuredDocumentation","src":"8393:196:29","text":"@notice Returns the selected token ID for an owner in a specific block number\n @param owner Address to query\n @param blockNumber Block number to query\n @return Selected token ID"},"functionSelector":"3c60f55d","id":14315,"implemented":false,"kind":"function","modifiers":[],"name":"getSelectedTokenIdAtBlock","nameLocation":"8601:25:29","nodeType":"FunctionDefinition","parameters":{"id":14311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14308,"mutability":"mutable","name":"owner","nameLocation":"8635:5:29","nodeType":"VariableDeclaration","scope":14315,"src":"8627:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14307,"name":"address","nodeType":"ElementaryTypeName","src":"8627:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14310,"mutability":"mutable","name":"blockNumber","nameLocation":"8649:11:29","nodeType":"VariableDeclaration","scope":14315,"src":"8642:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14309,"name":"uint48","nodeType":"ElementaryTypeName","src":"8642:6:29","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8626:35:29"},"returnParameters":{"id":14314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14315,"src":"8685:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14312,"name":"uint256","nodeType":"ElementaryTypeName","src":"8685:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8684:9:29"},"scope":14602,"src":"8592:102:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14316,"nodeType":"StructuredDocumentation","src":"8698:120:29","text":"@notice Grants a role to an account\n @param role Role to grant\n @param account Account to receive the role"},"functionSelector":"2f2ff15d","id":14323,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"8830:9:29","nodeType":"FunctionDefinition","parameters":{"id":14321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14318,"mutability":"mutable","name":"role","nameLocation":"8848:4:29","nodeType":"VariableDeclaration","scope":14323,"src":"8840:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8840:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14320,"mutability":"mutable","name":"account","nameLocation":"8862:7:29","nodeType":"VariableDeclaration","scope":14323,"src":"8854:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14319,"name":"address","nodeType":"ElementaryTypeName","src":"8854:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8839:31:29"},"returnParameters":{"id":14322,"nodeType":"ParameterList","parameters":[],"src":"8879:0:29"},"scope":14602,"src":"8821:59:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14324,"nodeType":"StructuredDocumentation","src":"8884:156:29","text":"@notice Checks if an account has a role\n @param role Role to check\n @param account Account to check\n @return True if account has the role"},"functionSelector":"91d14854","id":14333,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"9052:7:29","nodeType":"FunctionDefinition","parameters":{"id":14329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14326,"mutability":"mutable","name":"role","nameLocation":"9068:4:29","nodeType":"VariableDeclaration","scope":14333,"src":"9060:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9060:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14328,"mutability":"mutable","name":"account","nameLocation":"9082:7:29","nodeType":"VariableDeclaration","scope":14333,"src":"9074:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14327,"name":"address","nodeType":"ElementaryTypeName","src":"9074:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9059:31:29"},"returnParameters":{"id":14332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14331,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14333,"src":"9114:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14330,"name":"bool","nodeType":"ElementaryTypeName","src":"9114:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9113:6:29"},"scope":14602,"src":"9043:77:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14334,"nodeType":"StructuredDocumentation","src":"9124:216:29","text":"@notice Initializes the contract V2\n @param _vechainNodes Address of the VeChain nodes contract\n @param _nodesAdmin Address of the nodes admin\n @param _nodeFreeLevels Array of free levels for nodes"},"functionSelector":"fb966e9f","id":14344,"implemented":false,"kind":"function","modifiers":[],"name":"initializeV2","nameLocation":"9352:12:29","nodeType":"FunctionDefinition","parameters":{"id":14342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14336,"mutability":"mutable","name":"_vechainNodes","nameLocation":"9373:13:29","nodeType":"VariableDeclaration","scope":14344,"src":"9365:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14335,"name":"address","nodeType":"ElementaryTypeName","src":"9365:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14338,"mutability":"mutable","name":"_nodesAdmin","nameLocation":"9396:11:29","nodeType":"VariableDeclaration","scope":14344,"src":"9388:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14337,"name":"address","nodeType":"ElementaryTypeName","src":"9388:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14341,"mutability":"mutable","name":"_nodeFreeLevels","nameLocation":"9426:15:29","nodeType":"VariableDeclaration","scope":14344,"src":"9409:32:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14339,"name":"uint256","nodeType":"ElementaryTypeName","src":"9409:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14340,"nodeType":"ArrayTypeName","src":"9409:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9364:78:29"},"returnParameters":{"id":14343,"nodeType":"ParameterList","parameters":[],"src":"9451:0:29"},"scope":14602,"src":"9343:109:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14345,"nodeType":"StructuredDocumentation","src":"9456:195:29","text":"@notice Checks if an operator is approved for all tokens of an owner\n @param owner Owner address\n @param operator Operator address\n @return True if operator is approved for all"},"functionSelector":"e985e9c5","id":14354,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"9663:16:29","nodeType":"FunctionDefinition","parameters":{"id":14350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14347,"mutability":"mutable","name":"owner","nameLocation":"9688:5:29","nodeType":"VariableDeclaration","scope":14354,"src":"9680:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14346,"name":"address","nodeType":"ElementaryTypeName","src":"9680:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14349,"mutability":"mutable","name":"operator","nameLocation":"9703:8:29","nodeType":"VariableDeclaration","scope":14354,"src":"9695:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14348,"name":"address","nodeType":"ElementaryTypeName","src":"9695:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9679:33:29"},"returnParameters":{"id":14353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14352,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14354,"src":"9736:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14351,"name":"bool","nodeType":"ElementaryTypeName","src":"9736:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9735:6:29"},"scope":14602,"src":"9654:88:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14355,"nodeType":"StructuredDocumentation","src":"9746:119:29","text":"@notice Returns the level of a token\n @param tokenId ID of the token to query\n @return Level of the token"},"functionSelector":"6d5e3032","id":14362,"implemented":false,"kind":"function","modifiers":[],"name":"levelOf","nameLocation":"9877:7:29","nodeType":"FunctionDefinition","parameters":{"id":14358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14357,"mutability":"mutable","name":"tokenId","nameLocation":"9893:7:29","nodeType":"VariableDeclaration","scope":14362,"src":"9885:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14356,"name":"uint256","nodeType":"ElementaryTypeName","src":"9885:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9884:17:29"},"returnParameters":{"id":14361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14362,"src":"9925:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14359,"name":"uint256","nodeType":"ElementaryTypeName","src":"9925:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9924:9:29"},"scope":14602,"src":"9868:66:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14363,"nodeType":"StructuredDocumentation","src":"9938:52:29","text":"@notice Returns the name of the token collection"},"functionSelector":"06fdde03","id":14368,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"10002:4:29","nodeType":"FunctionDefinition","parameters":{"id":14364,"nodeType":"ParameterList","parameters":[],"src":"10006:2:29"},"returnParameters":{"id":14367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14366,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14368,"src":"10032:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14365,"name":"string","nodeType":"ElementaryTypeName","src":"10032:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10031:15:29"},"scope":14602,"src":"9993:54:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14369,"nodeType":"StructuredDocumentation","src":"10051:121:29","text":"@notice Returns the owner of a token\n @param tokenId ID of the token to query\n @return Address of the owner"},"functionSelector":"6352211e","id":14376,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"10184:7:29","nodeType":"FunctionDefinition","parameters":{"id":14372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14371,"mutability":"mutable","name":"tokenId","nameLocation":"10200:7:29","nodeType":"VariableDeclaration","scope":14376,"src":"10192:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14370,"name":"uint256","nodeType":"ElementaryTypeName","src":"10192:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10191:17:29"},"returnParameters":{"id":14375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14376,"src":"10232:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14373,"name":"address","nodeType":"ElementaryTypeName","src":"10232:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10231:9:29"},"scope":14602,"src":"10175:66:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14377,"nodeType":"StructuredDocumentation","src":"10245:138:29","text":"@notice Checks if a user has participated in governance\n @param user Address to check\n @return True if user has participated"},"functionSelector":"8c5b76fb","id":14384,"implemented":false,"kind":"function","modifiers":[],"name":"participatedInGovernance","nameLocation":"10395:24:29","nodeType":"FunctionDefinition","parameters":{"id":14380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14379,"mutability":"mutable","name":"user","nameLocation":"10428:4:29","nodeType":"VariableDeclaration","scope":14384,"src":"10420:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14378,"name":"address","nodeType":"ElementaryTypeName","src":"10420:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10419:14:29"},"returnParameters":{"id":14383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14384,"src":"10457:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14381,"name":"bool","nodeType":"ElementaryTypeName","src":"10457:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10456:6:29"},"scope":14602,"src":"10386:77:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14385,"nodeType":"StructuredDocumentation","src":"10467:38:29","text":"@notice Pauses all token transfers"},"functionSelector":"8456cb59","id":14388,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"10517:5:29","nodeType":"FunctionDefinition","parameters":{"id":14386,"nodeType":"ParameterList","parameters":[],"src":"10522:2:29"},"returnParameters":{"id":14387,"nodeType":"ParameterList","parameters":[],"src":"10533:0:29"},"scope":14602,"src":"10508:26:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14389,"nodeType":"StructuredDocumentation","src":"10538:94:29","text":"@notice Returns the paused status of the contract\n @return True if contract is paused"},"functionSelector":"5c975abb","id":14394,"implemented":false,"kind":"function","modifiers":[],"name":"paused","nameLocation":"10644:6:29","nodeType":"FunctionDefinition","parameters":{"id":14390,"nodeType":"ParameterList","parameters":[],"src":"10650:2:29"},"returnParameters":{"id":14393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14392,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14394,"src":"10676:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14391,"name":"bool","nodeType":"ElementaryTypeName","src":"10676:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10675:6:29"},"scope":14602,"src":"10635:47:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14395,"nodeType":"StructuredDocumentation","src":"10686:59:29","text":"@notice Returns the storage slot for the implementation"},"functionSelector":"52d1902d","id":14400,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"10757:13:29","nodeType":"FunctionDefinition","parameters":{"id":14396,"nodeType":"ParameterList","parameters":[],"src":"10770:2:29"},"returnParameters":{"id":14399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14400,"src":"10796:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14397,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10796:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10795:9:29"},"scope":14602,"src":"10748:57:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14401,"nodeType":"StructuredDocumentation","src":"10809:154:29","text":"@notice Allows an account to renounce a role\n @param role Role to renounce\n @param callerConfirmation Address of the caller for confirmation"},"functionSelector":"36568abe","id":14408,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"10975:12:29","nodeType":"FunctionDefinition","parameters":{"id":14406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14403,"mutability":"mutable","name":"role","nameLocation":"10996:4:29","nodeType":"VariableDeclaration","scope":14408,"src":"10988:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14402,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10988:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14405,"mutability":"mutable","name":"callerConfirmation","nameLocation":"11010:18:29","nodeType":"VariableDeclaration","scope":14408,"src":"11002:26:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14404,"name":"address","nodeType":"ElementaryTypeName","src":"11002:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10987:42:29"},"returnParameters":{"id":14407,"nodeType":"ParameterList","parameters":[],"src":"11038:0:29"},"scope":14602,"src":"10966:73:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14409,"nodeType":"StructuredDocumentation","src":"11043:119:29","text":"@notice Revokes a role from an account\n @param role Role to revoke\n @param account Account to revoke from"},"functionSelector":"d547741f","id":14416,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"11174:10:29","nodeType":"FunctionDefinition","parameters":{"id":14414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14411,"mutability":"mutable","name":"role","nameLocation":"11193:4:29","nodeType":"VariableDeclaration","scope":14416,"src":"11185:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14410,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11185:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14413,"mutability":"mutable","name":"account","nameLocation":"11207:7:29","nodeType":"VariableDeclaration","scope":14416,"src":"11199:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14412,"name":"address","nodeType":"ElementaryTypeName","src":"11199:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11184:31:29"},"returnParameters":{"id":14415,"nodeType":"ParameterList","parameters":[],"src":"11224:0:29"},"scope":14602,"src":"11165:60:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14417,"nodeType":"StructuredDocumentation","src":"11229:143:29","text":"@notice Safely transfers a token\n @param from Current owner\n @param to New owner\n @param tokenId ID of the token to transfer"},"functionSelector":"42842e0e","id":14426,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"11384:16:29","nodeType":"FunctionDefinition","parameters":{"id":14424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14419,"mutability":"mutable","name":"from","nameLocation":"11409:4:29","nodeType":"VariableDeclaration","scope":14426,"src":"11401:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14418,"name":"address","nodeType":"ElementaryTypeName","src":"11401:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14421,"mutability":"mutable","name":"to","nameLocation":"11423:2:29","nodeType":"VariableDeclaration","scope":14426,"src":"11415:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14420,"name":"address","nodeType":"ElementaryTypeName","src":"11415:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14423,"mutability":"mutable","name":"tokenId","nameLocation":"11435:7:29","nodeType":"VariableDeclaration","scope":14426,"src":"11427:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14422,"name":"uint256","nodeType":"ElementaryTypeName","src":"11427:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11400:43:29"},"returnParameters":{"id":14425,"nodeType":"ParameterList","parameters":[],"src":"11452:0:29"},"scope":14602,"src":"11375:78:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14427,"nodeType":"StructuredDocumentation","src":"11457:198:29","text":"@notice Safely transfers a token with additional data\n @param from Current owner\n @param to New owner\n @param tokenId ID of the token to transfer\n @param data Additional data"},"functionSelector":"b88d4fde","id":14438,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"11667:16:29","nodeType":"FunctionDefinition","parameters":{"id":14436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14429,"mutability":"mutable","name":"from","nameLocation":"11692:4:29","nodeType":"VariableDeclaration","scope":14438,"src":"11684:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14428,"name":"address","nodeType":"ElementaryTypeName","src":"11684:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14431,"mutability":"mutable","name":"to","nameLocation":"11706:2:29","nodeType":"VariableDeclaration","scope":14438,"src":"11698:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14430,"name":"address","nodeType":"ElementaryTypeName","src":"11698:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14433,"mutability":"mutable","name":"tokenId","nameLocation":"11718:7:29","nodeType":"VariableDeclaration","scope":14438,"src":"11710:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14432,"name":"uint256","nodeType":"ElementaryTypeName","src":"11710:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14435,"mutability":"mutable","name":"data","nameLocation":"11740:4:29","nodeType":"VariableDeclaration","scope":14438,"src":"11727:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14434,"name":"bytes","nodeType":"ElementaryTypeName","src":"11727:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11683:62:29"},"returnParameters":{"id":14437,"nodeType":"ParameterList","parameters":[],"src":"11754:0:29"},"scope":14602,"src":"11658:97:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14439,"nodeType":"StructuredDocumentation","src":"11759:87:29","text":"@notice Selects a token for an owner\n @param tokenID ID of the token to select"},"functionSelector":"839a19d9","id":14444,"implemented":false,"kind":"function","modifiers":[],"name":"select","nameLocation":"11858:6:29","nodeType":"FunctionDefinition","parameters":{"id":14442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14441,"mutability":"mutable","name":"tokenID","nameLocation":"11873:7:29","nodeType":"VariableDeclaration","scope":14444,"src":"11865:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14440,"name":"uint256","nodeType":"ElementaryTypeName","src":"11865:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11864:17:29"},"returnParameters":{"id":14443,"nodeType":"ParameterList","parameters":[],"src":"11890:0:29"},"scope":14602,"src":"11849:42:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14445,"nodeType":"StructuredDocumentation","src":"11895:119:29","text":"@notice Sets approval for all tokens\n @param operator Address to approve\n @param approved Approval status"},"functionSelector":"a22cb465","id":14452,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"12026:17:29","nodeType":"FunctionDefinition","parameters":{"id":14450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14447,"mutability":"mutable","name":"operator","nameLocation":"12052:8:29","nodeType":"VariableDeclaration","scope":14452,"src":"12044:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14446,"name":"address","nodeType":"ElementaryTypeName","src":"12044:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14449,"mutability":"mutable","name":"approved","nameLocation":"12067:8:29","nodeType":"VariableDeclaration","scope":14452,"src":"12062:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14448,"name":"bool","nodeType":"ElementaryTypeName","src":"12062:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12043:33:29"},"returnParameters":{"id":14451,"nodeType":"ParameterList","parameters":[],"src":"12085:0:29"},"scope":14602,"src":"12017:69:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14453,"nodeType":"StructuredDocumentation","src":"12090:115:29","text":"@notice Sets the B3TR amounts needed for level upgrades\n @param b3trToUpgradeToLevel Array of B3TR amounts"},"functionSelector":"b1ccbd2c","id":14459,"implemented":false,"kind":"function","modifiers":[],"name":"setB3TRtoUpgradeToLevel","nameLocation":"12217:23:29","nodeType":"FunctionDefinition","parameters":{"id":14457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14456,"mutability":"mutable","name":"b3trToUpgradeToLevel","nameLocation":"12258:20:29","nodeType":"VariableDeclaration","scope":14459,"src":"12241:37:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14454,"name":"uint256","nodeType":"ElementaryTypeName","src":"12241:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14455,"nodeType":"ArrayTypeName","src":"12241:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12240:39:29"},"returnParameters":{"id":14458,"nodeType":"ParameterList","parameters":[],"src":"12288:0:29"},"scope":14602,"src":"12208:81:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14460,"nodeType":"StructuredDocumentation","src":"12293:90:29","text":"@notice Sets the B3TR governor address\n @param _b3trGovernor New governor address"},"functionSelector":"ddd8634d","id":14465,"implemented":false,"kind":"function","modifiers":[],"name":"setB3trGovernorAddress","nameLocation":"12395:22:29","nodeType":"FunctionDefinition","parameters":{"id":14463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14462,"mutability":"mutable","name":"_b3trGovernor","nameLocation":"12426:13:29","nodeType":"VariableDeclaration","scope":14465,"src":"12418:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14461,"name":"address","nodeType":"ElementaryTypeName","src":"12418:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12417:23:29"},"returnParameters":{"id":14464,"nodeType":"ParameterList","parameters":[],"src":"12449:0:29"},"scope":14602,"src":"12386:64:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14466,"nodeType":"StructuredDocumentation","src":"12454:87:29","text":"@notice Sets the base URI for token metadata\n @param baseTokenURI New base URI"},"functionSelector":"55f804b3","id":14471,"implemented":false,"kind":"function","modifiers":[],"name":"setBaseURI","nameLocation":"12553:10:29","nodeType":"FunctionDefinition","parameters":{"id":14469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14468,"mutability":"mutable","name":"baseTokenURI","nameLocation":"12578:12:29","nodeType":"VariableDeclaration","scope":14471,"src":"12564:26:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14467,"name":"string","nodeType":"ElementaryTypeName","src":"12564:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"12563:28:29"},"returnParameters":{"id":14470,"nodeType":"ParameterList","parameters":[],"src":"12600:0:29"},"scope":14602,"src":"12544:57:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14472,"nodeType":"StructuredDocumentation","src":"12605:87:29","text":"@notice Sets the public minting pause status\n @param isPaused New pause status"},"functionSelector":"5b5da514","id":14477,"implemented":false,"kind":"function","modifiers":[],"name":"setIsPublicMintingPaused","nameLocation":"12704:24:29","nodeType":"FunctionDefinition","parameters":{"id":14475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14474,"mutability":"mutable","name":"isPaused","nameLocation":"12734:8:29","nodeType":"VariableDeclaration","scope":14477,"src":"12729:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14473,"name":"bool","nodeType":"ElementaryTypeName","src":"12729:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12728:15:29"},"returnParameters":{"id":14476,"nodeType":"ParameterList","parameters":[],"src":"12752:0:29"},"scope":14602,"src":"12695:58:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14478,"nodeType":"StructuredDocumentation","src":"12757:71:29","text":"@notice Sets the maximum level\n @param level New maximum level"},"functionSelector":"344f1ba5","id":14483,"implemented":false,"kind":"function","modifiers":[],"name":"setMaxLevel","nameLocation":"12840:11:29","nodeType":"FunctionDefinition","parameters":{"id":14481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14480,"mutability":"mutable","name":"level","nameLocation":"12860:5:29","nodeType":"VariableDeclaration","scope":14483,"src":"12852:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14479,"name":"uint256","nodeType":"ElementaryTypeName","src":"12852:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12851:15:29"},"returnParameters":{"id":14482,"nodeType":"ParameterList","parameters":[],"src":"12875:0:29"},"scope":14602,"src":"12831:45:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14484,"nodeType":"StructuredDocumentation","src":"12880:135:29","text":"@notice Sets the free upgrade level for a node level\n @param nodeLevel Level of the node\n @param level Free upgrade level"},"functionSelector":"001db0dd","id":14491,"implemented":false,"kind":"function","modifiers":[],"name":"setNodeToFreeUpgradeLevel","nameLocation":"13027:25:29","nodeType":"FunctionDefinition","parameters":{"id":14489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14486,"mutability":"mutable","name":"nodeLevel","nameLocation":"13059:9:29","nodeType":"VariableDeclaration","scope":14491,"src":"13053:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14485,"name":"uint8","nodeType":"ElementaryTypeName","src":"13053:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":14488,"mutability":"mutable","name":"level","nameLocation":"13078:5:29","nodeType":"VariableDeclaration","scope":14491,"src":"13070:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14487,"name":"uint256","nodeType":"ElementaryTypeName","src":"13070:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13052:32:29"},"returnParameters":{"id":14490,"nodeType":"ParameterList","parameters":[],"src":"13093:0:29"},"scope":14602,"src":"13018:76:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14492,"nodeType":"StructuredDocumentation","src":"13098:107:29","text":"@notice Sets the X-Allocations governor address\n @param _xAllocationsGovernor New governor address"},"functionSelector":"3af03ea8","id":14497,"implemented":false,"kind":"function","modifiers":[],"name":"setXAllocationsGovernorAddress","nameLocation":"13217:30:29","nodeType":"FunctionDefinition","parameters":{"id":14495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14494,"mutability":"mutable","name":"_xAllocationsGovernor","nameLocation":"13256:21:29","nodeType":"VariableDeclaration","scope":14497,"src":"13248:29:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14493,"name":"address","nodeType":"ElementaryTypeName","src":"13248:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13247:31:29"},"returnParameters":{"id":14496,"nodeType":"ParameterList","parameters":[],"src":"13287:0:29"},"scope":14602,"src":"13208:80:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14498,"nodeType":"StructuredDocumentation","src":"13292:108:29","text":"@notice Sets the StargateNFT contract address\n @param _stargateNFT New StargateNFT contract address"},"functionSelector":"36a49a3c","id":14503,"implemented":false,"kind":"function","modifiers":[],"name":"setStargateNFTAddress","nameLocation":"13412:21:29","nodeType":"FunctionDefinition","parameters":{"id":14501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14500,"mutability":"mutable","name":"_stargateNFT","nameLocation":"13442:12:29","nodeType":"VariableDeclaration","scope":14503,"src":"13434:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14499,"name":"address","nodeType":"ElementaryTypeName","src":"13434:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13433:22:29"},"returnParameters":{"id":14502,"nodeType":"ParameterList","parameters":[],"src":"13464:0:29"},"scope":14602,"src":"13403:62:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14504,"nodeType":"StructuredDocumentation","src":"13469:147:29","text":"@notice Checks if the contract supports an interface\n @param interfaceId Interface identifier\n @return True if interface is supported"},"functionSelector":"01ffc9a7","id":14511,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"13628:17:29","nodeType":"FunctionDefinition","parameters":{"id":14507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14506,"mutability":"mutable","name":"interfaceId","nameLocation":"13653:11:29","nodeType":"VariableDeclaration","scope":14511,"src":"13646:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14505,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13646:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"13645:20:29"},"returnParameters":{"id":14510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14509,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14511,"src":"13689:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14508,"name":"bool","nodeType":"ElementaryTypeName","src":"13689:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13688:6:29"},"scope":14602,"src":"13619:76:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14512,"nodeType":"StructuredDocumentation","src":"13699:54:29","text":"@notice Returns the symbol of the token collection"},"functionSelector":"95d89b41","id":14517,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"13765:6:29","nodeType":"FunctionDefinition","parameters":{"id":14513,"nodeType":"ParameterList","parameters":[],"src":"13771:2:29"},"returnParameters":{"id":14516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14515,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14517,"src":"13797:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14514,"name":"string","nodeType":"ElementaryTypeName","src":"13797:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13796:15:29"},"scope":14602,"src":"13756:56:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14518,"nodeType":"StructuredDocumentation","src":"13816:114:29","text":"@notice Returns a token by its index\n @param index Index of the token\n @return Token ID at the index"},"functionSelector":"4f6ccce7","id":14525,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"13942:12:29","nodeType":"FunctionDefinition","parameters":{"id":14521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14520,"mutability":"mutable","name":"index","nameLocation":"13963:5:29","nodeType":"VariableDeclaration","scope":14525,"src":"13955:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14519,"name":"uint256","nodeType":"ElementaryTypeName","src":"13955:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13954:15:29"},"returnParameters":{"id":14524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14523,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14525,"src":"13993:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14522,"name":"uint256","nodeType":"ElementaryTypeName","src":"13993:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13992:9:29"},"scope":14602,"src":"13933:69:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14526,"nodeType":"StructuredDocumentation","src":"14006:163:29","text":"@notice Returns a token owned by an address by index\n @param owner Owner address\n @param index Index of the token\n @return Token ID at the index"},"functionSelector":"2f745c59","id":14535,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"14181:19:29","nodeType":"FunctionDefinition","parameters":{"id":14531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14528,"mutability":"mutable","name":"owner","nameLocation":"14209:5:29","nodeType":"VariableDeclaration","scope":14535,"src":"14201:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14527,"name":"address","nodeType":"ElementaryTypeName","src":"14201:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14530,"mutability":"mutable","name":"index","nameLocation":"14224:5:29","nodeType":"VariableDeclaration","scope":14535,"src":"14216:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14529,"name":"uint256","nodeType":"ElementaryTypeName","src":"14216:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14200:30:29"},"returnParameters":{"id":14534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14535,"src":"14254:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14532,"name":"uint256","nodeType":"ElementaryTypeName","src":"14254:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14253:9:29"},"scope":14602,"src":"14172:91:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14536,"nodeType":"StructuredDocumentation","src":"14267:114:29","text":"@notice Returns the URI for a token's metadata\n @param tokenId ID of the token\n @return Metadata URI"},"functionSelector":"c87b56dd","id":14543,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"14393:8:29","nodeType":"FunctionDefinition","parameters":{"id":14539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14538,"mutability":"mutable","name":"tokenId","nameLocation":"14410:7:29","nodeType":"VariableDeclaration","scope":14543,"src":"14402:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14537,"name":"uint256","nodeType":"ElementaryTypeName","src":"14402:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14401:17:29"},"returnParameters":{"id":14542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14543,"src":"14442:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14540,"name":"string","nodeType":"ElementaryTypeName","src":"14442:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14441:15:29"},"scope":14602,"src":"14384:73:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14544,"nodeType":"StructuredDocumentation","src":"14461:83:29","text":"@notice Returns the total supply of tokens\n @return Total number of tokens"},"functionSelector":"18160ddd","id":14549,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"14556:11:29","nodeType":"FunctionDefinition","parameters":{"id":14545,"nodeType":"ParameterList","parameters":[],"src":"14567:2:29"},"returnParameters":{"id":14548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14547,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14549,"src":"14593:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14546,"name":"uint256","nodeType":"ElementaryTypeName","src":"14593:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14592:9:29"},"scope":14602,"src":"14547:55:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14550,"nodeType":"StructuredDocumentation","src":"14606:136:29","text":"@notice Transfers a token\n @param from Current owner\n @param to New owner\n @param tokenId ID of the token to transfer"},"functionSelector":"23b872dd","id":14559,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"14754:12:29","nodeType":"FunctionDefinition","parameters":{"id":14557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14552,"mutability":"mutable","name":"from","nameLocation":"14775:4:29","nodeType":"VariableDeclaration","scope":14559,"src":"14767:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14551,"name":"address","nodeType":"ElementaryTypeName","src":"14767:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14554,"mutability":"mutable","name":"to","nameLocation":"14789:2:29","nodeType":"VariableDeclaration","scope":14559,"src":"14781:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14553,"name":"address","nodeType":"ElementaryTypeName","src":"14781:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14556,"mutability":"mutable","name":"tokenId","nameLocation":"14801:7:29","nodeType":"VariableDeclaration","scope":14559,"src":"14793:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14555,"name":"uint256","nodeType":"ElementaryTypeName","src":"14793:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14766:43:29"},"returnParameters":{"id":14558,"nodeType":"ParameterList","parameters":[],"src":"14818:0:29"},"scope":14602,"src":"14745:74:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14560,"nodeType":"StructuredDocumentation","src":"14823:40:29","text":"@notice Returns the treasury address"},"functionSelector":"61d027b3","id":14565,"implemented":false,"kind":"function","modifiers":[],"name":"treasury","nameLocation":"14875:8:29","nodeType":"FunctionDefinition","parameters":{"id":14561,"nodeType":"ParameterList","parameters":[],"src":"14883:2:29"},"returnParameters":{"id":14564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14565,"src":"14909:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14562,"name":"address","nodeType":"ElementaryTypeName","src":"14909:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14908:9:29"},"scope":14602,"src":"14866:52:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14566,"nodeType":"StructuredDocumentation","src":"14922:40:29","text":"@notice Unpauses all token transfers"},"functionSelector":"3f4ba83a","id":14569,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"14974:7:29","nodeType":"FunctionDefinition","parameters":{"id":14567,"nodeType":"ParameterList","parameters":[],"src":"14981:2:29"},"returnParameters":{"id":14568,"nodeType":"ParameterList","parameters":[],"src":"14992:0:29"},"scope":14602,"src":"14965:28:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14570,"nodeType":"StructuredDocumentation","src":"14997:84:29","text":"@notice Upgrades a token's level\n @param tokenId ID of the token to upgrade"},"functionSelector":"45977d03","id":14575,"implemented":false,"kind":"function","modifiers":[],"name":"upgrade","nameLocation":"15093:7:29","nodeType":"FunctionDefinition","parameters":{"id":14573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14572,"mutability":"mutable","name":"tokenId","nameLocation":"15109:7:29","nodeType":"VariableDeclaration","scope":14575,"src":"15101:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14571,"name":"uint256","nodeType":"ElementaryTypeName","src":"15101:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15100:17:29"},"returnParameters":{"id":14574,"nodeType":"ParameterList","parameters":[],"src":"15126:0:29"},"scope":14602,"src":"15084:43:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14576,"nodeType":"StructuredDocumentation","src":"15131:163:29","text":"@notice Upgrades the contract implementation\n @param newImplementation Address of the new implementation\n @param data Additional data for the upgrade"},"functionSelector":"4f1ef286","id":14583,"implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"15306:16:29","nodeType":"FunctionDefinition","parameters":{"id":14581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14578,"mutability":"mutable","name":"newImplementation","nameLocation":"15331:17:29","nodeType":"VariableDeclaration","scope":14583,"src":"15323:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14577,"name":"address","nodeType":"ElementaryTypeName","src":"15323:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14580,"mutability":"mutable","name":"data","nameLocation":"15363:4:29","nodeType":"VariableDeclaration","scope":14583,"src":"15350:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14579,"name":"bytes","nodeType":"ElementaryTypeName","src":"15350:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15322:46:29"},"returnParameters":{"id":14582,"nodeType":"ParameterList","parameters":[],"src":"15385:0:29"},"scope":14602,"src":"15297:89:29","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14584,"nodeType":"StructuredDocumentation","src":"15390:69:29","text":"@notice Returns the contract version\n @return Version string"},"functionSelector":"54fd4d50","id":14589,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"15471:7:29","nodeType":"FunctionDefinition","parameters":{"id":14585,"nodeType":"ParameterList","parameters":[],"src":"15478:2:29"},"returnParameters":{"id":14588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14587,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14589,"src":"15504:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14586,"name":"string","nodeType":"ElementaryTypeName","src":"15504:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"15503:15:29"},"scope":14602,"src":"15462:57:29","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":14590,"nodeType":"StructuredDocumentation","src":"15523:54:29","text":"@notice Returns the X-Allocations governor address"},"functionSelector":"5ecf68e9","id":14595,"implemented":false,"kind":"function","modifiers":[],"name":"xAllocationsGovernor","nameLocation":"15589:20:29","nodeType":"FunctionDefinition","parameters":{"id":14591,"nodeType":"ParameterList","parameters":[],"src":"15609:2:29"},"returnParameters":{"id":14594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14593,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14595,"src":"15635:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14592,"name":"address","nodeType":"ElementaryTypeName","src":"15635:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15634:9:29"},"scope":14602,"src":"15580:64:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14596,"nodeType":"StructuredDocumentation","src":"15648:52:29","text":"@notice Returns the StargateNFT contract address"},"functionSelector":"5d21e15b","id":14601,"implemented":false,"kind":"function","modifiers":[],"name":"stargateNFT","nameLocation":"15712:11:29","nodeType":"FunctionDefinition","parameters":{"id":14597,"nodeType":"ParameterList","parameters":[],"src":"15723:2:29"},"returnParameters":{"id":14600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14601,"src":"15749:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14598,"name":"address","nodeType":"ElementaryTypeName","src":"15749:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15748:9:29"},"scope":14602,"src":"15703:55:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14603,"src":"382:15378:29","usedErrors":[13866,13872,13876,13880,13882,13888,13890,13892,13900,13906,13910,13914,13918,13922,13926,13930,13936,13938,13940,13942,13944,13946,13948,13950,13954],"usedEvents":[13962,13970,13975,13981,13987,13991,13997,14001,14005,14013,14021,14029,14035,14043,14047,14051,14059,14065,14071,14077,14085,14093,14099]}],"src":"33:15728:29"},"id":29},"contracts/interfaces/IVeBetterPassport.sol":{"ast":{"absolutePath":"contracts/interfaces/IVeBetterPassport.sol","exportedSymbols":{"IVeBetterPassport":[15484],"IX2EarnApps":[16381],"IXAllocationVotingGovernor":[17346],"PassportTypes":[19456]},"id":15485,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":14604,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:30"},{"absolutePath":"contracts/ve-better-passport/libraries/PassportTypes.sol","file":"../ve-better-passport/libraries/PassportTypes.sol","id":14606,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15485,"sourceUnit":19457,"src":"57:82:30","symbolAliases":[{"foreign":{"id":14605,"name":"PassportTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19456,"src":"66:13:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IX2EarnApps.sol","file":"./IX2EarnApps.sol","id":14608,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15485,"sourceUnit":16382,"src":"140:48:30","symbolAliases":[{"foreign":{"id":14607,"name":"IX2EarnApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16381,"src":"149:11:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IXAllocationVotingGovernor.sol","file":"./IXAllocationVotingGovernor.sol","id":14610,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15485,"sourceUnit":17347,"src":"189:78:30","symbolAliases":[{"foreign":{"id":14609,"name":"IXAllocationVotingGovernor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17346,"src":"198:26:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVeBetterPassport","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":15484,"linearizedBaseContracts":[15484],"name":"IVeBetterPassport","nameLocation":"279:17:30","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":14611,"nodeType":"StructuredDocumentation","src":"339:183:30","text":"@notice Emitted when a specific check is toggled.\n @param checkName The name of the check being toggled.\n @param enabled True if the check is enabled, false if disabled."},"eventSelector":"6597febd892627da1c0dcb869f4009fcddf0536800f46387a1c71ec0bb40b89c","id":14617,"name":"CheckToggled","nameLocation":"531:12:30","nodeType":"EventDefinition","parameters":{"id":14616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14613,"indexed":true,"mutability":"mutable","name":"checkName","nameLocation":"559:9:30","nodeType":"VariableDeclaration","scope":14617,"src":"544:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14612,"name":"string","nodeType":"ElementaryTypeName","src":"544:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14615,"indexed":false,"mutability":"mutable","name":"enabled","nameLocation":"575:7:30","nodeType":"VariableDeclaration","scope":14617,"src":"570:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14614,"name":"bool","nodeType":"ElementaryTypeName","src":"570:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"543:40:30"},"src":"525:59:30"},{"anonymous":false,"documentation":{"id":14618,"nodeType":"StructuredDocumentation","src":"588:139:30","text":"@notice Emitted when the minimum galaxy member level is set.\n @param minimumGalaxyMemberLevel The new minimum galaxy member level."},"eventSelector":"a2c705c50ba0db842bd184a7106f86bf8f532c275513da346bc43c05c4cf0f4d","id":14622,"name":"MinimumGalaxyMemberLevelSet","nameLocation":"736:27:30","nodeType":"EventDefinition","parameters":{"id":14621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14620,"indexed":false,"mutability":"mutable","name":"minimumGalaxyMemberLevel","nameLocation":"772:24:30","nodeType":"VariableDeclaration","scope":14622,"src":"764:32:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14619,"name":"uint256","nodeType":"ElementaryTypeName","src":"764:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"763:34:30"},"src":"730:68:30"},{"anonymous":false,"documentation":{"id":14623,"nodeType":"StructuredDocumentation","src":"802:69:30","text":"@notice Emitted when a user delegates personhood to another user."},"eventSelector":"f644c2a6a740703067e9f00fb5a09444cd18cca01a19ce87915e934297a43fe2","id":14629,"name":"LinkCreated","nameLocation":"880:11:30","nodeType":"EventDefinition","parameters":{"id":14628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14625,"indexed":true,"mutability":"mutable","name":"entity","nameLocation":"908:6:30","nodeType":"VariableDeclaration","scope":14629,"src":"892:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14624,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14627,"indexed":true,"mutability":"mutable","name":"passport","nameLocation":"932:8:30","nodeType":"VariableDeclaration","scope":14629,"src":"916:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14626,"name":"address","nodeType":"ElementaryTypeName","src":"916:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:50:30"},"src":"874:68:30"},{"anonymous":false,"documentation":{"id":14630,"nodeType":"StructuredDocumentation","src":"946:85:30","text":"@notice Emitted when a user revokes the delegation of personhood to another user."},"eventSelector":"916811490c3a0241b2088d3f6464fbfe3003b4bb42a760a720e893a81de60051","id":14636,"name":"LinkRemoved","nameLocation":"1040:11:30","nodeType":"EventDefinition","parameters":{"id":14635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14632,"indexed":true,"mutability":"mutable","name":"entity","nameLocation":"1068:6:30","nodeType":"VariableDeclaration","scope":14636,"src":"1052:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14631,"name":"address","nodeType":"ElementaryTypeName","src":"1052:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14634,"indexed":true,"mutability":"mutable","name":"passport","nameLocation":"1092:8:30","nodeType":"VariableDeclaration","scope":14636,"src":"1076:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14633,"name":"address","nodeType":"ElementaryTypeName","src":"1076:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1051:50:30"},"src":"1034:68:30"},{"anonymous":false,"documentation":{"id":14637,"nodeType":"StructuredDocumentation","src":"1106:88:30","text":"@notice Emitted when a user delegates personhood to another user pending acceptance."},"eventSelector":"a5ce3061f55dc6a6cb616713edbec99b638865accddbd58c83fd009e9ce920e7","id":14643,"name":"LinkPending","nameLocation":"1203:11:30","nodeType":"EventDefinition","parameters":{"id":14642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14639,"indexed":true,"mutability":"mutable","name":"entity","nameLocation":"1231:6:30","nodeType":"VariableDeclaration","scope":14643,"src":"1215:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14638,"name":"address","nodeType":"ElementaryTypeName","src":"1215:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14641,"indexed":true,"mutability":"mutable","name":"passport","nameLocation":"1255:8:30","nodeType":"VariableDeclaration","scope":14643,"src":"1239:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14640,"name":"address","nodeType":"ElementaryTypeName","src":"1239:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1214:50:30"},"src":"1197:68:30"},{"anonymous":false,"documentation":{"id":14644,"nodeType":"StructuredDocumentation","src":"1269:306:30","text":"@notice Emitted when a user registers an action\n @param user - the user that registered the action\n @param passport - the passport address of the user\n @param appId - the app id of the action\n @param round - the round of the action\n @param actionScore - the score of the action"},"eventSelector":"51ea9b7b791d42c8517fa7a13074dced51d4cc9afa4bdf03ea0371a0244f1331","id":14656,"name":"RegisteredAction","nameLocation":"1584:16:30","nodeType":"EventDefinition","parameters":{"id":14655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14646,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1622:4:30","nodeType":"VariableDeclaration","scope":14656,"src":"1606:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14645,"name":"address","nodeType":"ElementaryTypeName","src":"1606:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14648,"indexed":false,"mutability":"mutable","name":"passport","nameLocation":"1640:8:30","nodeType":"VariableDeclaration","scope":14656,"src":"1632:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14647,"name":"address","nodeType":"ElementaryTypeName","src":"1632:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14650,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"1670:5:30","nodeType":"VariableDeclaration","scope":14656,"src":"1654:21:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1654:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14652,"indexed":true,"mutability":"mutable","name":"round","nameLocation":"1697:5:30","nodeType":"VariableDeclaration","scope":14656,"src":"1681:21:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14651,"name":"uint256","nodeType":"ElementaryTypeName","src":"1681:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14654,"indexed":false,"mutability":"mutable","name":"actionScore","nameLocation":"1716:11:30","nodeType":"VariableDeclaration","scope":14656,"src":"1708:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14653,"name":"uint256","nodeType":"ElementaryTypeName","src":"1708:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1600:131:30"},"src":"1578:154:30"},{"anonymous":false,"documentation":{"id":14657,"nodeType":"StructuredDocumentation","src":"1736:291:30","text":"@notice Emitted when a user is signaled.\n @param user  The address of the user that was signaled.\n @param signaler  The address of the user that signaled the user.\n @param app  The app that the user was signaled for.\n @param reason  The reason for signaling the user."},"eventSelector":"f25f15e8ef26f4be9336774a49507bb309a1336536723f5fde89b14057949dbd","id":14667,"name":"UserSignaled","nameLocation":"2036:12:30","nodeType":"EventDefinition","parameters":{"id":14666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14659,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"2065:4:30","nodeType":"VariableDeclaration","scope":14667,"src":"2049:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14658,"name":"address","nodeType":"ElementaryTypeName","src":"2049:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14661,"indexed":true,"mutability":"mutable","name":"signaler","nameLocation":"2087:8:30","nodeType":"VariableDeclaration","scope":14667,"src":"2071:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14660,"name":"address","nodeType":"ElementaryTypeName","src":"2071:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14663,"indexed":true,"mutability":"mutable","name":"app","nameLocation":"2113:3:30","nodeType":"VariableDeclaration","scope":14667,"src":"2097:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2097:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14665,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2125:6:30","nodeType":"VariableDeclaration","scope":14667,"src":"2118:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14664,"name":"string","nodeType":"ElementaryTypeName","src":"2118:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2048:84:30"},"src":"2030:103:30"},{"anonymous":false,"documentation":{"id":14668,"nodeType":"StructuredDocumentation","src":"2137:178:30","text":"@notice Emited when an address is associated with an app.\n @param signaler  The address of the signaler.\n @param app  The app that the signaler was associated with."},"eventSelector":"d8c22d7f098517032ec270986bbe55478d2e791ccf89ee272402d487810b1254","id":14674,"name":"SignalerAssignedToApp","nameLocation":"2324:21:30","nodeType":"EventDefinition","parameters":{"id":14673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14670,"indexed":true,"mutability":"mutable","name":"signaler","nameLocation":"2362:8:30","nodeType":"VariableDeclaration","scope":14674,"src":"2346:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14669,"name":"address","nodeType":"ElementaryTypeName","src":"2346:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14672,"indexed":true,"mutability":"mutable","name":"app","nameLocation":"2388:3:30","nodeType":"VariableDeclaration","scope":14674,"src":"2372:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14671,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2372:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2345:47:30"},"src":"2318:75:30"},{"anonymous":false,"documentation":{"id":14675,"nodeType":"StructuredDocumentation","src":"2397:173:30","text":"@notice Emitted when an address is removed from an app.\n @param signaler  The address of the signaler.\n @param app  The app that the signaler was removed from."},"eventSelector":"617eb548e66b4e7465391879780b27e77c43a7af63e9dd6cf2e7076daff89057","id":14681,"name":"SignalerRemovedFromApp","nameLocation":"2579:22:30","nodeType":"EventDefinition","parameters":{"id":14680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14677,"indexed":true,"mutability":"mutable","name":"signaler","nameLocation":"2618:8:30","nodeType":"VariableDeclaration","scope":14681,"src":"2602:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14676,"name":"address","nodeType":"ElementaryTypeName","src":"2602:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14679,"indexed":true,"mutability":"mutable","name":"app","nameLocation":"2644:3:30","nodeType":"VariableDeclaration","scope":14681,"src":"2628:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14678,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2628:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2601:47:30"},"src":"2573:76:30"},{"anonymous":false,"documentation":{"id":14682,"nodeType":"StructuredDocumentation","src":"2653:184:30","text":"@notice Emitted when a user's signals are reset.\n @param user  The address of the user that had their signals reset.\n @param reason  The reason for resetting the signals."},"eventSelector":"1ebbf7da6e1ef1fb76df73897af6ec2fe552869d2be5ea5bb56770b82f27dd6c","id":14688,"name":"UserSignalsReset","nameLocation":"2846:16:30","nodeType":"EventDefinition","parameters":{"id":14687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14684,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"2879:4:30","nodeType":"VariableDeclaration","scope":14688,"src":"2863:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14683,"name":"address","nodeType":"ElementaryTypeName","src":"2863:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14686,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2892:6:30","nodeType":"VariableDeclaration","scope":14688,"src":"2885:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14685,"name":"string","nodeType":"ElementaryTypeName","src":"2885:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2862:37:30"},"src":"2840:60:30"},{"anonymous":false,"documentation":{"id":14689,"nodeType":"StructuredDocumentation","src":"2904:159:30","text":"@notice Emitted when a user is whitelisted\n @param user - the user that is whitelisted\n @param whitelistedBy - the user that whitelisted the user"},"eventSelector":"4bc18aa4b0095c9a3b5cdf42d2322d5a145591b04045988a995a5da426075457","id":14695,"name":"UserWhitelisted","nameLocation":"3072:15:30","nodeType":"EventDefinition","parameters":{"id":14694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14691,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3104:4:30","nodeType":"VariableDeclaration","scope":14695,"src":"3088:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14690,"name":"address","nodeType":"ElementaryTypeName","src":"3088:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14693,"indexed":true,"mutability":"mutable","name":"whitelistedBy","nameLocation":"3126:13:30","nodeType":"VariableDeclaration","scope":14695,"src":"3110:29:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14692,"name":"address","nodeType":"ElementaryTypeName","src":"3110:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3087:53:30"},"src":"3066:75:30"},{"anonymous":false,"documentation":{"id":14696,"nodeType":"StructuredDocumentation","src":"3145:200:30","text":"@notice Emitted when a user is removed from the whitelist\n @param user - the user that is removed from the whitelist\n @param removedBy - the user that removed the user from the whitelist"},"eventSelector":"dde27c144443a54dc101baecf71cf43c14f06defcd403bce05b372caba1cdcd0","id":14704,"name":"RemovedUserFromWhitelist","nameLocation":"3354:24:30","nodeType":"EventDefinition","parameters":{"id":14703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14698,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3395:4:30","nodeType":"VariableDeclaration","scope":14704,"src":"3379:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14697,"name":"address","nodeType":"ElementaryTypeName","src":"3379:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14700,"indexed":true,"mutability":"mutable","name":"passport","nameLocation":"3417:8:30","nodeType":"VariableDeclaration","scope":14704,"src":"3401:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14699,"name":"address","nodeType":"ElementaryTypeName","src":"3401:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14702,"indexed":true,"mutability":"mutable","name":"removedBy","nameLocation":"3443:9:30","nodeType":"VariableDeclaration","scope":14704,"src":"3427:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14701,"name":"address","nodeType":"ElementaryTypeName","src":"3427:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3378:75:30"},"src":"3348:106:30"},{"anonymous":false,"documentation":{"id":14705,"nodeType":"StructuredDocumentation","src":"3458:159:30","text":"@notice Emitted when a user is blacklisted\n @param user - the user that is blacklisted\n @param blacklistedBy - the user that blacklisted the user"},"eventSelector":"b238e099a93706e73d75fdb8fb35f9a0a146e80ead15480e50fbc9db1736aa04","id":14711,"name":"UserBlacklisted","nameLocation":"3626:15:30","nodeType":"EventDefinition","parameters":{"id":14710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14707,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3658:4:30","nodeType":"VariableDeclaration","scope":14711,"src":"3642:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14706,"name":"address","nodeType":"ElementaryTypeName","src":"3642:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14709,"indexed":true,"mutability":"mutable","name":"blacklistedBy","nameLocation":"3680:13:30","nodeType":"VariableDeclaration","scope":14711,"src":"3664:29:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14708,"name":"address","nodeType":"ElementaryTypeName","src":"3664:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3641:53:30"},"src":"3620:75:30"},{"anonymous":false,"documentation":{"id":14712,"nodeType":"StructuredDocumentation","src":"3699:200:30","text":"@notice Emitted when a user is removed from the blacklist\n @param user - the user that is removed from the blacklist\n @param removedBy - the user that removed the user from the blacklist"},"eventSelector":"d12ee140a2e74664b10a866c6f75c8b756520ad9b6bbbe4c33f10811a62cbf71","id":14718,"name":"RemovedUserFromBlacklist","nameLocation":"3908:24:30","nodeType":"EventDefinition","parameters":{"id":14717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14714,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3949:4:30","nodeType":"VariableDeclaration","scope":14718,"src":"3933:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14713,"name":"address","nodeType":"ElementaryTypeName","src":"3933:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14716,"indexed":true,"mutability":"mutable","name":"removedBy","nameLocation":"3971:9:30","nodeType":"VariableDeclaration","scope":14718,"src":"3955:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14715,"name":"address","nodeType":"ElementaryTypeName","src":"3955:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3932:49:30"},"src":"3902:80:30"},{"anonymous":false,"documentation":{"id":14719,"nodeType":"StructuredDocumentation","src":"3986:265:30","text":"@notice Emitted when a user's signals are reset for an app.\n @param user  The address of the user that had their signals reset.\n @param app  The app that the user had their signals reset for.\n @param reason - The reason for resetting the signals."},"eventSelector":"d1a3831b3da91367737710ecdb8c8262265b33fa319568dd2a124926d26a7192","id":14727,"name":"UserSignalsResetForApp","nameLocation":"4260:22:30","nodeType":"EventDefinition","parameters":{"id":14726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14721,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"4299:4:30","nodeType":"VariableDeclaration","scope":14727,"src":"4283:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14720,"name":"address","nodeType":"ElementaryTypeName","src":"4283:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14723,"indexed":true,"mutability":"mutable","name":"app","nameLocation":"4321:3:30","nodeType":"VariableDeclaration","scope":14727,"src":"4305:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14722,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4305:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14725,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"4333:6:30","nodeType":"VariableDeclaration","scope":14727,"src":"4326:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14724,"name":"string","nodeType":"ElementaryTypeName","src":"4326:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4282:58:30"},"src":"4254:87:30"},{"anonymous":false,"documentation":{"id":14728,"nodeType":"StructuredDocumentation","src":"4345:67:30","text":"@notice Emitted when a user delegates passport to another user."},"eventSelector":"faf6077d874fc7f1716637c6f4ac4914ce0cfbf27767bb442ed23dd08dad4044","id":14734,"name":"DelegationCreated","nameLocation":"4421:17:30","nodeType":"EventDefinition","parameters":{"id":14733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14730,"indexed":true,"mutability":"mutable","name":"delegator","nameLocation":"4455:9:30","nodeType":"VariableDeclaration","scope":14734,"src":"4439:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14729,"name":"address","nodeType":"ElementaryTypeName","src":"4439:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14732,"indexed":true,"mutability":"mutable","name":"delegatee","nameLocation":"4482:9:30","nodeType":"VariableDeclaration","scope":14734,"src":"4466:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14731,"name":"address","nodeType":"ElementaryTypeName","src":"4466:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4438:54:30"},"src":"4415:78:30"},{"anonymous":false,"documentation":{"id":14735,"nodeType":"StructuredDocumentation","src":"4497:86:30","text":"@notice Emitted when a user delegates passport to another user pending acceptance."},"eventSelector":"74e65557682bd085b776a10c4542ef8a7be38069648dce172fe713b91c9700f1","id":14741,"name":"DelegationPending","nameLocation":"4592:17:30","nodeType":"EventDefinition","parameters":{"id":14740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14737,"indexed":true,"mutability":"mutable","name":"delegator","nameLocation":"4626:9:30","nodeType":"VariableDeclaration","scope":14741,"src":"4610:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14736,"name":"address","nodeType":"ElementaryTypeName","src":"4610:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14739,"indexed":true,"mutability":"mutable","name":"delegatee","nameLocation":"4653:9:30","nodeType":"VariableDeclaration","scope":14741,"src":"4637:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14738,"name":"address","nodeType":"ElementaryTypeName","src":"4637:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4609:54:30"},"src":"4586:78:30"},{"anonymous":false,"documentation":{"id":14742,"nodeType":"StructuredDocumentation","src":"4668:83:30","text":"@notice Emitted when a user revokes the delegation of passport to another user."},"eventSelector":"6f0412fa95f7f48ec7dc7631b382833d8eae9cf4082e5e859b94d091a4a846d4","id":14748,"name":"DelegationRevoked","nameLocation":"4760:17:30","nodeType":"EventDefinition","parameters":{"id":14747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14744,"indexed":true,"mutability":"mutable","name":"delegator","nameLocation":"4794:9:30","nodeType":"VariableDeclaration","scope":14748,"src":"4778:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14743,"name":"address","nodeType":"ElementaryTypeName","src":"4778:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14746,"indexed":true,"mutability":"mutable","name":"delegatee","nameLocation":"4821:9:30","nodeType":"VariableDeclaration","scope":14748,"src":"4805:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14745,"name":"address","nodeType":"ElementaryTypeName","src":"4805:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4777:54:30"},"src":"4754:78:30"},{"documentation":{"id":14749,"nodeType":"StructuredDocumentation","src":"4836:61:30","text":"@notice Emitted when an an entity is linked to a passport"},"errorSelector":"9546eb63","id":14753,"name":"AlreadyLinked","nameLocation":"4906:13:30","nodeType":"ErrorDefinition","parameters":{"id":14752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14751,"mutability":"mutable","name":"entity","nameLocation":"4928:6:30","nodeType":"VariableDeclaration","scope":14753,"src":"4920:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14750,"name":"address","nodeType":"ElementaryTypeName","src":"4920:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4919:16:30"},"src":"4900:36:30"},{"documentation":{"id":14754,"nodeType":"StructuredDocumentation","src":"4977:80:30","text":"@notice Emitted when a user does not have permission to delegate personhood."},"errorSelector":"ea93ab6d","id":14758,"name":"UnauthorizedUser","nameLocation":"5066:16:30","nodeType":"ErrorDefinition","parameters":{"id":14757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14756,"mutability":"mutable","name":"user","nameLocation":"5091:4:30","nodeType":"VariableDeclaration","scope":14758,"src":"5083:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14755,"name":"address","nodeType":"ElementaryTypeName","src":"5083:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5082:14:30"},"src":"5060:37:30"},{"documentation":{"id":14759,"nodeType":"StructuredDocumentation","src":"5101:106:30","text":"@notice Emitted when a user tries to delegate personhood to a user that has already been delegated to."},"errorSelector":"6f2e3efe","id":14763,"name":"AlreadyDelegated","nameLocation":"5216:16:30","nodeType":"ErrorDefinition","parameters":{"id":14762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14761,"mutability":"mutable","name":"entity","nameLocation":"5241:6:30","nodeType":"VariableDeclaration","scope":14763,"src":"5233:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14760,"name":"address","nodeType":"ElementaryTypeName","src":"5233:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5232:16:30"},"src":"5210:39:30"},{"documentation":{"id":14764,"nodeType":"StructuredDocumentation","src":"5253:75:30","text":"@notice Emitted when a user tries to delegate personhood to themselves."},"errorSelector":"2999fb78","id":14768,"name":"CannotLinkToSelf","nameLocation":"5337:16:30","nodeType":"ErrorDefinition","parameters":{"id":14767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14766,"mutability":"mutable","name":"user","nameLocation":"5362:4:30","nodeType":"VariableDeclaration","scope":14768,"src":"5354:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14765,"name":"address","nodeType":"ElementaryTypeName","src":"5354:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5353:14:30"},"src":"5331:37:30"},{"documentation":{"id":14769,"nodeType":"StructuredDocumentation","src":"5372:83:30","text":"@notice Emitted when a user tries to delegate personhood to more than one user."},"errorSelector":"e578ae26","id":14771,"name":"OnlyOneLinkAllowed","nameLocation":"5464:18:30","nodeType":"ErrorDefinition","parameters":{"id":14770,"nodeType":"ParameterList","parameters":[],"src":"5482:2:30"},"src":"5458:27:30"},{"documentation":{"id":14772,"nodeType":"StructuredDocumentation","src":"5489:94:30","text":"@notice Emitted when a user tries to call a function that they are not authorized to call."},"errorSelector":"4f2bbdc1","id":14776,"name":"VeBetterPassportUnauthorizedUser","nameLocation":"5592:32:30","nodeType":"ErrorDefinition","parameters":{"id":14775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14774,"mutability":"mutable","name":"user","nameLocation":"5633:4:30","nodeType":"VariableDeclaration","scope":14776,"src":"5625:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14773,"name":"address","nodeType":"ElementaryTypeName","src":"5625:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5624:14:30"},"src":"5586:53:30"},{"documentation":{"id":14777,"nodeType":"StructuredDocumentation","src":"5643:78:30","text":"@notice Emitted when a user does not have permission to delegate passport."},"errorSelector":"f6272f81","id":14781,"name":"PassportDelegationUnauthorizedUser","nameLocation":"5730:34:30","nodeType":"ErrorDefinition","parameters":{"id":14780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14779,"mutability":"mutable","name":"user","nameLocation":"5773:4:30","nodeType":"VariableDeclaration","scope":14781,"src":"5765:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14778,"name":"address","nodeType":"ElementaryTypeName","src":"5765:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5764:14:30"},"src":"5724:55:30"},{"documentation":{"id":14782,"nodeType":"StructuredDocumentation","src":"5783:73:30","text":"@notice Emitted when a user tries to delegate passport to themselves."},"errorSelector":"07bcecdf","id":14786,"name":"CannotDelegateToSelf","nameLocation":"5865:20:30","nodeType":"ErrorDefinition","parameters":{"id":14785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14784,"mutability":"mutable","name":"user","nameLocation":"5894:4:30","nodeType":"VariableDeclaration","scope":14786,"src":"5886:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14783,"name":"address","nodeType":"ElementaryTypeName","src":"5886:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5885:14:30"},"src":"5859:41:30"},{"documentation":{"id":14787,"nodeType":"StructuredDocumentation","src":"5904:81:30","text":"@notice Emitted when a user tries to revoke a delegation that does not exist."},"errorSelector":"d48bb6b6","id":14791,"name":"NotDelegated","nameLocation":"5994:12:30","nodeType":"ErrorDefinition","parameters":{"id":14790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14789,"mutability":"mutable","name":"user","nameLocation":"6015:4:30","nodeType":"VariableDeclaration","scope":14791,"src":"6007:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14788,"name":"address","nodeType":"ElementaryTypeName","src":"6007:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6006:14:30"},"src":"5988:33:30"},{"documentation":{"id":14792,"nodeType":"StructuredDocumentation","src":"6025:81:30","text":"@notice Emitted when a user tries to delegate passport to more than one user."},"errorSelector":"3df4ebd9","id":14794,"name":"OnlyOneUserAllowed","nameLocation":"6115:18:30","nodeType":"ErrorDefinition","parameters":{"id":14793,"nodeType":"ParameterList","parameters":[],"src":"6133:2:30"},"src":"6109:27:30"},{"documentation":{"id":14795,"nodeType":"StructuredDocumentation","src":"6140:91:30","text":"@notice Emiited when a user tries to delegate a passport to another passport or entity."},"errorSelector":"79eab24b","id":14797,"name":"PassportDelegationFromEntity","nameLocation":"6240:28:30","nodeType":"ErrorDefinition","parameters":{"id":14796,"nodeType":"ParameterList","parameters":[],"src":"6268:2:30"},"src":"6234:37:30"},{"documentation":{"id":14798,"nodeType":"StructuredDocumentation","src":"6275:79:30","text":"@notice Emitted when a user tries to delegate a passport to another entity."},"errorSelector":"98f64923","id":14800,"name":"PassportDelegationToEntity","nameLocation":"6363:26:30","nodeType":"ErrorDefinition","parameters":{"id":14799,"nodeType":"ParameterList","parameters":[],"src":"6389:2:30"},"src":"6357:35:30"},{"documentation":{"id":14801,"nodeType":"StructuredDocumentation","src":"6396:81:30","text":"@notice Emitted when a user tries to sign a message with an expired signature"},"errorSelector":"0819bdcd","id":14803,"name":"SignatureExpired","nameLocation":"6486:16:30","nodeType":"ErrorDefinition","parameters":{"id":14802,"nodeType":"ParameterList","parameters":[],"src":"6502:2:30"},"src":"6480:25:30"},{"documentation":{"id":14804,"nodeType":"StructuredDocumentation","src":"6509:81:30","text":"@notice Emitted when a user tries to sign a message with an invalid signature"},"errorSelector":"8baa579f","id":14806,"name":"InvalidSignature","nameLocation":"6599:16:30","nodeType":"ErrorDefinition","parameters":{"id":14805,"nodeType":"ParameterList","parameters":[],"src":"6615:2:30"},"src":"6593:25:30"},{"documentation":{"id":14807,"nodeType":"StructuredDocumentation","src":"6622:117:30","text":"@notice Thrown when a user tries to link a entity to a passport that has reached the maximum number of entities."},"errorSelector":"aca3ff43","id":14809,"name":"MaxEntitiesPerPassportReached","nameLocation":"6748:29:30","nodeType":"ErrorDefinition","parameters":{"id":14808,"nodeType":"ParameterList","parameters":[],"src":"6777:2:30"},"src":"6742:38:30"},{"documentation":{"id":14810,"nodeType":"StructuredDocumentation","src":"6784:109:30","text":"@notice Thrown when a user tries to link a entity to a passport that is already linked to another entity."},"errorSelector":"c6ac53df","id":14814,"name":"NotLinked","nameLocation":"6902:9:30","nodeType":"ErrorDefinition","parameters":{"id":14813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14812,"mutability":"mutable","name":"user","nameLocation":"6920:4:30","nodeType":"VariableDeclaration","scope":14814,"src":"6912:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14811,"name":"address","nodeType":"ElementaryTypeName","src":"6912:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6911:14:30"},"src":"6896:30:30"},{"documentation":{"id":14815,"nodeType":"StructuredDocumentation","src":"6930:94:30","text":"@notice Thrown when a user tries to link a entity to a passport that is already delegated."},"errorSelector":"7344f01c","id":14819,"name":"DelegatedEntity","nameLocation":"7033:15:30","nodeType":"ErrorDefinition","parameters":{"id":14818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14817,"mutability":"mutable","name":"entity","nameLocation":"7057:6:30","nodeType":"VariableDeclaration","scope":14819,"src":"7049:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14816,"name":"address","nodeType":"ElementaryTypeName","src":"7049:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7048:16:30"},"src":"7027:38:30"},{"documentation":{"id":14820,"nodeType":"StructuredDocumentation","src":"7109:181:30","text":"@notice Initializes the contract with the required data and roles\n @param data The initialization data for the contract\n @param roles The roles data for initialization"},"functionSelector":"52ba35c4","id":14829,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"7302:10:30","nodeType":"FunctionDefinition","parameters":{"id":14827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14823,"mutability":"mutable","name":"data","nameLocation":"7360:4:30","nodeType":"VariableDeclaration","scope":14829,"src":"7318:46:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$19421_calldata_ptr","typeString":"struct PassportTypes.InitializationData"},"typeName":{"id":14822,"nodeType":"UserDefinedTypeName","pathNode":{"id":14821,"name":"PassportTypes.InitializationData","nameLocations":["7318:13:30","7332:18:30"],"nodeType":"IdentifierPath","referencedDeclaration":19421,"src":"7318:32:30"},"referencedDeclaration":19421,"src":"7318:32:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationData_$19421_storage_ptr","typeString":"struct PassportTypes.InitializationData"}},"visibility":"internal"},{"constant":false,"id":14826,"mutability":"mutable","name":"roles","nameLocation":"7416:5:30","nodeType":"VariableDeclaration","scope":14829,"src":"7370:51:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$19442_calldata_ptr","typeString":"struct PassportTypes.InitializationRoleData"},"typeName":{"id":14825,"nodeType":"UserDefinedTypeName","pathNode":{"id":14824,"name":"PassportTypes.InitializationRoleData","nameLocations":["7370:13:30","7384:22:30"],"nodeType":"IdentifierPath","referencedDeclaration":19442,"src":"7370:36:30"},"referencedDeclaration":19442,"src":"7370:36:30","typeDescriptions":{"typeIdentifier":"t_struct$_InitializationRoleData_$19442_storage_ptr","typeString":"struct PassportTypes.InitializationRoleData"}},"visibility":"internal"}],"src":"7312:113:30"},"returnParameters":{"id":14828,"nodeType":"ParameterList","parameters":[],"src":"7434:0:30"},"scope":15484,"src":"7293:142:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14830,"nodeType":"StructuredDocumentation","src":"7439:256:30","text":"@notice Checks if a user is a person based on the participation score and other criteria\n @param user The address of the user to check\n @return person True if the user is a valid person\n @return reason Reason why the user is not a person"},"functionSelector":"0f73927a","id":14839,"implemented":false,"kind":"function","modifiers":[],"name":"isPerson","nameLocation":"7707:8:30","nodeType":"FunctionDefinition","parameters":{"id":14833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14832,"mutability":"mutable","name":"user","nameLocation":"7724:4:30","nodeType":"VariableDeclaration","scope":14839,"src":"7716:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14831,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7715:14:30"},"returnParameters":{"id":14838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14835,"mutability":"mutable","name":"person","nameLocation":"7758:6:30","nodeType":"VariableDeclaration","scope":14839,"src":"7753:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14834,"name":"bool","nodeType":"ElementaryTypeName","src":"7753:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14837,"mutability":"mutable","name":"reason","nameLocation":"7780:6:30","nodeType":"VariableDeclaration","scope":14839,"src":"7766:20:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14836,"name":"string","nodeType":"ElementaryTypeName","src":"7766:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7752:35:30"},"scope":15484,"src":"7698:90:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14840,"nodeType":"StructuredDocumentation","src":"7792:377:30","text":"@notice Checks if a user is a person\n @dev Checks if a wallet is a person or not at a specific timepoint based on the participation score, blacklisting, and GM holdings\n @param user - the user address\n @param timepoint - the timepoint to query\n @return person - true if the user is a person\n @return reason - the reason why the user is not a person"},"functionSelector":"d0ebb0ee","id":14851,"implemented":false,"kind":"function","modifiers":[],"name":"isPersonAtTimepoint","nameLocation":"8181:19:30","nodeType":"FunctionDefinition","parameters":{"id":14845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14842,"mutability":"mutable","name":"user","nameLocation":"8214:4:30","nodeType":"VariableDeclaration","scope":14851,"src":"8206:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14841,"name":"address","nodeType":"ElementaryTypeName","src":"8206:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14844,"mutability":"mutable","name":"timepoint","nameLocation":"8231:9:30","nodeType":"VariableDeclaration","scope":14851,"src":"8224:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":14843,"name":"uint48","nodeType":"ElementaryTypeName","src":"8224:6:30","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8200:44:30"},"returnParameters":{"id":14850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14847,"mutability":"mutable","name":"person","nameLocation":"8273:6:30","nodeType":"VariableDeclaration","scope":14851,"src":"8268:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14846,"name":"bool","nodeType":"ElementaryTypeName","src":"8268:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14849,"mutability":"mutable","name":"reason","nameLocation":"8295:6:30","nodeType":"VariableDeclaration","scope":14851,"src":"8281:20:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14848,"name":"string","nodeType":"ElementaryTypeName","src":"8281:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8267:35:30"},"scope":15484,"src":"8172:131:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14852,"nodeType":"StructuredDocumentation","src":"8307:126:30","text":"@notice Checks if a user is whitelisted\n @param _user The user to check\n @return True if the user is whitelisted"},"functionSelector":"3af32abf","id":14859,"implemented":false,"kind":"function","modifiers":[],"name":"isWhitelisted","nameLocation":"8445:13:30","nodeType":"FunctionDefinition","parameters":{"id":14855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14854,"mutability":"mutable","name":"_user","nameLocation":"8467:5:30","nodeType":"VariableDeclaration","scope":14859,"src":"8459:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14853,"name":"address","nodeType":"ElementaryTypeName","src":"8459:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8458:15:30"},"returnParameters":{"id":14858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14859,"src":"8497:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14856,"name":"bool","nodeType":"ElementaryTypeName","src":"8497:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8496:6:30"},"scope":15484,"src":"8436:67:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14860,"nodeType":"StructuredDocumentation","src":"8507:126:30","text":"@notice Checks if a user is blacklisted\n @param _user The user to check\n @return True if the user is blacklisted"},"functionSelector":"fe575a87","id":14867,"implemented":false,"kind":"function","modifiers":[],"name":"isBlacklisted","nameLocation":"8645:13:30","nodeType":"FunctionDefinition","parameters":{"id":14863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14862,"mutability":"mutable","name":"_user","nameLocation":"8667:5:30","nodeType":"VariableDeclaration","scope":14867,"src":"8659:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14861,"name":"address","nodeType":"ElementaryTypeName","src":"8659:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8658:15:30"},"returnParameters":{"id":14866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14867,"src":"8697:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14864,"name":"bool","nodeType":"ElementaryTypeName","src":"8697:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8696:6:30"},"scope":15484,"src":"8636:67:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14868,"nodeType":"StructuredDocumentation","src":"8707:39:30","text":"@notice Toggles the specified check"},"functionSelector":"d6cfbe1b","id":14874,"implemented":false,"kind":"function","modifiers":[],"name":"toggleCheck","nameLocation":"8758:11:30","nodeType":"FunctionDefinition","parameters":{"id":14872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14871,"mutability":"mutable","name":"check","nameLocation":"8794:5:30","nodeType":"VariableDeclaration","scope":14874,"src":"8770:29:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CheckType_$19449","typeString":"enum PassportTypes.CheckType"},"typeName":{"id":14870,"nodeType":"UserDefinedTypeName","pathNode":{"id":14869,"name":"PassportTypes.CheckType","nameLocations":["8770:13:30","8784:9:30"],"nodeType":"IdentifierPath","referencedDeclaration":19449,"src":"8770:23:30"},"referencedDeclaration":19449,"src":"8770:23:30","typeDescriptions":{"typeIdentifier":"t_enum$_CheckType_$19449","typeString":"enum PassportTypes.CheckType"}},"visibility":"internal"}],"src":"8769:31:30"},"returnParameters":{"id":14873,"nodeType":"ParameterList","parameters":[],"src":"8809:0:30"},"scope":15484,"src":"8749:61:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14875,"nodeType":"StructuredDocumentation","src":"8814:136:30","text":"@notice Returns the passport address for a entity\n @param entity The entity's address\n @return The address of the passport"},"functionSelector":"467b99b6","id":14882,"implemented":false,"kind":"function","modifiers":[],"name":"getPassportForEntity","nameLocation":"8962:20:30","nodeType":"FunctionDefinition","parameters":{"id":14878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14877,"mutability":"mutable","name":"entity","nameLocation":"8991:6:30","nodeType":"VariableDeclaration","scope":14882,"src":"8983:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14876,"name":"address","nodeType":"ElementaryTypeName","src":"8983:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8982:16:30"},"returnParameters":{"id":14881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14882,"src":"9022:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14879,"name":"address","nodeType":"ElementaryTypeName","src":"9022:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9021:9:30"},"scope":15484,"src":"8953:78:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14883,"nodeType":"StructuredDocumentation","src":"9035:262:30","text":"@notice Returns the pending links for a user (both incoming and outgoing)\n @param user The address of the user\n @return incoming The addresss of users that want to link to the user.\n @return outgoing The address that the user wants to link to."},"functionSelector":"f9cfdfcc","id":14893,"implemented":false,"kind":"function","modifiers":[],"name":"getPendingLinkings","nameLocation":"9309:18:30","nodeType":"FunctionDefinition","parameters":{"id":14886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14885,"mutability":"mutable","name":"user","nameLocation":"9336:4:30","nodeType":"VariableDeclaration","scope":14893,"src":"9328:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14884,"name":"address","nodeType":"ElementaryTypeName","src":"9328:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9327:14:30"},"returnParameters":{"id":14892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14889,"mutability":"mutable","name":"incoming","nameLocation":"9382:8:30","nodeType":"VariableDeclaration","scope":14893,"src":"9365:25:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14887,"name":"address","nodeType":"ElementaryTypeName","src":"9365:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14888,"nodeType":"ArrayTypeName","src":"9365:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14891,"mutability":"mutable","name":"outgoing","nameLocation":"9400:8:30","nodeType":"VariableDeclaration","scope":14893,"src":"9392:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14890,"name":"address","nodeType":"ElementaryTypeName","src":"9392:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9364:45:30"},"scope":15484,"src":"9300:110:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14894,"nodeType":"StructuredDocumentation","src":"9414:164:30","text":"@notice Returns the passport address for a entity at a specific timepoint\n @param entity The entity's address\n @param timepoint The timepoint to query"},"functionSelector":"38d8d688","id":14903,"implemented":false,"kind":"function","modifiers":[],"name":"getPassportForEntityAtTimepoint","nameLocation":"9590:31:30","nodeType":"FunctionDefinition","parameters":{"id":14899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14896,"mutability":"mutable","name":"entity","nameLocation":"9630:6:30","nodeType":"VariableDeclaration","scope":14903,"src":"9622:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14895,"name":"address","nodeType":"ElementaryTypeName","src":"9622:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14898,"mutability":"mutable","name":"timepoint","nameLocation":"9646:9:30","nodeType":"VariableDeclaration","scope":14903,"src":"9638:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14897,"name":"uint256","nodeType":"ElementaryTypeName","src":"9638:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9621:35:30"},"returnParameters":{"id":14902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14903,"src":"9680:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14900,"name":"address","nodeType":"ElementaryTypeName","src":"9680:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9679:9:30"},"scope":15484,"src":"9581:108:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14904,"nodeType":"StructuredDocumentation","src":"9693:138:30","text":"@notice Returns the entity address for a passport\n @param passport The passport's address\n @return The address of the entity"},"functionSelector":"e60fd76c","id":14912,"implemented":false,"kind":"function","modifiers":[],"name":"getEntitiesLinkedToPassport","nameLocation":"9843:27:30","nodeType":"FunctionDefinition","parameters":{"id":14907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14906,"mutability":"mutable","name":"passport","nameLocation":"9879:8:30","nodeType":"VariableDeclaration","scope":14912,"src":"9871:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14905,"name":"address","nodeType":"ElementaryTypeName","src":"9871:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9870:18:30"},"returnParameters":{"id":14911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14912,"src":"9912:16:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14908,"name":"address","nodeType":"ElementaryTypeName","src":"9912:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14909,"nodeType":"ArrayTypeName","src":"9912:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"9911:18:30"},"scope":15484,"src":"9834:96:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14913,"nodeType":"StructuredDocumentation","src":"9934:76:30","text":"@notice Returns if a user is a entity\n @param user The user address"},"functionSelector":"14887c58","id":14920,"implemented":false,"kind":"function","modifiers":[],"name":"isEntity","nameLocation":"10022:8:30","nodeType":"FunctionDefinition","parameters":{"id":14916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14915,"mutability":"mutable","name":"user","nameLocation":"10039:4:30","nodeType":"VariableDeclaration","scope":14920,"src":"10031:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14914,"name":"address","nodeType":"ElementaryTypeName","src":"10031:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10030:14:30"},"returnParameters":{"id":14919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14920,"src":"10068:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14917,"name":"bool","nodeType":"ElementaryTypeName","src":"10068:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10067:6:30"},"scope":15484,"src":"10013:61:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14921,"nodeType":"StructuredDocumentation","src":"10078:146:30","text":"@notice Returns if a user is a entity at a specific timepoint\n @param user The user address\n @param timepoint The timepoint to query"},"functionSelector":"6e6a304c","id":14930,"implemented":false,"kind":"function","modifiers":[],"name":"isEntityInTimepoint","nameLocation":"10236:19:30","nodeType":"FunctionDefinition","parameters":{"id":14926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14923,"mutability":"mutable","name":"user","nameLocation":"10264:4:30","nodeType":"VariableDeclaration","scope":14930,"src":"10256:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14922,"name":"address","nodeType":"ElementaryTypeName","src":"10256:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14925,"mutability":"mutable","name":"timepoint","nameLocation":"10278:9:30","nodeType":"VariableDeclaration","scope":14930,"src":"10270:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14924,"name":"uint256","nodeType":"ElementaryTypeName","src":"10270:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10255:33:30"},"returnParameters":{"id":14929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14930,"src":"10312:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14927,"name":"bool","nodeType":"ElementaryTypeName","src":"10312:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10311:6:30"},"scope":15484,"src":"10227:91:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14931,"nodeType":"StructuredDocumentation","src":"10322:78:30","text":"@notice Returns if a user is a passport\n @param user The user address"},"functionSelector":"5a1dcf2c","id":14938,"implemented":false,"kind":"function","modifiers":[],"name":"isPassport","nameLocation":"10412:10:30","nodeType":"FunctionDefinition","parameters":{"id":14934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14933,"mutability":"mutable","name":"user","nameLocation":"10431:4:30","nodeType":"VariableDeclaration","scope":14938,"src":"10423:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14932,"name":"address","nodeType":"ElementaryTypeName","src":"10423:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10422:14:30"},"returnParameters":{"id":14937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14938,"src":"10460:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14935,"name":"bool","nodeType":"ElementaryTypeName","src":"10460:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10459:6:30"},"scope":15484,"src":"10403:63:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14939,"nodeType":"StructuredDocumentation","src":"10470:148:30","text":"@notice Returns if a user is a passport at a specific timepoint\n @param user The user address\n @param timepoint The timepoint to query"},"functionSelector":"e4325044","id":14948,"implemented":false,"kind":"function","modifiers":[],"name":"isPassportInTimepoint","nameLocation":"10630:21:30","nodeType":"FunctionDefinition","parameters":{"id":14944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14941,"mutability":"mutable","name":"user","nameLocation":"10660:4:30","nodeType":"VariableDeclaration","scope":14948,"src":"10652:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14940,"name":"address","nodeType":"ElementaryTypeName","src":"10652:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14943,"mutability":"mutable","name":"timepoint","nameLocation":"10674:9:30","nodeType":"VariableDeclaration","scope":14948,"src":"10666:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14942,"name":"uint256","nodeType":"ElementaryTypeName","src":"10666:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10651:33:30"},"returnParameters":{"id":14947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14946,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14948,"src":"10708:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14945,"name":"bool","nodeType":"ElementaryTypeName","src":"10708:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10707:6:30"},"scope":15484,"src":"10621:93:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14949,"nodeType":"StructuredDocumentation","src":"10718:274:30","text":"@notice Gets the cumulative score of a user based on exponential decay for a number of last rounds\n @param user The user address\n @param lastRound The round to consider as a starting point for the cumulative score\n @return The cumulative score of the user"},"functionSelector":"e18c10d3","id":14958,"implemented":false,"kind":"function","modifiers":[],"name":"getCumulativeScoreWithDecay","nameLocation":"11004:27:30","nodeType":"FunctionDefinition","parameters":{"id":14954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14951,"mutability":"mutable","name":"user","nameLocation":"11040:4:30","nodeType":"VariableDeclaration","scope":14958,"src":"11032:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14950,"name":"address","nodeType":"ElementaryTypeName","src":"11032:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14953,"mutability":"mutable","name":"lastRound","nameLocation":"11054:9:30","nodeType":"VariableDeclaration","scope":14958,"src":"11046:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14952,"name":"uint256","nodeType":"ElementaryTypeName","src":"11046:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11031:33:30"},"returnParameters":{"id":14957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14956,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14958,"src":"11088:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14955,"name":"uint256","nodeType":"ElementaryTypeName","src":"11088:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11087:9:30"},"scope":15484,"src":"10995:102:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14959,"nodeType":"StructuredDocumentation","src":"11101:157:30","text":"@notice Gets the round score of a user\n @param user The user address\n @param round The round to check\n @return The round score of the user"},"functionSelector":"8919b6e5","id":14968,"implemented":false,"kind":"function","modifiers":[],"name":"userRoundScore","nameLocation":"11270:14:30","nodeType":"FunctionDefinition","parameters":{"id":14964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14961,"mutability":"mutable","name":"user","nameLocation":"11293:4:30","nodeType":"VariableDeclaration","scope":14968,"src":"11285:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14960,"name":"address","nodeType":"ElementaryTypeName","src":"11285:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14963,"mutability":"mutable","name":"round","nameLocation":"11307:5:30","nodeType":"VariableDeclaration","scope":14968,"src":"11299:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14962,"name":"uint256","nodeType":"ElementaryTypeName","src":"11299:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11284:29:30"},"returnParameters":{"id":14967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14968,"src":"11337:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14965,"name":"uint256","nodeType":"ElementaryTypeName","src":"11337:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11336:9:30"},"scope":15484,"src":"11261:85:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14969,"nodeType":"StructuredDocumentation","src":"11350:119:30","text":"@notice Gets the total score of a user\n @param user The user address\n @return The total score of the user"},"functionSelector":"d0023fcb","id":14976,"implemented":false,"kind":"function","modifiers":[],"name":"userTotalScore","nameLocation":"11481:14:30","nodeType":"FunctionDefinition","parameters":{"id":14972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14971,"mutability":"mutable","name":"user","nameLocation":"11504:4:30","nodeType":"VariableDeclaration","scope":14976,"src":"11496:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14970,"name":"address","nodeType":"ElementaryTypeName","src":"11496:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11495:14:30"},"returnParameters":{"id":14975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14974,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14976,"src":"11533:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14973,"name":"uint256","nodeType":"ElementaryTypeName","src":"11533:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11532:9:30"},"scope":15484,"src":"11472:70:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14977,"nodeType":"StructuredDocumentation","src":"11546:175:30","text":"@notice Gets the number of actions distributed by an app in a round\n @param appId The app ID\n @param round The round to check\n @return The number of actions"},"functionSelector":"00362016","id":14986,"implemented":false,"kind":"function","modifiers":[],"name":"appRoundActionCount","nameLocation":"11733:19:30","nodeType":"FunctionDefinition","parameters":{"id":14982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14979,"mutability":"mutable","name":"appId","nameLocation":"11761:5:30","nodeType":"VariableDeclaration","scope":14986,"src":"11753:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11753:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14981,"mutability":"mutable","name":"round","nameLocation":"11776:5:30","nodeType":"VariableDeclaration","scope":14986,"src":"11768:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14980,"name":"uint256","nodeType":"ElementaryTypeName","src":"11768:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11752:30:30"},"returnParameters":{"id":14985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14986,"src":"11806:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14983,"name":"uint256","nodeType":"ElementaryTypeName","src":"11806:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11805:9:30"},"scope":15484,"src":"11724:91:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14987,"nodeType":"StructuredDocumentation","src":"11819:197:30","text":"@notice Gets the number of distinct apps a user has interacted with in a round\n @param user The user address\n @param round The round to check\n @return The number of distinct apps"},"functionSelector":"d7ce41eb","id":14996,"implemented":false,"kind":"function","modifiers":[],"name":"userRoundAppCount","nameLocation":"12028:17:30","nodeType":"FunctionDefinition","parameters":{"id":14992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14989,"mutability":"mutable","name":"user","nameLocation":"12054:4:30","nodeType":"VariableDeclaration","scope":14996,"src":"12046:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14988,"name":"address","nodeType":"ElementaryTypeName","src":"12046:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14991,"mutability":"mutable","name":"round","nameLocation":"12068:5:30","nodeType":"VariableDeclaration","scope":14996,"src":"12060:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14990,"name":"uint256","nodeType":"ElementaryTypeName","src":"12060:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12045:29:30"},"returnParameters":{"id":14995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14996,"src":"12098:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14993,"name":"uint256","nodeType":"ElementaryTypeName","src":"12098:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12097:9:30"},"scope":15484,"src":"12019:88:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14997,"nodeType":"StructuredDocumentation","src":"12111:215:30","text":"@notice Gets how many actions a user registered in a specific round\n @param user The user address\n @param round The round to check\n @return The number of registered actions for that user and round"},"functionSelector":"886d15d2","id":15006,"implemented":false,"kind":"function","modifiers":[],"name":"userRoundActionCount","nameLocation":"12338:20:30","nodeType":"FunctionDefinition","parameters":{"id":15002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14999,"mutability":"mutable","name":"user","nameLocation":"12367:4:30","nodeType":"VariableDeclaration","scope":15006,"src":"12359:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14998,"name":"address","nodeType":"ElementaryTypeName","src":"12359:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15001,"mutability":"mutable","name":"round","nameLocation":"12381:5:30","nodeType":"VariableDeclaration","scope":15006,"src":"12373:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15000,"name":"uint256","nodeType":"ElementaryTypeName","src":"12373:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12358:29:30"},"returnParameters":{"id":15005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15004,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15006,"src":"12411:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15003,"name":"uint256","nodeType":"ElementaryTypeName","src":"12411:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12410:9:30"},"scope":15484,"src":"12329:91:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15007,"nodeType":"StructuredDocumentation","src":"12424:231:30","text":"@notice Gets the score of a user for an app in a specific round\n @param user The user address\n @param round The round to check\n @param appId The app ID\n @return The score of the user for the app in the round"},"functionSelector":"8d38b50f","id":15018,"implemented":false,"kind":"function","modifiers":[],"name":"userRoundScoreApp","nameLocation":"12667:17:30","nodeType":"FunctionDefinition","parameters":{"id":15014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15009,"mutability":"mutable","name":"user","nameLocation":"12693:4:30","nodeType":"VariableDeclaration","scope":15018,"src":"12685:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15008,"name":"address","nodeType":"ElementaryTypeName","src":"12685:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15011,"mutability":"mutable","name":"round","nameLocation":"12707:5:30","nodeType":"VariableDeclaration","scope":15018,"src":"12699:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15010,"name":"uint256","nodeType":"ElementaryTypeName","src":"12699:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15013,"mutability":"mutable","name":"appId","nameLocation":"12722:5:30","nodeType":"VariableDeclaration","scope":15018,"src":"12714:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15012,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12714:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12684:44:30"},"returnParameters":{"id":15017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15018,"src":"12752:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15015,"name":"uint256","nodeType":"ElementaryTypeName","src":"12752:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12751:9:30"},"scope":15484,"src":"12658:103:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15019,"nodeType":"StructuredDocumentation","src":"12765:262:30","text":"@notice Gets how many actions a user registered for an app in a specific round\n @param user The user address\n @param round The round to check\n @param appId The app ID\n @return The number of registered actions for that user, app, and round"},"functionSelector":"9352d272","id":15030,"implemented":false,"kind":"function","modifiers":[],"name":"userRoundActionCountApp","nameLocation":"13039:23:30","nodeType":"FunctionDefinition","parameters":{"id":15026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15021,"mutability":"mutable","name":"user","nameLocation":"13071:4:30","nodeType":"VariableDeclaration","scope":15030,"src":"13063:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15020,"name":"address","nodeType":"ElementaryTypeName","src":"13063:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15023,"mutability":"mutable","name":"round","nameLocation":"13085:5:30","nodeType":"VariableDeclaration","scope":15030,"src":"13077:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15022,"name":"uint256","nodeType":"ElementaryTypeName","src":"13077:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15025,"mutability":"mutable","name":"appId","nameLocation":"13100:5:30","nodeType":"VariableDeclaration","scope":15030,"src":"13092:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15024,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13092:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13062:44:30"},"returnParameters":{"id":15029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15028,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15030,"src":"13130:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15027,"name":"uint256","nodeType":"ElementaryTypeName","src":"13130:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13129:9:30"},"scope":15484,"src":"13030:109:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15031,"nodeType":"StructuredDocumentation","src":"13143:172:30","text":"@notice Gets the total score of a user for an app\n @param user The user address\n @param appId The app ID\n @return The total score of the user for the app"},"functionSelector":"3910d657","id":15040,"implemented":false,"kind":"function","modifiers":[],"name":"userAppTotalScore","nameLocation":"13327:17:30","nodeType":"FunctionDefinition","parameters":{"id":15036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15033,"mutability":"mutable","name":"user","nameLocation":"13353:4:30","nodeType":"VariableDeclaration","scope":15040,"src":"13345:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15032,"name":"address","nodeType":"ElementaryTypeName","src":"13345:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15035,"mutability":"mutable","name":"appId","nameLocation":"13367:5:30","nodeType":"VariableDeclaration","scope":15040,"src":"13359:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15034,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13359:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13344:29:30"},"returnParameters":{"id":15039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15038,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15040,"src":"13397:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15037,"name":"uint256","nodeType":"ElementaryTypeName","src":"13397:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13396:9:30"},"scope":15484,"src":"13318:88:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15041,"nodeType":"StructuredDocumentation","src":"13410:68:30","text":"@notice Checks if a user has ever interacted with a specific app"},"functionSelector":"428cce44","id":15050,"implemented":false,"kind":"function","modifiers":[],"name":"userUniqueAppInteraction","nameLocation":"13490:24:30","nodeType":"FunctionDefinition","parameters":{"id":15046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15043,"mutability":"mutable","name":"user","nameLocation":"13523:4:30","nodeType":"VariableDeclaration","scope":15050,"src":"13515:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15042,"name":"address","nodeType":"ElementaryTypeName","src":"13515:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15045,"mutability":"mutable","name":"appId","nameLocation":"13537:5:30","nodeType":"VariableDeclaration","scope":15050,"src":"13529:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15044,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13529:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13514:29:30"},"returnParameters":{"id":15049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15050,"src":"13567:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15047,"name":"bool","nodeType":"ElementaryTypeName","src":"13567:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13566:6:30"},"scope":15484,"src":"13481:92:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15051,"nodeType":"StructuredDocumentation","src":"13577:60:30","text":"@notice Gets the list of apps a user has interacted with"},"functionSelector":"a8165f86","id":15059,"implemented":false,"kind":"function","modifiers":[],"name":"userInteractedApps","nameLocation":"13649:18:30","nodeType":"FunctionDefinition","parameters":{"id":15054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15053,"mutability":"mutable","name":"user","nameLocation":"13676:4:30","nodeType":"VariableDeclaration","scope":15059,"src":"13668:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15052,"name":"address","nodeType":"ElementaryTypeName","src":"13668:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13667:14:30"},"returnParameters":{"id":15058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15057,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15059,"src":"13705:16:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":15055,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13705:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":15056,"nodeType":"ArrayTypeName","src":"13705:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"13704:18:30"},"scope":15484,"src":"13640:83:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15060,"nodeType":"StructuredDocumentation","src":"13727:121:30","text":"@notice Gets the threshold score for a user to be considered a person\n @return The threshold participation score"},"functionSelector":"315b8bd0","id":15065,"implemented":false,"kind":"function","modifiers":[],"name":"thresholdPoPScore","nameLocation":"13860:17:30","nodeType":"FunctionDefinition","parameters":{"id":15061,"nodeType":"ParameterList","parameters":[],"src":"13877:2:30"},"returnParameters":{"id":15064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15065,"src":"13903:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15062,"name":"uint256","nodeType":"ElementaryTypeName","src":"13903:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13902:9:30"},"scope":15484,"src":"13851:61:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15066,"nodeType":"StructuredDocumentation","src":"13916:97:30","text":"@notice Gets the threshold score for a user to be considered a person at a specific timepoint"},"functionSelector":"3c8c8f79","id":15073,"implemented":false,"kind":"function","modifiers":[],"name":"thresholdPoPScoreAtTimepoint","nameLocation":"14025:28:30","nodeType":"FunctionDefinition","parameters":{"id":15069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15068,"mutability":"mutable","name":"timepoint","nameLocation":"14061:9:30","nodeType":"VariableDeclaration","scope":15073,"src":"14054:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":15067,"name":"uint48","nodeType":"ElementaryTypeName","src":"14054:6:30","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14053:18:30"},"returnParameters":{"id":15072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15071,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15073,"src":"14095:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15070,"name":"uint256","nodeType":"ElementaryTypeName","src":"14095:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14094:9:30"},"scope":15484,"src":"14016:88:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15074,"nodeType":"StructuredDocumentation","src":"14108:114:30","text":"@notice Gets the number of rounds to be considered for the cumulative score\n @return The number of rounds"},"functionSelector":"664d6e9e","id":15079,"implemented":false,"kind":"function","modifiers":[],"name":"roundsForCumulativeScore","nameLocation":"14234:24:30","nodeType":"FunctionDefinition","parameters":{"id":15075,"nodeType":"ParameterList","parameters":[],"src":"14258:2:30"},"returnParameters":{"id":15078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15077,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15079,"src":"14284:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15076,"name":"uint256","nodeType":"ElementaryTypeName","src":"14284:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14283:9:30"},"scope":15484,"src":"14225:68:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15080,"nodeType":"StructuredDocumentation","src":"14297:175:30","text":"@notice Gets the security multiplier for an app security\n @param security The app security level (LOW, MEDIUM, HIGH)\n @return The security multiplier for the app"},"functionSelector":"3e420ce3","id":15088,"implemented":false,"kind":"function","modifiers":[],"name":"securityMultiplier","nameLocation":"14484:18:30","nodeType":"FunctionDefinition","parameters":{"id":15084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15083,"mutability":"mutable","name":"security","nameLocation":"14530:8:30","nodeType":"VariableDeclaration","scope":15088,"src":"14503:35:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"},"typeName":{"id":15082,"nodeType":"UserDefinedTypeName","pathNode":{"id":15081,"name":"PassportTypes.APP_SECURITY","nameLocations":["14503:13:30","14517:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":19455,"src":"14503:26:30"},"referencedDeclaration":19455,"src":"14503:26:30","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}},"visibility":"internal"}],"src":"14502:37:30"},"returnParameters":{"id":15087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15086,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15088,"src":"14563:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15085,"name":"uint256","nodeType":"ElementaryTypeName","src":"14563:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14562:9:30"},"scope":15484,"src":"14475:97:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15089,"nodeType":"StructuredDocumentation","src":"14576:119:30","text":"@notice Gets the security level of an app\n @param appId The app ID\n @return The security level of the app"},"functionSelector":"b292864a","id":15097,"implemented":false,"kind":"function","modifiers":[],"name":"appSecurity","nameLocation":"14707:11:30","nodeType":"FunctionDefinition","parameters":{"id":15092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15091,"mutability":"mutable","name":"appId","nameLocation":"14727:5:30","nodeType":"VariableDeclaration","scope":15097,"src":"14719:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15090,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14719:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14718:15:30"},"returnParameters":{"id":15096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15097,"src":"14757:26:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"},"typeName":{"id":15094,"nodeType":"UserDefinedTypeName","pathNode":{"id":15093,"name":"PassportTypes.APP_SECURITY","nameLocations":["14757:13:30","14771:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":19455,"src":"14757:26:30"},"referencedDeclaration":19455,"src":"14757:26:30","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}},"visibility":"internal"}],"src":"14756:28:30"},"scope":15484,"src":"14698:87:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15098,"nodeType":"StructuredDocumentation","src":"14789:103:30","text":"@notice Gets the minimum galaxy member level required\n @return The minimum galaxy member level"},"functionSelector":"c817dcec","id":15103,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumGalaxyMemberLevel","nameLocation":"14904:27:30","nodeType":"FunctionDefinition","parameters":{"id":15099,"nodeType":"ParameterList","parameters":[],"src":"14931:2:30"},"returnParameters":{"id":15102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15103,"src":"14957:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15100,"name":"uint256","nodeType":"ElementaryTypeName","src":"14957:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14956:9:30"},"scope":15484,"src":"14895:71:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15104,"nodeType":"StructuredDocumentation","src":"14970:52:30","text":"@notice Returns if the specific check is enabled"},"functionSelector":"ccc3ced3","id":15112,"implemented":false,"kind":"function","modifiers":[],"name":"isCheckEnabled","nameLocation":"15034:14:30","nodeType":"FunctionDefinition","parameters":{"id":15108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15107,"mutability":"mutable","name":"check","nameLocation":"15073:5:30","nodeType":"VariableDeclaration","scope":15112,"src":"15049:29:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CheckType_$19449","typeString":"enum PassportTypes.CheckType"},"typeName":{"id":15106,"nodeType":"UserDefinedTypeName","pathNode":{"id":15105,"name":"PassportTypes.CheckType","nameLocations":["15049:13:30","15063:9:30"],"nodeType":"IdentifierPath","referencedDeclaration":19449,"src":"15049:23:30"},"referencedDeclaration":19449,"src":"15049:23:30","typeDescriptions":{"typeIdentifier":"t_enum$_CheckType_$19449","typeString":"enum PassportTypes.CheckType"}},"visibility":"internal"}],"src":"15048:31:30"},"returnParameters":{"id":15111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15112,"src":"15103:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15109,"name":"bool","nodeType":"ElementaryTypeName","src":"15103:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15102:6:30"},"scope":15484,"src":"15025:84:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15113,"nodeType":"StructuredDocumentation","src":"15113:81:30","text":"@notice Returns the signaling threshold\n @return The signaling threshold"},"functionSelector":"7fd4f54f","id":15118,"implemented":false,"kind":"function","modifiers":[],"name":"signalingThreshold","nameLocation":"15206:18:30","nodeType":"FunctionDefinition","parameters":{"id":15114,"nodeType":"ParameterList","parameters":[],"src":"15224:2:30"},"returnParameters":{"id":15117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15118,"src":"15250:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15115,"name":"uint256","nodeType":"ElementaryTypeName","src":"15250:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15249:9:30"},"scope":15484,"src":"15197:62:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15119,"nodeType":"StructuredDocumentation","src":"15263:137:30","text":"@notice Gets the total number of signals for an app\n @param app The app ID\n @return The total number of signals for the app"},"functionSelector":"3bf451a9","id":15126,"implemented":false,"kind":"function","modifiers":[],"name":"appTotalSignalsCounter","nameLocation":"15412:22:30","nodeType":"FunctionDefinition","parameters":{"id":15122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15121,"mutability":"mutable","name":"app","nameLocation":"15443:3:30","nodeType":"VariableDeclaration","scope":15126,"src":"15435:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15120,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15435:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15434:13:30"},"returnParameters":{"id":15125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15126,"src":"15471:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15123,"name":"uint256","nodeType":"ElementaryTypeName","src":"15471:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15470:9:30"},"scope":15484,"src":"15403:77:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15127,"nodeType":"StructuredDocumentation","src":"15484:52:30","text":"@notice Returns the domain for EIP-712 signature"},"functionSelector":"84b0196e","id":15145,"implemented":false,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"15548:12:30","nodeType":"FunctionDefinition","parameters":{"id":15128,"nodeType":"ParameterList","parameters":[],"src":"15560:2:30"},"returnParameters":{"id":15144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15130,"mutability":"mutable","name":"fields","nameLocation":"15612:6:30","nodeType":"VariableDeclaration","scope":15145,"src":"15605:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":15129,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15605:6:30","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":15132,"mutability":"mutable","name":"name","nameLocation":"15640:4:30","nodeType":"VariableDeclaration","scope":15145,"src":"15626:18:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15131,"name":"string","nodeType":"ElementaryTypeName","src":"15626:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15134,"mutability":"mutable","name":"signatureVersion","nameLocation":"15666:16:30","nodeType":"VariableDeclaration","scope":15145,"src":"15652:30:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15133,"name":"string","nodeType":"ElementaryTypeName","src":"15652:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15136,"mutability":"mutable","name":"chainId","nameLocation":"15698:7:30","nodeType":"VariableDeclaration","scope":15145,"src":"15690:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15135,"name":"uint256","nodeType":"ElementaryTypeName","src":"15690:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15138,"mutability":"mutable","name":"verifyingContract","nameLocation":"15721:17:30","nodeType":"VariableDeclaration","scope":15145,"src":"15713:25:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15137,"name":"address","nodeType":"ElementaryTypeName","src":"15713:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15140,"mutability":"mutable","name":"salt","nameLocation":"15754:4:30","nodeType":"VariableDeclaration","scope":15145,"src":"15746:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15139,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15746:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15143,"mutability":"mutable","name":"extensions","nameLocation":"15783:10:30","nodeType":"VariableDeclaration","scope":15145,"src":"15766:27:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15141,"name":"uint256","nodeType":"ElementaryTypeName","src":"15766:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15142,"nodeType":"ArrayTypeName","src":"15766:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"15597:202:30"},"scope":15484,"src":"15539:261:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15146,"nodeType":"StructuredDocumentation","src":"15804:137:30","text":"@notice Grants a role to a specific account\n @param role The role to grant\n @param account The account to grant the role to"},"functionSelector":"2f2ff15d","id":15153,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"15953:9:30","nodeType":"FunctionDefinition","parameters":{"id":15151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15148,"mutability":"mutable","name":"role","nameLocation":"15971:4:30","nodeType":"VariableDeclaration","scope":15153,"src":"15963:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15147,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15963:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15150,"mutability":"mutable","name":"account","nameLocation":"15985:7:30","nodeType":"VariableDeclaration","scope":15153,"src":"15977:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15149,"name":"address","nodeType":"ElementaryTypeName","src":"15977:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15962:31:30"},"returnParameters":{"id":15152,"nodeType":"ParameterList","parameters":[],"src":"16002:0:30"},"scope":15484,"src":"15944:59:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15154,"nodeType":"StructuredDocumentation","src":"16007:144:30","text":"@notice Revokes a role from a specific account\n @param role The role to revoke\n @param account The account to revoke the role from"},"functionSelector":"d547741f","id":15161,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"16163:10:30","nodeType":"FunctionDefinition","parameters":{"id":15159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15156,"mutability":"mutable","name":"role","nameLocation":"16182:4:30","nodeType":"VariableDeclaration","scope":15161,"src":"16174:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15155,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16174:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15158,"mutability":"mutable","name":"account","nameLocation":"16196:7:30","nodeType":"VariableDeclaration","scope":15161,"src":"16188:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15157,"name":"address","nodeType":"ElementaryTypeName","src":"16188:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16173:31:30"},"returnParameters":{"id":15160,"nodeType":"ParameterList","parameters":[],"src":"16213:0:30"},"scope":15484,"src":"16154:60:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15162,"nodeType":"StructuredDocumentation","src":"16218:64:30","text":"@notice Signals a user\n @param _user The user to signal"},"functionSelector":"c60ef11d","id":15167,"implemented":false,"kind":"function","modifiers":[],"name":"signalUser","nameLocation":"16294:10:30","nodeType":"FunctionDefinition","parameters":{"id":15165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15164,"mutability":"mutable","name":"_user","nameLocation":"16313:5:30","nodeType":"VariableDeclaration","scope":15167,"src":"16305:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15163,"name":"address","nodeType":"ElementaryTypeName","src":"16305:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16304:15:30"},"returnParameters":{"id":15166,"nodeType":"ParameterList","parameters":[],"src":"16328:0:30"},"scope":15484,"src":"16285:44:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15168,"nodeType":"StructuredDocumentation","src":"16333:124:30","text":"@notice Signals a user with a reason\n @param _user The user to signal\n @param reason The reason for the signal"},"functionSelector":"ce371f06","id":15175,"implemented":false,"kind":"function","modifiers":[],"name":"signalUserWithReason","nameLocation":"16469:20:30","nodeType":"FunctionDefinition","parameters":{"id":15173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15170,"mutability":"mutable","name":"_user","nameLocation":"16498:5:30","nodeType":"VariableDeclaration","scope":15175,"src":"16490:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15169,"name":"address","nodeType":"ElementaryTypeName","src":"16490:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15172,"mutability":"mutable","name":"reason","nameLocation":"16519:6:30","nodeType":"VariableDeclaration","scope":15175,"src":"16505:20:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15171,"name":"string","nodeType":"ElementaryTypeName","src":"16505:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"16489:37:30"},"returnParameters":{"id":15174,"nodeType":"ParameterList","parameters":[],"src":"16535:0:30"},"scope":15484,"src":"16460:76:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15176,"nodeType":"StructuredDocumentation","src":"16540:107:30","text":"@notice Assigns a signaler to an app\n @param app The app ID\n @param user The signaler address"},"functionSelector":"26b320ab","id":15183,"implemented":false,"kind":"function","modifiers":[],"name":"assignSignalerToApp","nameLocation":"16659:19:30","nodeType":"FunctionDefinition","parameters":{"id":15181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15178,"mutability":"mutable","name":"app","nameLocation":"16687:3:30","nodeType":"VariableDeclaration","scope":15183,"src":"16679:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15177,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16679:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15180,"mutability":"mutable","name":"user","nameLocation":"16700:4:30","nodeType":"VariableDeclaration","scope":15183,"src":"16692:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15179,"name":"address","nodeType":"ElementaryTypeName","src":"16692:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16678:27:30"},"returnParameters":{"id":15182,"nodeType":"ParameterList","parameters":[],"src":"16714:0:30"},"scope":15484,"src":"16650:65:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15184,"nodeType":"StructuredDocumentation","src":"16719:81:30","text":"@notice Removes a signaler from an app\n @param user The signaler address"},"functionSelector":"dc8debb0","id":15189,"implemented":false,"kind":"function","modifiers":[],"name":"removeSignalerFromApp","nameLocation":"16812:21:30","nodeType":"FunctionDefinition","parameters":{"id":15187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15186,"mutability":"mutable","name":"user","nameLocation":"16842:4:30","nodeType":"VariableDeclaration","scope":15189,"src":"16834:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15185,"name":"address","nodeType":"ElementaryTypeName","src":"16834:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16833:14:30"},"returnParameters":{"id":15188,"nodeType":"ParameterList","parameters":[],"src":"16856:0:30"},"scope":15484,"src":"16803:54:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15190,"nodeType":"StructuredDocumentation","src":"16861:152:30","text":"@notice Resets the signals of a user with a given reason\n @param user The user address\n @param reason The reason for resetting the signals"},"functionSelector":"1ee76323","id":15197,"implemented":false,"kind":"function","modifiers":[],"name":"resetUserSignalsWithReason","nameLocation":"17025:26:30","nodeType":"FunctionDefinition","parameters":{"id":15195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15192,"mutability":"mutable","name":"user","nameLocation":"17060:4:30","nodeType":"VariableDeclaration","scope":15197,"src":"17052:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15191,"name":"address","nodeType":"ElementaryTypeName","src":"17052:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15194,"mutability":"mutable","name":"reason","nameLocation":"17080:6:30","nodeType":"VariableDeclaration","scope":15197,"src":"17066:20:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15193,"name":"string","nodeType":"ElementaryTypeName","src":"17066:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17051:36:30"},"returnParameters":{"id":15196,"nodeType":"ParameterList","parameters":[],"src":"17096:0:30"},"scope":15484,"src":"17016:81:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15198,"nodeType":"StructuredDocumentation","src":"17101:98:30","text":"@notice Gets the version of the contract\n @return The version of the contract as a string"},"functionSelector":"54fd4d50","id":15203,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"17211:7:30","nodeType":"FunctionDefinition","parameters":{"id":15199,"nodeType":"ParameterList","parameters":[],"src":"17218:2:30"},"returnParameters":{"id":15202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15201,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15203,"src":"17244:13:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15200,"name":"string","nodeType":"ElementaryTypeName","src":"17244:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17243:15:30"},"scope":15484,"src":"17202:57:30","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":15204,"nodeType":"StructuredDocumentation","src":"17263:83:30","text":"@notice Returns the current block number\n @return The current block number"},"functionSelector":"91ddadf4","id":15209,"implemented":false,"kind":"function","modifiers":[],"name":"clock","nameLocation":"17358:5:30","nodeType":"FunctionDefinition","parameters":{"id":15205,"nodeType":"ParameterList","parameters":[],"src":"17363:2:30"},"returnParameters":{"id":15208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15207,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15209,"src":"17389:6:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":15206,"name":"uint48","nodeType":"ElementaryTypeName","src":"17389:6:30","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17388:8:30"},"scope":15484,"src":"17349:48:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15210,"nodeType":"StructuredDocumentation","src":"17401:92:30","text":"@notice Returns the clock mode for the contract\n @return The clock mode as a string"},"functionSelector":"4bf5d7e9","id":15215,"implemented":false,"kind":"function","modifiers":[],"name":"CLOCK_MODE","nameLocation":"17505:10:30","nodeType":"FunctionDefinition","parameters":{"id":15211,"nodeType":"ParameterList","parameters":[],"src":"17515:2:30"},"returnParameters":{"id":15214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15215,"src":"17541:13:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15212,"name":"string","nodeType":"ElementaryTypeName","src":"17541:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17540:15:30"},"scope":15484,"src":"17496:60:30","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":15216,"nodeType":"StructuredDocumentation","src":"17560:91:30","text":"@notice Sets the signaling threshold\n @param threshold The new signaling threshold"},"functionSelector":"ebd695c3","id":15221,"implemented":false,"kind":"function","modifiers":[],"name":"setSignalingThreshold","nameLocation":"17663:21:30","nodeType":"FunctionDefinition","parameters":{"id":15219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15218,"mutability":"mutable","name":"threshold","nameLocation":"17693:9:30","nodeType":"VariableDeclaration","scope":15221,"src":"17685:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15217,"name":"uint256","nodeType":"ElementaryTypeName","src":"17685:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17684:19:30"},"returnParameters":{"id":15220,"nodeType":"ParameterList","parameters":[],"src":"17712:0:30"},"scope":15484,"src":"17654:59:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15222,"nodeType":"StructuredDocumentation","src":"17717:159:30","text":"@notice Sets the security multiplier for an app security level\n @param security The app security level\n @param multiplier The security multiplier"},"functionSelector":"9f14e0e2","id":15230,"implemented":false,"kind":"function","modifiers":[],"name":"setSecurityMultiplier","nameLocation":"17888:21:30","nodeType":"FunctionDefinition","parameters":{"id":15228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15225,"mutability":"mutable","name":"security","nameLocation":"17937:8:30","nodeType":"VariableDeclaration","scope":15230,"src":"17910:35:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"},"typeName":{"id":15224,"nodeType":"UserDefinedTypeName","pathNode":{"id":15223,"name":"PassportTypes.APP_SECURITY","nameLocations":["17910:13:30","17924:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":19455,"src":"17910:26:30"},"referencedDeclaration":19455,"src":"17910:26:30","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}},"visibility":"internal"},{"constant":false,"id":15227,"mutability":"mutable","name":"multiplier","nameLocation":"17955:10:30","nodeType":"VariableDeclaration","scope":15230,"src":"17947:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15226,"name":"uint256","nodeType":"ElementaryTypeName","src":"17947:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17909:57:30"},"returnParameters":{"id":15229,"nodeType":"ParameterList","parameters":[],"src":"17975:0:30"},"scope":15484,"src":"17879:97:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15231,"nodeType":"StructuredDocumentation","src":"17980:129:30","text":"@notice Sets the app security level for a specific app\n @param appId The app ID\n @param security The security level"},"functionSelector":"0e668aac","id":15239,"implemented":false,"kind":"function","modifiers":[],"name":"setAppSecurity","nameLocation":"18121:14:30","nodeType":"FunctionDefinition","parameters":{"id":15237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15233,"mutability":"mutable","name":"appId","nameLocation":"18144:5:30","nodeType":"VariableDeclaration","scope":15239,"src":"18136:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15232,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18136:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15236,"mutability":"mutable","name":"security","nameLocation":"18178:8:30","nodeType":"VariableDeclaration","scope":15239,"src":"18151:35:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"},"typeName":{"id":15235,"nodeType":"UserDefinedTypeName","pathNode":{"id":15234,"name":"PassportTypes.APP_SECURITY","nameLocations":["18151:13:30","18165:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":19455,"src":"18151:26:30"},"referencedDeclaration":19455,"src":"18151:26:30","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}},"visibility":"internal"}],"src":"18135:52:30"},"returnParameters":{"id":15238,"nodeType":"ParameterList","parameters":[],"src":"18196:0:30"},"scope":15484,"src":"18112:85:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15240,"nodeType":"StructuredDocumentation","src":"18201:116:30","text":"@notice Sets the threshold score for a user to be considered a person\n @param threshold The threshold score"},"functionSelector":"a26596de","id":15245,"implemented":false,"kind":"function","modifiers":[],"name":"setThresholdPoPScore","nameLocation":"18329:20:30","nodeType":"FunctionDefinition","parameters":{"id":15243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15242,"mutability":"mutable","name":"threshold","nameLocation":"18358:9:30","nodeType":"VariableDeclaration","scope":15245,"src":"18350:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":15241,"name":"uint208","nodeType":"ElementaryTypeName","src":"18350:7:30","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"18349:19:30"},"returnParameters":{"id":15244,"nodeType":"ParameterList","parameters":[],"src":"18377:0:30"},"scope":15484,"src":"18320:58:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15246,"nodeType":"StructuredDocumentation","src":"18382:123:30","text":"@notice Sets the number of rounds to consider for cumulative score calculation\n @param rounds The number of rounds"},"functionSelector":"bb004e93","id":15251,"implemented":false,"kind":"function","modifiers":[],"name":"setRoundsForCumulativeScore","nameLocation":"18517:27:30","nodeType":"FunctionDefinition","parameters":{"id":15249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15248,"mutability":"mutable","name":"rounds","nameLocation":"18553:6:30","nodeType":"VariableDeclaration","scope":15251,"src":"18545:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15247,"name":"uint256","nodeType":"ElementaryTypeName","src":"18545:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18544:16:30"},"returnParameters":{"id":15250,"nodeType":"ParameterList","parameters":[],"src":"18569:0:30"},"scope":15484,"src":"18508:62:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15252,"nodeType":"StructuredDocumentation","src":"18574:99:30","text":"@notice Sets the decay rate for exponential decay scoring\n @param decayRate The decay rate"},"functionSelector":"04e7e0b9","id":15257,"implemented":false,"kind":"function","modifiers":[],"name":"setDecayRate","nameLocation":"18685:12:30","nodeType":"FunctionDefinition","parameters":{"id":15255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15254,"mutability":"mutable","name":"decayRate","nameLocation":"18706:9:30","nodeType":"VariableDeclaration","scope":15257,"src":"18698:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15253,"name":"uint256","nodeType":"ElementaryTypeName","src":"18698:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18697:19:30"},"returnParameters":{"id":15256,"nodeType":"ParameterList","parameters":[],"src":"18725:0:30"},"scope":15484,"src":"18676:50:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15258,"nodeType":"StructuredDocumentation","src":"18730:105:30","text":"@notice Sets the X2EarnApps contract address\n @param _x2EarnApps The X2EarnApps contract address"},"functionSelector":"40a6fc0b","id":15264,"implemented":false,"kind":"function","modifiers":[],"name":"setX2EarnApps","nameLocation":"18847:13:30","nodeType":"FunctionDefinition","parameters":{"id":15262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15261,"mutability":"mutable","name":"_x2EarnApps","nameLocation":"18873:11:30","nodeType":"VariableDeclaration","scope":15264,"src":"18861:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"},"typeName":{"id":15260,"nodeType":"UserDefinedTypeName","pathNode":{"id":15259,"name":"IX2EarnApps","nameLocations":["18861:11:30"],"nodeType":"IdentifierPath","referencedDeclaration":16381,"src":"18861:11:30"},"referencedDeclaration":16381,"src":"18861:11:30","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"}},"visibility":"internal"}],"src":"18860:25:30"},"returnParameters":{"id":15263,"nodeType":"ParameterList","parameters":[],"src":"18894:0:30"},"scope":15484,"src":"18838:57:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15265,"nodeType":"StructuredDocumentation","src":"18899:125:30","text":"@notice Sets the xAllocationVoting contract address\n @param xAllocationVoting The xAllocationVoting contract address"},"functionSelector":"3d47fe94","id":15271,"implemented":false,"kind":"function","modifiers":[],"name":"setXAllocationVoting","nameLocation":"19036:20:30","nodeType":"FunctionDefinition","parameters":{"id":15269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15268,"mutability":"mutable","name":"xAllocationVoting","nameLocation":"19084:17:30","nodeType":"VariableDeclaration","scope":15271,"src":"19057:44:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"},"typeName":{"id":15267,"nodeType":"UserDefinedTypeName","pathNode":{"id":15266,"name":"IXAllocationVotingGovernor","nameLocations":["19057:26:30"],"nodeType":"IdentifierPath","referencedDeclaration":17346,"src":"19057:26:30"},"referencedDeclaration":17346,"src":"19057:26:30","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"visibility":"internal"}],"src":"19056:46:30"},"returnParameters":{"id":15270,"nodeType":"ParameterList","parameters":[],"src":"19111:0:30"},"scope":15484,"src":"19027:85:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15272,"nodeType":"StructuredDocumentation","src":"19116:439:30","text":"@notice Link an account (which will become an entity) to a passport (an address that is not an enitity)\n After linking, the scores of the enitity will be stored to the linked account (passport)\n Balance is not transferred and the entity will not be able to vote after linking.\n @param entity The entity's address\n @param deadline The deadline for the signature\n @param signature The signature of the delegation"},"functionSelector":"c791e937","id":15281,"implemented":false,"kind":"function","modifiers":[],"name":"linkEntityToPassportWithSignature","nameLocation":"19567:33:30","nodeType":"FunctionDefinition","parameters":{"id":15279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15274,"mutability":"mutable","name":"entity","nameLocation":"19609:6:30","nodeType":"VariableDeclaration","scope":15281,"src":"19601:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15273,"name":"address","nodeType":"ElementaryTypeName","src":"19601:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15276,"mutability":"mutable","name":"deadline","nameLocation":"19625:8:30","nodeType":"VariableDeclaration","scope":15281,"src":"19617:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15275,"name":"uint256","nodeType":"ElementaryTypeName","src":"19617:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15278,"mutability":"mutable","name":"signature","nameLocation":"19648:9:30","nodeType":"VariableDeclaration","scope":15281,"src":"19635:22:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15277,"name":"bytes","nodeType":"ElementaryTypeName","src":"19635:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19600:58:30"},"returnParameters":{"id":15280,"nodeType":"ParameterList","parameters":[],"src":"19667:0:30"},"scope":15484,"src":"19558:110:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15282,"nodeType":"StructuredDocumentation","src":"19672:341:30","text":"@notice Link an account (which will become an entity) to a passport (an address that is not an enitity)\n After linking, the scores of the enitity will be stored to the linked account (passport)\n Balance is not transferred and the entity will not be able to vote after linking.\n @dev The passport must accept the delegation"},"functionSelector":"e0b23db4","id":15287,"implemented":false,"kind":"function","modifiers":[],"name":"linkEntityToPassport","nameLocation":"20025:20:30","nodeType":"FunctionDefinition","parameters":{"id":15285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15284,"mutability":"mutable","name":"passport","nameLocation":"20054:8:30","nodeType":"VariableDeclaration","scope":15287,"src":"20046:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15283,"name":"address","nodeType":"ElementaryTypeName","src":"20046:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20045:18:30"},"returnParameters":{"id":15286,"nodeType":"ParameterList","parameters":[],"src":"20072:0:30"},"scope":15484,"src":"20016:57:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15288,"nodeType":"StructuredDocumentation","src":"20077:96:30","text":"@notice Allow the passport to accept the delegation\n @param entity - the entity address"},"functionSelector":"d1143f3a","id":15293,"implemented":false,"kind":"function","modifiers":[],"name":"acceptEntityLink","nameLocation":"20185:16:30","nodeType":"FunctionDefinition","parameters":{"id":15291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15290,"mutability":"mutable","name":"entity","nameLocation":"20210:6:30","nodeType":"VariableDeclaration","scope":15293,"src":"20202:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15289,"name":"address","nodeType":"ElementaryTypeName","src":"20202:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20201:16:30"},"returnParameters":{"id":15292,"nodeType":"ParameterList","parameters":[],"src":"20226:0:30"},"scope":15484,"src":"20176:51:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15294,"nodeType":"StructuredDocumentation","src":"20231:115:30","text":"@notice Deny an incoming pending entity link to the sender's passport.\n @param entity - the entity address"},"functionSelector":"1332de46","id":15299,"implemented":false,"kind":"function","modifiers":[],"name":"denyIncomingPendingEntityLink","nameLocation":"20358:29:30","nodeType":"FunctionDefinition","parameters":{"id":15297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15296,"mutability":"mutable","name":"entity","nameLocation":"20396:6:30","nodeType":"VariableDeclaration","scope":15299,"src":"20388:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15295,"name":"address","nodeType":"ElementaryTypeName","src":"20388:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20387:16:30"},"returnParameters":{"id":15298,"nodeType":"ParameterList","parameters":[],"src":"20412:0:30"},"scope":15484,"src":"20349:64:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15300,"nodeType":"StructuredDocumentation","src":"20417:67:30","text":"@notice Cancel an outgoing pending entity link from the sender."},"functionSelector":"15b75cf0","id":15303,"implemented":false,"kind":"function","modifiers":[],"name":"cancelOutgoingPendingEntityLink","nameLocation":"20496:31:30","nodeType":"FunctionDefinition","parameters":{"id":15301,"nodeType":"ParameterList","parameters":[],"src":"20527:2:30"},"returnParameters":{"id":15302,"nodeType":"ParameterList","parameters":[],"src":"20538:0:30"},"scope":15484,"src":"20487:52:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15304,"nodeType":"StructuredDocumentation","src":"20543:96:30","text":"@notice Remove the linked enitity from the passport\n @param entity - the entity address"},"functionSelector":"0070f93d","id":15309,"implemented":false,"kind":"function","modifiers":[],"name":"removeEntityLink","nameLocation":"20651:16:30","nodeType":"FunctionDefinition","parameters":{"id":15307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15306,"mutability":"mutable","name":"entity","nameLocation":"20676:6:30","nodeType":"VariableDeclaration","scope":15309,"src":"20668:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15305,"name":"address","nodeType":"ElementaryTypeName","src":"20668:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20667:16:30"},"returnParameters":{"id":15308,"nodeType":"ParameterList","parameters":[],"src":"20692:0:30"},"scope":15484,"src":"20642:51:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15310,"nodeType":"StructuredDocumentation","src":"20697:143:30","text":"@notice Registers an action for a user\n @param user - the user that performed the action\n @param appId - the app id of the action"},"functionSelector":"b7af0690","id":15317,"implemented":false,"kind":"function","modifiers":[],"name":"registerAction","nameLocation":"20852:14:30","nodeType":"FunctionDefinition","parameters":{"id":15315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15312,"mutability":"mutable","name":"user","nameLocation":"20875:4:30","nodeType":"VariableDeclaration","scope":15317,"src":"20867:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15311,"name":"address","nodeType":"ElementaryTypeName","src":"20867:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15314,"mutability":"mutable","name":"appId","nameLocation":"20889:5:30","nodeType":"VariableDeclaration","scope":15317,"src":"20881:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15313,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20881:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20866:29:30"},"returnParameters":{"id":15316,"nodeType":"ParameterList","parameters":[],"src":"20904:0:30"},"scope":15484,"src":"20843:62:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15318,"nodeType":"StructuredDocumentation","src":"20909:202:30","text":"@notice Registers an action for a user in a round\n @param user - the user that performed the action\n @param appId - the app id of the action\n @param round - the round id of the action"},"functionSelector":"5801b70f","id":15327,"implemented":false,"kind":"function","modifiers":[],"name":"registerActionForRound","nameLocation":"21123:22:30","nodeType":"FunctionDefinition","parameters":{"id":15325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15320,"mutability":"mutable","name":"user","nameLocation":"21154:4:30","nodeType":"VariableDeclaration","scope":15327,"src":"21146:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15319,"name":"address","nodeType":"ElementaryTypeName","src":"21146:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15322,"mutability":"mutable","name":"appId","nameLocation":"21168:5:30","nodeType":"VariableDeclaration","scope":15327,"src":"21160:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21160:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15324,"mutability":"mutable","name":"round","nameLocation":"21183:5:30","nodeType":"VariableDeclaration","scope":15327,"src":"21175:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15323,"name":"uint256","nodeType":"ElementaryTypeName","src":"21175:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21145:44:30"},"returnParameters":{"id":15326,"nodeType":"ParameterList","parameters":[],"src":"21198:0:30"},"scope":15484,"src":"21114:85:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15328,"nodeType":"StructuredDocumentation","src":"21203:109:30","text":"@notice Gets the threshold percentage of blacklisted entities for a passport to be considered blacklisted"},"functionSelector":"5ce33093","id":15333,"implemented":false,"kind":"function","modifiers":[],"name":"blacklistThreshold","nameLocation":"21324:18:30","nodeType":"FunctionDefinition","parameters":{"id":15329,"nodeType":"ParameterList","parameters":[],"src":"21342:2:30"},"returnParameters":{"id":15332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15331,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15333,"src":"21368:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15330,"name":"uint256","nodeType":"ElementaryTypeName","src":"21368:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21367:9:30"},"scope":15484,"src":"21315:62:30","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b5dadb17","id":15338,"implemented":false,"kind":"function","modifiers":[],"name":"whitelistThreshold","nameLocation":"21501:18:30","nodeType":"FunctionDefinition","parameters":{"id":15334,"nodeType":"ParameterList","parameters":[],"src":"21519:2:30"},"returnParameters":{"id":15337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15338,"src":"21545:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15335,"name":"uint256","nodeType":"ElementaryTypeName","src":"21545:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21544:9:30"},"scope":15484,"src":"21492:62:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15339,"nodeType":"StructuredDocumentation","src":"21558:63:30","text":"@notice Returns the maximum number of entities per passport"},"functionSelector":"4f69de08","id":15344,"implemented":false,"kind":"function","modifiers":[],"name":"maxEntitiesPerPassport","nameLocation":"21633:22:30","nodeType":"FunctionDefinition","parameters":{"id":15340,"nodeType":"ParameterList","parameters":[],"src":"21655:2:30"},"returnParameters":{"id":15343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15342,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15344,"src":"21681:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15341,"name":"uint256","nodeType":"ElementaryTypeName","src":"21681:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21680:9:30"},"scope":15484,"src":"21624:66:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15345,"nodeType":"StructuredDocumentation","src":"21694:56:30","text":"@notice Gets the decay rate for the cumulative score"},"functionSelector":"a9c1f2f1","id":15350,"implemented":false,"kind":"function","modifiers":[],"name":"decayRate","nameLocation":"21762:9:30","nodeType":"FunctionDefinition","parameters":{"id":15346,"nodeType":"ParameterList","parameters":[],"src":"21771:2:30"},"returnParameters":{"id":15349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15350,"src":"21797:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15347,"name":"uint256","nodeType":"ElementaryTypeName","src":"21797:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21796:9:30"},"scope":15484,"src":"21753:53:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15351,"nodeType":"StructuredDocumentation","src":"21810:74:30","text":"@notice Gets the minimum galaxy member level to be considered a person"},"functionSelector":"9687f511","id":15356,"implemented":false,"kind":"function","modifiers":[],"name":"minimumGalaxyMemberLevel","nameLocation":"21896:24:30","nodeType":"FunctionDefinition","parameters":{"id":15352,"nodeType":"ParameterList","parameters":[],"src":"21920:2:30"},"returnParameters":{"id":15355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15354,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15356,"src":"21946:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15353,"name":"uint256","nodeType":"ElementaryTypeName","src":"21946:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21945:9:30"},"scope":15484,"src":"21887:68:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15357,"nodeType":"StructuredDocumentation","src":"21959:109:30","text":"@notice Sets the threshold percentage of blacklisted entities for a passport to be considered blacklisted"},"functionSelector":"453b8b07","id":15362,"implemented":false,"kind":"function","modifiers":[],"name":"setBlacklistThreshold","nameLocation":"22080:21:30","nodeType":"FunctionDefinition","parameters":{"id":15360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15359,"mutability":"mutable","name":"_threshold","nameLocation":"22110:10:30","nodeType":"VariableDeclaration","scope":15362,"src":"22102:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15358,"name":"uint256","nodeType":"ElementaryTypeName","src":"22102:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22101:20:30"},"returnParameters":{"id":15361,"nodeType":"ParameterList","parameters":[],"src":"22130:0:30"},"scope":15484,"src":"22071:60:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15363,"nodeType":"StructuredDocumentation","src":"22135:109:30","text":"@notice Sets the threshold percentage of whitelisted entities for a passport to be considered whitelisted"},"functionSelector":"97d88868","id":15368,"implemented":false,"kind":"function","modifiers":[],"name":"setWhitelistThreshold","nameLocation":"22256:21:30","nodeType":"FunctionDefinition","parameters":{"id":15366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15365,"mutability":"mutable","name":"_threshold","nameLocation":"22286:10:30","nodeType":"VariableDeclaration","scope":15368,"src":"22278:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15364,"name":"uint256","nodeType":"ElementaryTypeName","src":"22278:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22277:20:30"},"returnParameters":{"id":15367,"nodeType":"ParameterList","parameters":[],"src":"22306:0:30"},"scope":15484,"src":"22247:60:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15369,"nodeType":"StructuredDocumentation","src":"22311:138:30","text":"@notice Sets the maximum number of entities that can be linked to a passport\n @param maxEntities - the maximum number of entities"},"functionSelector":"d2a98f8b","id":15374,"implemented":false,"kind":"function","modifiers":[],"name":"setMaxEntitiesPerPassport","nameLocation":"22461:25:30","nodeType":"FunctionDefinition","parameters":{"id":15372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15371,"mutability":"mutable","name":"maxEntities","nameLocation":"22495:11:30","nodeType":"VariableDeclaration","scope":15374,"src":"22487:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15370,"name":"uint256","nodeType":"ElementaryTypeName","src":"22487:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22486:21:30"},"returnParameters":{"id":15373,"nodeType":"ParameterList","parameters":[],"src":"22516:0:30"},"scope":15484,"src":"22452:65:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15375,"nodeType":"StructuredDocumentation","src":"22521:101:30","text":"@notice Delegate the personhood to another address\n @param delegatee - the delegatee address"},"functionSelector":"49599712","id":15380,"implemented":false,"kind":"function","modifiers":[],"name":"delegatePassport","nameLocation":"22634:16:30","nodeType":"FunctionDefinition","parameters":{"id":15378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15377,"mutability":"mutable","name":"delegatee","nameLocation":"22659:9:30","nodeType":"VariableDeclaration","scope":15380,"src":"22651:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15376,"name":"address","nodeType":"ElementaryTypeName","src":"22651:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22650:19:30"},"returnParameters":{"id":15379,"nodeType":"ParameterList","parameters":[],"src":"22678:0:30"},"scope":15484,"src":"22625:54:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15381,"nodeType":"StructuredDocumentation","src":"22683:103:30","text":"@notice Allow the delegatee to accept the delegation\n @param delegator - the delegator address"},"functionSelector":"b48a9634","id":15386,"implemented":false,"kind":"function","modifiers":[],"name":"acceptDelegation","nameLocation":"22798:16:30","nodeType":"FunctionDefinition","parameters":{"id":15384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15383,"mutability":"mutable","name":"delegator","nameLocation":"22823:9:30","nodeType":"VariableDeclaration","scope":15386,"src":"22815:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15382,"name":"address","nodeType":"ElementaryTypeName","src":"22815:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22814:19:30"},"returnParameters":{"id":15385,"nodeType":"ParameterList","parameters":[],"src":"22842:0:30"},"scope":15484,"src":"22789:54:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15387,"nodeType":"StructuredDocumentation","src":"22847:81:30","text":"@notice Revoke the delegation (can be done by the delegator or the delegatee)"},"functionSelector":"a4d31805","id":15390,"implemented":false,"kind":"function","modifiers":[],"name":"revokeDelegation","nameLocation":"22940:16:30","nodeType":"FunctionDefinition","parameters":{"id":15388,"nodeType":"ParameterList","parameters":[],"src":"22956:2:30"},"returnParameters":{"id":15389,"nodeType":"ParameterList","parameters":[],"src":"22967:0:30"},"scope":15484,"src":"22931:37:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15391,"nodeType":"StructuredDocumentation","src":"22972:161:30","text":"@notice Allows a delegator to deny (and remove) an incoming pending delegation.\n @param delegator - the user who is delegating to me (aka the delegator)"},"functionSelector":"2be4d14d","id":15396,"implemented":false,"kind":"function","modifiers":[],"name":"denyIncomingPendingDelegation","nameLocation":"23145:29:30","nodeType":"FunctionDefinition","parameters":{"id":15394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15393,"mutability":"mutable","name":"delegator","nameLocation":"23183:9:30","nodeType":"VariableDeclaration","scope":15396,"src":"23175:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15392,"name":"address","nodeType":"ElementaryTypeName","src":"23175:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23174:19:30"},"returnParameters":{"id":15395,"nodeType":"ParameterList","parameters":[],"src":"23202:0:30"},"scope":15484,"src":"23136:67:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15397,"nodeType":"StructuredDocumentation","src":"23207:86:30","text":"@notice Allows a delegator to cancel (and remove) the outgoing pending delegation."},"functionSelector":"36db28b3","id":15400,"implemented":false,"kind":"function","modifiers":[],"name":"cancelOutgoingPendingDelegation","nameLocation":"23305:31:30","nodeType":"FunctionDefinition","parameters":{"id":15398,"nodeType":"ParameterList","parameters":[],"src":"23336:2:30"},"returnParameters":{"id":15399,"nodeType":"ParameterList","parameters":[],"src":"23347:0:30"},"scope":15484,"src":"23296:52:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15401,"nodeType":"StructuredDocumentation","src":"23352:147:30","text":"@notice Returns the delegatee address for a delegator\n @param delegator The delegator's address\n @return The address of the delegatee"},"functionSelector":"9b4e735f","id":15408,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegatee","nameLocation":"23511:12:30","nodeType":"FunctionDefinition","parameters":{"id":15404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15403,"mutability":"mutable","name":"delegator","nameLocation":"23532:9:30","nodeType":"VariableDeclaration","scope":15408,"src":"23524:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15402,"name":"address","nodeType":"ElementaryTypeName","src":"23524:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23523:19:30"},"returnParameters":{"id":15407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15408,"src":"23566:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15405,"name":"address","nodeType":"ElementaryTypeName","src":"23566:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23565:9:30"},"scope":15484,"src":"23502:73:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15409,"nodeType":"StructuredDocumentation","src":"23579:266:30","text":"@notice Returns the incoming and outgoing pending delegations for a user\n @param user - the user address\n @return incoming The address[] memory of users that are delegating to the user.\n @return outgoing The address that the user is delegating to."},"functionSelector":"ca3f511f","id":15419,"implemented":false,"kind":"function","modifiers":[],"name":"getPendingDelegations","nameLocation":"23857:21:30","nodeType":"FunctionDefinition","parameters":{"id":15412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15411,"mutability":"mutable","name":"user","nameLocation":"23887:4:30","nodeType":"VariableDeclaration","scope":15419,"src":"23879:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15410,"name":"address","nodeType":"ElementaryTypeName","src":"23879:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23878:14:30"},"returnParameters":{"id":15418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15415,"mutability":"mutable","name":"incoming","nameLocation":"23933:8:30","nodeType":"VariableDeclaration","scope":15419,"src":"23916:25:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":15413,"name":"address","nodeType":"ElementaryTypeName","src":"23916:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15414,"nodeType":"ArrayTypeName","src":"23916:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":15417,"mutability":"mutable","name":"outgoing","nameLocation":"23951:8:30","nodeType":"VariableDeclaration","scope":15419,"src":"23943:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15416,"name":"address","nodeType":"ElementaryTypeName","src":"23943:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23915:45:30"},"scope":15484,"src":"23848:113:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15420,"nodeType":"StructuredDocumentation","src":"23965:174:30","text":"@notice Returns the delegatee address for a delegator at a specific timepoint\n @param delegator The delegator's address\n @param timepoint The timepoint to query"},"functionSelector":"bc6237ff","id":15429,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegateeInTimepoint","nameLocation":"24151:23:30","nodeType":"FunctionDefinition","parameters":{"id":15425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15422,"mutability":"mutable","name":"delegator","nameLocation":"24183:9:30","nodeType":"VariableDeclaration","scope":15429,"src":"24175:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15421,"name":"address","nodeType":"ElementaryTypeName","src":"24175:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15424,"mutability":"mutable","name":"timepoint","nameLocation":"24202:9:30","nodeType":"VariableDeclaration","scope":15429,"src":"24194:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15423,"name":"uint256","nodeType":"ElementaryTypeName","src":"24194:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24174:38:30"},"returnParameters":{"id":15428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15429,"src":"24236:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15426,"name":"address","nodeType":"ElementaryTypeName","src":"24236:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24235:9:30"},"scope":15484,"src":"24142:103:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15430,"nodeType":"StructuredDocumentation","src":"24249:147:30","text":"@notice Returns the delegator address for a delegatee\n @param delegatee The delegatee's address\n @return The address of the delegator"},"functionSelector":"a64ad595","id":15437,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegator","nameLocation":"24408:12:30","nodeType":"FunctionDefinition","parameters":{"id":15433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15432,"mutability":"mutable","name":"delegatee","nameLocation":"24429:9:30","nodeType":"VariableDeclaration","scope":15437,"src":"24421:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15431,"name":"address","nodeType":"ElementaryTypeName","src":"24421:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24420:19:30"},"returnParameters":{"id":15436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15437,"src":"24463:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15434,"name":"address","nodeType":"ElementaryTypeName","src":"24463:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24462:9:30"},"scope":15484,"src":"24399:73:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15438,"nodeType":"StructuredDocumentation","src":"24476:174:30","text":"@notice Returns the delegator address for a delegatee at a specific timepoint\n @param delegatee The delegatee's address\n @param timepoint The timepoint to query"},"functionSelector":"f9561f67","id":15447,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegatorInTimepoint","nameLocation":"24662:23:30","nodeType":"FunctionDefinition","parameters":{"id":15443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15440,"mutability":"mutable","name":"delegatee","nameLocation":"24694:9:30","nodeType":"VariableDeclaration","scope":15447,"src":"24686:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15439,"name":"address","nodeType":"ElementaryTypeName","src":"24686:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15442,"mutability":"mutable","name":"timepoint","nameLocation":"24713:9:30","nodeType":"VariableDeclaration","scope":15447,"src":"24705:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15441,"name":"uint256","nodeType":"ElementaryTypeName","src":"24705:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24685:38:30"},"returnParameters":{"id":15446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15445,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15447,"src":"24747:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15444,"name":"address","nodeType":"ElementaryTypeName","src":"24747:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24746:9:30"},"scope":15484,"src":"24653:103:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15448,"nodeType":"StructuredDocumentation","src":"24760:79:30","text":"@notice Returns if a user is a delegator\n @param user The user address"},"functionSelector":"fd8ab482","id":15455,"implemented":false,"kind":"function","modifiers":[],"name":"isDelegator","nameLocation":"24851:11:30","nodeType":"FunctionDefinition","parameters":{"id":15451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15450,"mutability":"mutable","name":"user","nameLocation":"24871:4:30","nodeType":"VariableDeclaration","scope":15455,"src":"24863:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15449,"name":"address","nodeType":"ElementaryTypeName","src":"24863:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24862:14:30"},"returnParameters":{"id":15454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15455,"src":"24900:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15452,"name":"bool","nodeType":"ElementaryTypeName","src":"24900:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24899:6:30"},"scope":15484,"src":"24842:64:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15456,"nodeType":"StructuredDocumentation","src":"24910:149:30","text":"@notice Returns if a user is a delegator at a specific timepoint\n @param user The user address\n @param timepoint The timepoint to query"},"functionSelector":"f4079c1f","id":15465,"implemented":false,"kind":"function","modifiers":[],"name":"isDelegatorInTimepoint","nameLocation":"25071:22:30","nodeType":"FunctionDefinition","parameters":{"id":15461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15458,"mutability":"mutable","name":"user","nameLocation":"25102:4:30","nodeType":"VariableDeclaration","scope":15465,"src":"25094:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15457,"name":"address","nodeType":"ElementaryTypeName","src":"25094:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15460,"mutability":"mutable","name":"timepoint","nameLocation":"25116:9:30","nodeType":"VariableDeclaration","scope":15465,"src":"25108:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15459,"name":"uint256","nodeType":"ElementaryTypeName","src":"25108:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25093:33:30"},"returnParameters":{"id":15464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15465,"src":"25150:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15462,"name":"bool","nodeType":"ElementaryTypeName","src":"25150:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25149:6:30"},"scope":15484,"src":"25062:94:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15466,"nodeType":"StructuredDocumentation","src":"25160:79:30","text":"@notice Returns if a user is a delegatee\n @param user The user address"},"functionSelector":"080abb4c","id":15473,"implemented":false,"kind":"function","modifiers":[],"name":"isDelegatee","nameLocation":"25251:11:30","nodeType":"FunctionDefinition","parameters":{"id":15469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15468,"mutability":"mutable","name":"user","nameLocation":"25271:4:30","nodeType":"VariableDeclaration","scope":15473,"src":"25263:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15467,"name":"address","nodeType":"ElementaryTypeName","src":"25263:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25262:14:30"},"returnParameters":{"id":15472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15471,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15473,"src":"25300:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15470,"name":"bool","nodeType":"ElementaryTypeName","src":"25300:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25299:6:30"},"scope":15484,"src":"25242:64:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15474,"nodeType":"StructuredDocumentation","src":"25310:149:30","text":"@notice Returns if a user is a delegatee at a specific timepoint\n @param user The user address\n @param timepoint The timepoint to query"},"functionSelector":"08b76b3a","id":15483,"implemented":false,"kind":"function","modifiers":[],"name":"isDelegateeInTimepoint","nameLocation":"25471:22:30","nodeType":"FunctionDefinition","parameters":{"id":15479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15476,"mutability":"mutable","name":"user","nameLocation":"25502:4:30","nodeType":"VariableDeclaration","scope":15483,"src":"25494:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15475,"name":"address","nodeType":"ElementaryTypeName","src":"25494:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15478,"mutability":"mutable","name":"timepoint","nameLocation":"25516:9:30","nodeType":"VariableDeclaration","scope":15483,"src":"25508:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15477,"name":"uint256","nodeType":"ElementaryTypeName","src":"25508:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25493:33:30"},"returnParameters":{"id":15482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15483,"src":"25550:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15480,"name":"bool","nodeType":"ElementaryTypeName","src":"25550:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25549:6:30"},"scope":15484,"src":"25462:94:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":15485,"src":"269:25289:30","usedErrors":[14753,14758,14763,14768,14771,14776,14781,14786,14791,14794,14797,14800,14803,14806,14809,14814,14819],"usedEvents":[14617,14622,14629,14636,14643,14656,14667,14674,14681,14688,14695,14704,14711,14718,14727,14734,14741,14748]}],"src":"32:25527:30"},"id":30},"contracts/interfaces/IX2EarnApps.sol":{"ast":{"absolutePath":"contracts/interfaces/IX2EarnApps.sol","exportedSymbols":{"EndorsementUtils":[22803],"IStargateNFT":[18909],"IX2EarnApps":[16381],"IX2EarnCreator":[16494],"IX2EarnRewardsPool":[16819],"IXAllocationVotingGovernor":[17346],"X2EarnAppsDataTypes":[17369],"X2EarnAppsStorageTypes":[23070]},"id":16382,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":15486,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:31"},{"absolutePath":"contracts/libraries/X2EarnAppsDataTypes.sol","file":"../libraries/X2EarnAppsDataTypes.sol","id":15488,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16382,"sourceUnit":17370,"src":"57:75:31","symbolAliases":[{"foreign":{"id":15487,"name":"X2EarnAppsDataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17369,"src":"66:19:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol","file":"../x-2-earn-apps/libraries/EndorsementUtils.sol","id":15490,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16382,"sourceUnit":22804,"src":"133:83:31","symbolAliases":[{"foreign":{"id":15489,"name":"EndorsementUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22803,"src":"142:16:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol","file":"../x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol","id":15492,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16382,"sourceUnit":23071,"src":"217:95:31","symbolAliases":[{"foreign":{"id":15491,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"226:22:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IX2EarnCreator.sol","file":"./IX2EarnCreator.sol","id":15494,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16382,"sourceUnit":16495,"src":"313:54:31","symbolAliases":[{"foreign":{"id":15493,"name":"IX2EarnCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16494,"src":"322:14:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IXAllocationVotingGovernor.sol","file":"./IXAllocationVotingGovernor.sol","id":15496,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16382,"sourceUnit":17347,"src":"368:78:31","symbolAliases":[{"foreign":{"id":15495,"name":"IXAllocationVotingGovernor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17346,"src":"377:26:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IX2EarnRewardsPool.sol","file":"./IX2EarnRewardsPool.sol","id":15498,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16382,"sourceUnit":16820,"src":"447:62:31","symbolAliases":[{"foreign":{"id":15497,"name":"IX2EarnRewardsPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16819,"src":"456:18:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/interfaces/IStargateNFT.sol","file":"../mocks/Stargate/interfaces/IStargateNFT.sol","id":15500,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16382,"sourceUnit":18910,"src":"510:77:31","symbolAliases":[{"foreign":{"id":15499,"name":"IStargateNFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18909,"src":"519:12:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IX2EarnApps","contractDependencies":[],"contractKind":"interface","documentation":{"id":15501,"nodeType":"StructuredDocumentation","src":"589:212:31","text":" @title IX2EarnApps\n @notice Interface for the X2EarnApps contract.\n @dev The contract inheriting this interface should be able to manage the x2earn apps and their Eligibility for allocation voting."},"fullyImplemented":false,"id":16381,"linearizedBaseContracts":[16381],"name":"IX2EarnApps","nameLocation":"812:11:31","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":15502,"nodeType":"StructuredDocumentation","src":"828:55:31","text":" @dev The clock was incorrectly modified."},"errorSelector":"6ff07140","id":15504,"name":"ERC6372InconsistentClock","nameLocation":"892:24:31","nodeType":"ErrorDefinition","parameters":{"id":15503,"nodeType":"ParameterList","parameters":[],"src":"916:2:31"},"src":"886:33:31"},{"documentation":{"id":15505,"nodeType":"StructuredDocumentation","src":"923:46:31","text":" @dev The `appId` doesn't exist."},"errorSelector":"0c7ac578","id":15509,"name":"X2EarnNonexistentApp","nameLocation":"978:20:31","nodeType":"ErrorDefinition","parameters":{"id":15508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15507,"mutability":"mutable","name":"appId","nameLocation":"1007:5:31","nodeType":"VariableDeclaration","scope":15509,"src":"999:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15506,"name":"bytes32","nodeType":"ElementaryTypeName","src":"999:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"998:15:31"},"src":"972:42:31"},{"documentation":{"id":15510,"nodeType":"StructuredDocumentation","src":"1018:57:31","text":" @dev The creator of the app doesn't exist."},"errorSelector":"23e85272","id":15516,"name":"X2EarnNonexistentCreator","nameLocation":"1084:24:31","nodeType":"ErrorDefinition","parameters":{"id":15515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15512,"mutability":"mutable","name":"appId","nameLocation":"1117:5:31","nodeType":"VariableDeclaration","scope":15516,"src":"1109:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15511,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1109:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15514,"mutability":"mutable","name":"creator","nameLocation":"1132:7:31","nodeType":"VariableDeclaration","scope":15516,"src":"1124:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15513,"name":"address","nodeType":"ElementaryTypeName","src":"1124:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1108:32:31"},"src":"1078:63:31"},{"documentation":{"id":15517,"nodeType":"StructuredDocumentation","src":"1145:70:31","text":" @dev The `addr` is not valid (eg: is the ZERO ADDRESS)."},"errorSelector":"3aa06cfc","id":15521,"name":"X2EarnInvalidAddress","nameLocation":"1224:20:31","nodeType":"ErrorDefinition","parameters":{"id":15520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15519,"mutability":"mutable","name":"addr","nameLocation":"1253:4:31","nodeType":"VariableDeclaration","scope":15521,"src":"1245:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15518,"name":"address","nodeType":"ElementaryTypeName","src":"1245:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1244:14:31"},"src":"1218:41:31"},{"documentation":{"id":15522,"nodeType":"StructuredDocumentation","src":"1263:54:31","text":" @dev The caller is already an endorser."},"errorSelector":"e0d39a86","id":15524,"name":"X2EarnAlreadyEndorser","nameLocation":"1326:21:31","nodeType":"ErrorDefinition","parameters":{"id":15523,"nodeType":"ParameterList","parameters":[],"src":"1347:2:31"},"src":"1320:30:31"},{"documentation":{"id":15525,"nodeType":"StructuredDocumentation","src":"1354:52:31","text":" @dev The caller is not a node holder."},"errorSelector":"9a88246c","id":15527,"name":"X2EarnNonNodeHolder","nameLocation":"1415:19:31","nodeType":"ErrorDefinition","parameters":{"id":15526,"nodeType":"ParameterList","parameters":[],"src":"1434:2:31"},"src":"1409:28:31"},{"documentation":{"id":15528,"nodeType":"StructuredDocumentation","src":"1441:50:31","text":" @dev The caller is not an endorser."},"errorSelector":"48d2eaea","id":15530,"name":"X2EarnNonEndorser","nameLocation":"1500:17:31","nodeType":"ErrorDefinition","parameters":{"id":15529,"nodeType":"ParameterList","parameters":[],"src":"1517:2:31"},"src":"1494:26:31"},{"documentation":{"id":15531,"nodeType":"StructuredDocumentation","src":"1524:52:31","text":" @dev The `appId` is already endorsed."},"errorSelector":"bf700bb2","id":15535,"name":"X2EarnAppAlreadyEndorsed","nameLocation":"1585:24:31","nodeType":"ErrorDefinition","parameters":{"id":15534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15533,"mutability":"mutable","name":"appId","nameLocation":"1618:5:31","nodeType":"VariableDeclaration","scope":15535,"src":"1610:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15532,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1610:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1609:15:31"},"src":"1579:46:31"},{"documentation":{"id":15536,"nodeType":"StructuredDocumentation","src":"1629:69:31","text":" @dev An app with the specified `appId` already exists."},"errorSelector":"6b4fdeb3","id":15540,"name":"X2EarnAppAlreadyExists","nameLocation":"1707:22:31","nodeType":"ErrorDefinition","parameters":{"id":15539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15538,"mutability":"mutable","name":"appId","nameLocation":"1738:5:31","nodeType":"VariableDeclaration","scope":15540,"src":"1730:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15537,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1730:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1729:15:31"},"src":"1701:44:31"},{"documentation":{"id":15541,"nodeType":"StructuredDocumentation","src":"1749:97:31","text":" @dev The Vechain Node is in a cooldown period, and the action cannot be performed."},"errorSelector":"f4042205","id":15543,"name":"X2EarnNodeCooldownActive","nameLocation":"1855:24:31","nodeType":"ErrorDefinition","parameters":{"id":15542,"nodeType":"ParameterList","parameters":[],"src":"1879:2:31"},"src":"1849:33:31"},{"documentation":{"id":15544,"nodeType":"StructuredDocumentation","src":"1886:69:31","text":" @dev The user is not authorized to perform the action."},"errorSelector":"c74e099e","id":15548,"name":"X2EarnUnauthorizedUser","nameLocation":"1964:22:31","nodeType":"ErrorDefinition","parameters":{"id":15547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15546,"mutability":"mutable","name":"user","nameLocation":"1995:4:31","nodeType":"VariableDeclaration","scope":15548,"src":"1987:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15545,"name":"address","nodeType":"ElementaryTypeName","src":"1987:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1986:14:31"},"src":"1958:43:31"},{"documentation":{"id":15549,"nodeType":"StructuredDocumentation","src":"2005:68:31","text":" @dev The maximum number of creators has been reached."},"errorSelector":"c7e6e348","id":15553,"name":"X2EarnMaxCreatorsReached","nameLocation":"2082:24:31","nodeType":"ErrorDefinition","parameters":{"id":15552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15551,"mutability":"mutable","name":"appId","nameLocation":"2115:5:31","nodeType":"VariableDeclaration","scope":15553,"src":"2107:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15550,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2107:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2106:15:31"},"src":"2076:46:31"},{"documentation":{"id":15554,"nodeType":"StructuredDocumentation","src":"2126:65:31","text":" @dev The caller is already the creator of the app."},"errorSelector":"d01c4c55","id":15558,"name":"X2EarnAlreadyCreator","nameLocation":"2200:20:31","nodeType":"ErrorDefinition","parameters":{"id":15557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15556,"mutability":"mutable","name":"creator","nameLocation":"2229:7:31","nodeType":"VariableDeclaration","scope":15558,"src":"2221:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15555,"name":"address","nodeType":"ElementaryTypeName","src":"2221:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2220:17:31"},"src":"2194:44:31"},{"documentation":{"id":15559,"nodeType":"StructuredDocumentation","src":"2242:56:31","text":" @dev The caller is an unverified creator."},"errorSelector":"1223ae89","id":15563,"name":"X2EarnUnverifiedCreator","nameLocation":"2307:23:31","nodeType":"ErrorDefinition","parameters":{"id":15562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15561,"mutability":"mutable","name":"creator","nameLocation":"2339:7:31","nodeType":"VariableDeclaration","scope":15563,"src":"2331:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15560,"name":"address","nodeType":"ElementaryTypeName","src":"2331:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2330:17:31"},"src":"2301:47:31"},{"documentation":{"id":15564,"nodeType":"StructuredDocumentation","src":"2352:68:31","text":" @dev The creator NFT is already used for another app."},"errorSelector":"c615aa4e","id":15568,"name":"CreatorNFTAlreadyUsed","nameLocation":"2429:21:31","nodeType":"ErrorDefinition","parameters":{"id":15567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15566,"mutability":"mutable","name":"creator","nameLocation":"2459:7:31","nodeType":"VariableDeclaration","scope":15568,"src":"2451:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15565,"name":"address","nodeType":"ElementaryTypeName","src":"2451:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2450:17:31"},"src":"2423:45:31"},{"documentation":{"id":15569,"nodeType":"StructuredDocumentation","src":"2472:63:31","text":" @dev Invalid start index for get apps pagination"},"errorSelector":"bd6a7192","id":15571,"name":"X2EarnInvalidStartIndex","nameLocation":"2544:23:31","nodeType":"ErrorDefinition","parameters":{"id":15570,"nodeType":"ParameterList","parameters":[],"src":"2567:2:31"},"src":"2538:32:31"},{"documentation":{"id":15572,"nodeType":"StructuredDocumentation","src":"2574:140:31","text":" @notice Error indicating that an XAPP has already been included in a XAllocation Voting round and submission cant be removed."},"errorSelector":"e2cf34b7","id":15576,"name":"NodeManagementXAppAlreadyIncluded","nameLocation":"2723:33:31","nodeType":"ErrorDefinition","parameters":{"id":15575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15574,"mutability":"mutable","name":"appId","nameLocation":"2765:5:31","nodeType":"VariableDeclaration","scope":15576,"src":"2757:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15573,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2757:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2756:15:31"},"src":"2717:55:31"},{"documentation":{"id":15577,"nodeType":"StructuredDocumentation","src":"2776:60:31","text":" @dev Lookup to future votes is not available."},"errorSelector":"ecd3f81e","id":15583,"name":"ERC5805FutureLookup","nameLocation":"2845:19:31","nodeType":"ErrorDefinition","parameters":{"id":15582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15579,"mutability":"mutable","name":"timepoint","nameLocation":"2873:9:31","nodeType":"VariableDeclaration","scope":15583,"src":"2865:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15578,"name":"uint256","nodeType":"ElementaryTypeName","src":"2865:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15581,"mutability":"mutable","name":"clock","nameLocation":"2891:5:31","nodeType":"VariableDeclaration","scope":15583,"src":"2884:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":15580,"name":"uint48","nodeType":"ElementaryTypeName","src":"2884:6:31","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2864:33:31"},"src":"2839:59:31"},{"documentation":{"id":15584,"nodeType":"StructuredDocumentation","src":"2902:50:31","text":" @dev The `percentage` is not valid."},"errorSelector":"72709bbb","id":15588,"name":"X2EarnInvalidAllocationPercentage","nameLocation":"2961:33:31","nodeType":"ErrorDefinition","parameters":{"id":15587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15586,"mutability":"mutable","name":"percentage","nameLocation":"3003:10:31","nodeType":"VariableDeclaration","scope":15588,"src":"2995:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15585,"name":"uint256","nodeType":"ElementaryTypeName","src":"2995:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2994:20:31"},"src":"2955:60:31"},{"documentation":{"id":15589,"nodeType":"StructuredDocumentation","src":"3019:58:31","text":" @dev The `distributorAddress` is not valid."},"errorSelector":"becb2b1e","id":15595,"name":"X2EarnNonexistentRewardDistributor","nameLocation":"3086:34:31","nodeType":"ErrorDefinition","parameters":{"id":15594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15591,"mutability":"mutable","name":"appId","nameLocation":"3129:5:31","nodeType":"VariableDeclaration","scope":15595,"src":"3121:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15590,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3121:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15593,"mutability":"mutable","name":"distributorAddress","nameLocation":"3144:18:31","nodeType":"VariableDeclaration","scope":15595,"src":"3136:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15592,"name":"address","nodeType":"ElementaryTypeName","src":"3136:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3120:43:31"},"src":"3080:84:31"},{"documentation":{"id":15596,"nodeType":"StructuredDocumentation","src":"3168:49:31","text":" @dev The `moderator` is not valid."},"errorSelector":"b212b09c","id":15602,"name":"X2EarnNonexistentModerator","nameLocation":"3226:26:31","nodeType":"ErrorDefinition","parameters":{"id":15601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15598,"mutability":"mutable","name":"appId","nameLocation":"3261:5:31","nodeType":"VariableDeclaration","scope":15602,"src":"3253:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15597,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3253:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15600,"mutability":"mutable","name":"moderator","nameLocation":"3276:9:31","nodeType":"VariableDeclaration","scope":15602,"src":"3268:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15599,"name":"address","nodeType":"ElementaryTypeName","src":"3268:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3252:34:31"},"src":"3220:67:31"},{"documentation":{"id":15603,"nodeType":"StructuredDocumentation","src":"3291:70:31","text":" @dev The maximum number of moderators has been reached."},"errorSelector":"77ffca9f","id":15607,"name":"X2EarnMaxModeratorsReached","nameLocation":"3370:26:31","nodeType":"ErrorDefinition","parameters":{"id":15606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15605,"mutability":"mutable","name":"appId","nameLocation":"3405:5:31","nodeType":"VariableDeclaration","scope":15607,"src":"3397:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3397:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3396:15:31"},"src":"3364:48:31"},{"documentation":{"id":15608,"nodeType":"StructuredDocumentation","src":"3416:43:31","text":" @dev The app is blacklisted."},"errorSelector":"3126f1ab","id":15612,"name":"X2EarnAppBlacklisted","nameLocation":"3468:20:31","nodeType":"ErrorDefinition","parameters":{"id":15611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15610,"mutability":"mutable","name":"appId","nameLocation":"3497:5:31","nodeType":"VariableDeclaration","scope":15612,"src":"3489:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3489:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3488:15:31"},"src":"3462:42:31"},{"documentation":{"id":15613,"nodeType":"StructuredDocumentation","src":"3508:79:31","text":" @dev The maximum number of reward distributors has been reached."},"errorSelector":"3be3601b","id":15617,"name":"X2EarnMaxRewardDistributorsReached","nameLocation":"3596:34:31","nodeType":"ErrorDefinition","parameters":{"id":15616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15615,"mutability":"mutable","name":"appId","nameLocation":"3639:5:31","nodeType":"VariableDeclaration","scope":15617,"src":"3631:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15614,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3631:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3630:15:31"},"src":"3590:56:31"},{"documentation":{"id":15618,"nodeType":"StructuredDocumentation","src":"3650:68:31","text":" @dev The maximum number of managers has been reached."},"errorSelector":"8c2a4130","id":15622,"name":"X2EarnMaxManagersReached","nameLocation":"3727:24:31","nodeType":"ErrorDefinition","parameters":{"id":15621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15620,"mutability":"mutable","name":"appId","nameLocation":"3760:5:31","nodeType":"VariableDeclaration","scope":15622,"src":"3752:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15619,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3752:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3751:15:31"},"src":"3721:46:31"},{"documentation":{"id":15623,"nodeType":"StructuredDocumentation","src":"3771:70:31","text":" @dev The user has a node that cannot be used to endorse"},"errorSelector":"ba391c6c","id":15625,"name":"NodeNotAllowedToEndorse","nameLocation":"3850:23:31","nodeType":"ErrorDefinition","parameters":{"id":15624,"nodeType":"ParameterList","parameters":[],"src":"3873:2:31"},"src":"3844:32:31"},{"documentation":{"id":15626,"nodeType":"StructuredDocumentation","src":"3895:73:31","text":" @dev Endorsements are currently paused (during migration)."},"errorSelector":"7bd63419","id":15628,"name":"EndorsementsPaused","nameLocation":"3977:18:31","nodeType":"ErrorDefinition","parameters":{"id":15627,"nodeType":"ParameterList","parameters":[],"src":"3995:2:31"},"src":"3971:27:31"},{"documentation":{"id":15629,"nodeType":"StructuredDocumentation","src":"4002:87:31","text":" @dev Cooldown period not expired for the specified node-app endorsement."},"errorSelector":"564f58b3","id":15635,"name":"CooldownNotExpired","nameLocation":"4098:18:31","nodeType":"ErrorDefinition","parameters":{"id":15634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15631,"mutability":"mutable","name":"nodeId","nameLocation":"4125:6:31","nodeType":"VariableDeclaration","scope":15635,"src":"4117:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15630,"name":"uint256","nodeType":"ElementaryTypeName","src":"4117:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15633,"mutability":"mutable","name":"appId","nameLocation":"4141:5:31","nodeType":"VariableDeclaration","scope":15635,"src":"4133:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4133:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4116:31:31"},"src":"4092:56:31"},{"documentation":{"id":15636,"nodeType":"StructuredDocumentation","src":"4152:59:31","text":" @dev Exceeds maximum points allowed per app."},"errorSelector":"68615086","id":15644,"name":"ExceedsMaxPointsPerApp","nameLocation":"4220:22:31","nodeType":"ErrorDefinition","parameters":{"id":15643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15638,"mutability":"mutable","name":"appId","nameLocation":"4251:5:31","nodeType":"VariableDeclaration","scope":15644,"src":"4243:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15637,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4243:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15640,"mutability":"mutable","name":"current","nameLocation":"4266:7:31","nodeType":"VariableDeclaration","scope":15644,"src":"4258:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15639,"name":"uint256","nodeType":"ElementaryTypeName","src":"4258:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15642,"mutability":"mutable","name":"max","nameLocation":"4283:3:31","nodeType":"VariableDeclaration","scope":15644,"src":"4275:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15641,"name":"uint256","nodeType":"ElementaryTypeName","src":"4275:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4242:45:31"},"src":"4214:74:31"},{"documentation":{"id":15645,"nodeType":"StructuredDocumentation","src":"4292:80:31","text":" @dev Exceeds maximum points a single node can endorse to one app."},"errorSelector":"87b212fd","id":15653,"name":"ExceedsMaxPointsPerNode","nameLocation":"4381:23:31","nodeType":"ErrorDefinition","parameters":{"id":15652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15647,"mutability":"mutable","name":"nodeId","nameLocation":"4413:6:31","nodeType":"VariableDeclaration","scope":15653,"src":"4405:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15646,"name":"uint256","nodeType":"ElementaryTypeName","src":"4405:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15649,"mutability":"mutable","name":"appId","nameLocation":"4429:5:31","nodeType":"VariableDeclaration","scope":15653,"src":"4421:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15648,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4421:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15651,"mutability":"mutable","name":"max","nameLocation":"4444:3:31","nodeType":"VariableDeclaration","scope":15653,"src":"4436:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15650,"name":"uint256","nodeType":"ElementaryTypeName","src":"4436:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4404:44:31"},"src":"4375:74:31"},{"documentation":{"id":15654,"nodeType":"StructuredDocumentation","src":"4453:62:31","text":" @dev Node doesn't have enough available points."},"errorSelector":"133dd146","id":15662,"name":"InsufficientAvailablePoints","nameLocation":"4524:27:31","nodeType":"ErrorDefinition","parameters":{"id":15661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15656,"mutability":"mutable","name":"nodeId","nameLocation":"4560:6:31","nodeType":"VariableDeclaration","scope":15662,"src":"4552:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15655,"name":"uint256","nodeType":"ElementaryTypeName","src":"4552:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15658,"mutability":"mutable","name":"available","nameLocation":"4576:9:31","nodeType":"VariableDeclaration","scope":15662,"src":"4568:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15657,"name":"uint256","nodeType":"ElementaryTypeName","src":"4568:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15660,"mutability":"mutable","name":"requested","nameLocation":"4595:9:31","nodeType":"VariableDeclaration","scope":15662,"src":"4587:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15659,"name":"uint256","nodeType":"ElementaryTypeName","src":"4587:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4551:54:31"},"src":"4518:88:31"},{"documentation":{"id":15663,"nodeType":"StructuredDocumentation","src":"4610:51:31","text":" @dev Invalid points amount provided."},"errorSelector":"b15e3914","id":15665,"name":"InvalidPointsAmount","nameLocation":"4670:19:31","nodeType":"ErrorDefinition","parameters":{"id":15664,"nodeType":"ParameterList","parameters":[],"src":"4689:2:31"},"src":"4664:28:31"},{"anonymous":false,"documentation":{"id":15666,"nodeType":"StructuredDocumentation","src":"4696:56:31","text":" @dev Event fired when a new app is added."},"eventSelector":"181c8615e49dc4eaed218e1d225e4a34a0fb364fc70601a191573daa19d57eda","id":15676,"name":"AppAdded","nameLocation":"4761:8:31","nodeType":"EventDefinition","parameters":{"id":15675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15668,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"4786:2:31","nodeType":"VariableDeclaration","scope":15676,"src":"4770:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4770:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15670,"indexed":false,"mutability":"mutable","name":"addr","nameLocation":"4798:4:31","nodeType":"VariableDeclaration","scope":15676,"src":"4790:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15669,"name":"address","nodeType":"ElementaryTypeName","src":"4790:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15672,"indexed":false,"mutability":"mutable","name":"name","nameLocation":"4811:4:31","nodeType":"VariableDeclaration","scope":15676,"src":"4804:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15671,"name":"string","nodeType":"ElementaryTypeName","src":"4804:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15674,"indexed":false,"mutability":"mutable","name":"appAvailableForAllocationVoting","nameLocation":"4822:31:31","nodeType":"VariableDeclaration","scope":15676,"src":"4817:36:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15673,"name":"bool","nodeType":"ElementaryTypeName","src":"4817:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4769:85:31"},"src":"4755:100:31"},{"anonymous":false,"documentation":{"id":15677,"nodeType":"StructuredDocumentation","src":"4859:86:31","text":" @dev Event fired when an app Eligibility for allocation voting changes."},"eventSelector":"67a3d5f523bbd1855235e1573461f352e4f47a2e67434dac8ac4cf04be557c51","id":15683,"name":"VotingEligibilityUpdated","nameLocation":"4954:24:31","nodeType":"EventDefinition","parameters":{"id":15682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15679,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"4995:5:31","nodeType":"VariableDeclaration","scope":15683,"src":"4979:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15678,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4979:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15681,"indexed":false,"mutability":"mutable","name":"isAvailable","nameLocation":"5007:11:31","nodeType":"VariableDeclaration","scope":15683,"src":"5002:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15680,"name":"bool","nodeType":"ElementaryTypeName","src":"5002:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4978:41:31"},"src":"4948:72:31"},{"anonymous":false,"documentation":{"id":15684,"nodeType":"StructuredDocumentation","src":"5024:76:31","text":" @dev Event fired when an app is blacklisted or unblacklisted."},"eventSelector":"dcf7bb788a4c8c91f85b15fa04797101b624ce86f804c2ccc49d8474adeb90ba","id":15690,"name":"BlacklistUpdated","nameLocation":"5109:16:31","nodeType":"EventDefinition","parameters":{"id":15689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15686,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"5142:5:31","nodeType":"VariableDeclaration","scope":15690,"src":"5126:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5126:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15688,"indexed":false,"mutability":"mutable","name":"isBlacklisted","nameLocation":"5154:13:31","nodeType":"VariableDeclaration","scope":15690,"src":"5149:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15687,"name":"bool","nodeType":"ElementaryTypeName","src":"5149:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5125:43:31"},"src":"5103:66:31"},{"anonymous":false,"documentation":{"id":15691,"nodeType":"StructuredDocumentation","src":"5173:68:31","text":" @dev Event fired when the score threshold is updated."},"eventSelector":"c0d3753bc89284345726d88cd5c82025ebedac4070cdbc551a0ba27b5180a637","id":15697,"name":"EndorsementScoreThresholdUpdated","nameLocation":"5250:32:31","nodeType":"EventDefinition","parameters":{"id":15696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15693,"indexed":false,"mutability":"mutable","name":"oldThreshold","nameLocation":"5291:12:31","nodeType":"VariableDeclaration","scope":15697,"src":"5283:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15692,"name":"uint256","nodeType":"ElementaryTypeName","src":"5283:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15695,"indexed":false,"mutability":"mutable","name":"newThreshold","nameLocation":"5313:12:31","nodeType":"VariableDeclaration","scope":15697,"src":"5305:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15694,"name":"uint256","nodeType":"ElementaryTypeName","src":"5305:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5282:44:31"},"src":"5244:83:31"},{"anonymous":false,"documentation":{"id":15698,"nodeType":"StructuredDocumentation","src":"5331:79:31","text":" @dev Event fired when the admin adds a new moderator to the app."},"eventSelector":"25050ac96acd2401160d6a87fc508fb2b6e5404bbd0537ddfb451e0119a9baa7","id":15704,"name":"ModeratorAddedToApp","nameLocation":"5419:19:31","nodeType":"EventDefinition","parameters":{"id":15703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15700,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"5455:5:31","nodeType":"VariableDeclaration","scope":15704,"src":"5439:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15699,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5439:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15702,"indexed":false,"mutability":"mutable","name":"moderator","nameLocation":"5470:9:31","nodeType":"VariableDeclaration","scope":15704,"src":"5462:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15701,"name":"address","nodeType":"ElementaryTypeName","src":"5462:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5438:42:31"},"src":"5413:68:31"},{"anonymous":false,"documentation":{"id":15705,"nodeType":"StructuredDocumentation","src":"5485:80:31","text":" @dev Event fired when the admin removes a moderator from the app."},"eventSelector":"82f635984e0b60385ea0976cdf92f1e5528f83bf7b8ee457f4c6fae2dd198abb","id":15711,"name":"ModeratorRemovedFromApp","nameLocation":"5574:23:31","nodeType":"EventDefinition","parameters":{"id":15710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15707,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"5614:5:31","nodeType":"VariableDeclaration","scope":15711,"src":"5598:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15706,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5598:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15709,"indexed":false,"mutability":"mutable","name":"moderator","nameLocation":"5629:9:31","nodeType":"VariableDeclaration","scope":15711,"src":"5621:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15708,"name":"address","nodeType":"ElementaryTypeName","src":"5621:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5597:42:31"},"src":"5568:72:31"},{"anonymous":false,"documentation":{"id":15712,"nodeType":"StructuredDocumentation","src":"5644:78:31","text":" @dev Event fired when the admin removes a creator from the app."},"eventSelector":"76ddb80550f2cd4dee165bc4afcbd48ce12b9e21793a5cd49f100dc907ba2aae","id":15718,"name":"CreatorRemovedFromApp","nameLocation":"5731:21:31","nodeType":"EventDefinition","parameters":{"id":15717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15714,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"5769:5:31","nodeType":"VariableDeclaration","scope":15718,"src":"5753:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15713,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5753:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15716,"indexed":false,"mutability":"mutable","name":"creator","nameLocation":"5784:7:31","nodeType":"VariableDeclaration","scope":15718,"src":"5776:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15715,"name":"address","nodeType":"ElementaryTypeName","src":"5776:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5752:40:31"},"src":"5725:68:31"},{"anonymous":false,"documentation":{"id":15719,"nodeType":"StructuredDocumentation","src":"5797:107:31","text":" @dev Event fired when the admin adds a new creator to the app and new creator NFT is minted."},"eventSelector":"928a476639d8dad692dd208cb0c483506a16fe80d05e24390188eb9f30686866","id":15725,"name":"CreatorAddedToApp","nameLocation":"5913:17:31","nodeType":"EventDefinition","parameters":{"id":15724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15721,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"5947:5:31","nodeType":"VariableDeclaration","scope":15725,"src":"5931:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15720,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5931:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15723,"indexed":false,"mutability":"mutable","name":"creatorAddress","nameLocation":"5962:14:31","nodeType":"VariableDeclaration","scope":15725,"src":"5954:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15722,"name":"address","nodeType":"ElementaryTypeName","src":"5954:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5930:47:31"},"src":"5907:71:31"},{"anonymous":false,"documentation":{"id":15726,"nodeType":"StructuredDocumentation","src":"5982:88:31","text":" @dev Event fired when the admin adds a new reward distributor to the app."},"eventSelector":"ff61d9fea8a697c08f6ce345a762521d2e5fd7cce8e235fb4bf9337ba0c57c29","id":15732,"name":"RewardDistributorAddedToApp","nameLocation":"6079:27:31","nodeType":"EventDefinition","parameters":{"id":15731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15728,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"6123:5:31","nodeType":"VariableDeclaration","scope":15732,"src":"6107:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15727,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6107:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15730,"indexed":false,"mutability":"mutable","name":"distributorAddress","nameLocation":"6138:18:31","nodeType":"VariableDeclaration","scope":15732,"src":"6130:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15729,"name":"address","nodeType":"ElementaryTypeName","src":"6130:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6106:51:31"},"src":"6073:85:31"},{"anonymous":false,"documentation":{"id":15733,"nodeType":"StructuredDocumentation","src":"6162:89:31","text":" @dev Event fired when the admin removes a reward distributor from the app."},"eventSelector":"5d49a79e91765aff88a22b5e1ac2373c3035e839101aca1496177c0709e53b5a","id":15739,"name":"RewardDistributorRemovedFromApp","nameLocation":"6260:31:31","nodeType":"EventDefinition","parameters":{"id":15738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15735,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"6308:5:31","nodeType":"VariableDeclaration","scope":15739,"src":"6292:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15734,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6292:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15737,"indexed":false,"mutability":"mutable","name":"distributorAddress","nameLocation":"6323:18:31","nodeType":"VariableDeclaration","scope":15739,"src":"6315:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15736,"name":"address","nodeType":"ElementaryTypeName","src":"6315:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6291:51:31"},"src":"6254:89:31"},{"anonymous":false,"documentation":{"id":15740,"nodeType":"StructuredDocumentation","src":"6347:65:31","text":" @dev Event fired when the admin of an app changes."},"eventSelector":"f731532cb185ec0e4f09f397cce651bf601970ff3c051d753e42a427448c3d20","id":15748,"name":"AppAdminUpdated","nameLocation":"6421:15:31","nodeType":"EventDefinition","parameters":{"id":15747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15742,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"6453:5:31","nodeType":"VariableDeclaration","scope":15748,"src":"6437:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15741,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6437:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15744,"indexed":false,"mutability":"mutable","name":"oldAdmin","nameLocation":"6468:8:31","nodeType":"VariableDeclaration","scope":15748,"src":"6460:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15743,"name":"address","nodeType":"ElementaryTypeName","src":"6460:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15746,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"6486:8:31","nodeType":"VariableDeclaration","scope":15748,"src":"6478:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15745,"name":"address","nodeType":"ElementaryTypeName","src":"6478:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6436:59:31"},"src":"6415:81:31"},{"anonymous":false,"documentation":{"id":15749,"nodeType":"StructuredDocumentation","src":"6500:107:31","text":" @dev Event fired when the address where the x2earn app receives allocation funds is changed."},"eventSelector":"9402e8cef9f513d1d61b2df14b6521dfc70cfe4f750d10e413ef6f618b4be4f6","id":15757,"name":"TeamWalletAddressUpdated","nameLocation":"6616:24:31","nodeType":"EventDefinition","parameters":{"id":15756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15751,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"6657:5:31","nodeType":"VariableDeclaration","scope":15757,"src":"6641:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15750,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6641:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15753,"indexed":false,"mutability":"mutable","name":"oldTeamWalletAddress","nameLocation":"6672:20:31","nodeType":"VariableDeclaration","scope":15757,"src":"6664:28:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15752,"name":"address","nodeType":"ElementaryTypeName","src":"6664:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15755,"indexed":false,"mutability":"mutable","name":"newTeamWalletAddress","nameLocation":"6702:20:31","nodeType":"VariableDeclaration","scope":15757,"src":"6694:28:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15754,"name":"address","nodeType":"ElementaryTypeName","src":"6694:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6640:83:31"},"src":"6610:114:31"},{"anonymous":false,"documentation":{"id":15758,"nodeType":"StructuredDocumentation","src":"6728:76:31","text":" @dev Event fired when the metadata URI of the app is changed."},"eventSelector":"cffcc4ac44fe5b203e220bf515ab2632e760bfc04adba8ad3d88245651ba3343","id":15766,"name":"AppMetadataURIUpdated","nameLocation":"6813:21:31","nodeType":"EventDefinition","parameters":{"id":15765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15760,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"6851:5:31","nodeType":"VariableDeclaration","scope":15766,"src":"6835:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15759,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6835:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15762,"indexed":false,"mutability":"mutable","name":"oldMetadataURI","nameLocation":"6865:14:31","nodeType":"VariableDeclaration","scope":15766,"src":"6858:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15761,"name":"string","nodeType":"ElementaryTypeName","src":"6858:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15764,"indexed":false,"mutability":"mutable","name":"newMetadataURI","nameLocation":"6888:14:31","nodeType":"VariableDeclaration","scope":15766,"src":"6881:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15763,"name":"string","nodeType":"ElementaryTypeName","src":"6881:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6834:69:31"},"src":"6807:97:31"},{"anonymous":false,"documentation":{"id":15767,"nodeType":"StructuredDocumentation","src":"6908:61:31","text":" @dev Event fired when the base URI is updated."},"eventSelector":"309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1","id":15773,"name":"BaseURIUpdated","nameLocation":"6978:14:31","nodeType":"EventDefinition","parameters":{"id":15772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15769,"indexed":false,"mutability":"mutable","name":"oldBaseURI","nameLocation":"7000:10:31","nodeType":"VariableDeclaration","scope":15773,"src":"6993:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15768,"name":"string","nodeType":"ElementaryTypeName","src":"6993:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":15771,"indexed":false,"mutability":"mutable","name":"newBaseURI","nameLocation":"7019:10:31","nodeType":"VariableDeclaration","scope":15773,"src":"7012:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15770,"name":"string","nodeType":"ElementaryTypeName","src":"7012:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6992:38:31"},"src":"6972:59:31"},{"anonymous":false,"documentation":{"id":15774,"nodeType":"StructuredDocumentation","src":"7035:77:31","text":" @dev Event fired when the cooldown period duration is updated."},"eventSelector":"98eaabfe135a9c40c420208962bf81e7926b4d6df3e23502164c0554b7b35224","id":15780,"name":"CooldownPeriodUpdated","nameLocation":"7121:21:31","nodeType":"EventDefinition","parameters":{"id":15779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15776,"indexed":false,"mutability":"mutable","name":"oldCooldownPeriod","nameLocation":"7151:17:31","nodeType":"VariableDeclaration","scope":15780,"src":"7143:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15775,"name":"uint256","nodeType":"ElementaryTypeName","src":"7143:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15778,"indexed":false,"mutability":"mutable","name":"newCooldownPeriod","nameLocation":"7178:17:31","nodeType":"VariableDeclaration","scope":15780,"src":"7170:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15777,"name":"uint256","nodeType":"ElementaryTypeName","src":"7170:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7142:54:31"},"src":"7115:82:31"},{"anonymous":false,"documentation":{"id":15781,"nodeType":"StructuredDocumentation","src":"7201:74:31","text":" @dev Event fired when the grace period duration is updated."},"eventSelector":"55c7a79c45e9a972909cd640f9336a14a84adbaf756211f16267001854110191","id":15787,"name":"GracePeriodUpdated","nameLocation":"7284:18:31","nodeType":"EventDefinition","parameters":{"id":15786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15783,"indexed":false,"mutability":"mutable","name":"oldGracePeriod","nameLocation":"7311:14:31","nodeType":"VariableDeclaration","scope":15787,"src":"7303:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15782,"name":"uint256","nodeType":"ElementaryTypeName","src":"7303:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15785,"indexed":false,"mutability":"mutable","name":"newGracePeriod","nameLocation":"7335:14:31","nodeType":"VariableDeclaration","scope":15787,"src":"7327:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15784,"name":"uint256","nodeType":"ElementaryTypeName","src":"7327:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7302:48:31"},"src":"7278:73:31"},{"anonymous":false,"documentation":{"id":15788,"nodeType":"StructuredDocumentation","src":"7355:75:31","text":" @dev Event fired when the app endorsement status is updated."},"eventSelector":"39ed358ca65699fee4083beb84f3d91ce2201bb0c89859317fc5be02231609ed","id":15794,"name":"AppEndorsementStatusUpdated","nameLocation":"7439:27:31","nodeType":"EventDefinition","parameters":{"id":15793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15790,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"7483:5:31","nodeType":"VariableDeclaration","scope":15794,"src":"7467:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15789,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7467:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15792,"indexed":false,"mutability":"mutable","name":"endorsed","nameLocation":"7495:8:31","nodeType":"VariableDeclaration","scope":15794,"src":"7490:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15791,"name":"bool","nodeType":"ElementaryTypeName","src":"7490:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7466:38:31"},"src":"7433:72:31"},{"anonymous":false,"documentation":{"id":15795,"nodeType":"StructuredDocumentation","src":"7509:81:31","text":" @dev Event fired when the app endorsement grace period is started."},"eventSelector":"502689eeffd57ae8470e1d86a4a8cd293a44bfbbd2429cb375da3d901a3dd80f","id":15803,"name":"AppUnendorsedGracePeriodStarted","nameLocation":"7599:31:31","nodeType":"EventDefinition","parameters":{"id":15802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15797,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"7647:5:31","nodeType":"VariableDeclaration","scope":15803,"src":"7631:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15796,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7631:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15799,"indexed":false,"mutability":"mutable","name":"startBlock","nameLocation":"7661:10:31","nodeType":"VariableDeclaration","scope":15803,"src":"7654:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":15798,"name":"uint48","nodeType":"ElementaryTypeName","src":"7654:6:31","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":15801,"indexed":false,"mutability":"mutable","name":"endBlock","nameLocation":"7680:8:31","nodeType":"VariableDeclaration","scope":15803,"src":"7673:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":15800,"name":"uint48","nodeType":"ElementaryTypeName","src":"7673:6:31","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7630:59:31"},"src":"7593:97:31"},{"anonymous":false,"documentation":{"id":15804,"nodeType":"StructuredDocumentation","src":"7694:79:31","text":" @dev Event fired when the team allocation percentage is updated."},"eventSelector":"fa00d62daa32bee936460eef242354969c99d01d5e406a2ca006a39e9df6b2b6","id":15812,"name":"TeamAllocationPercentageUpdated","nameLocation":"7782:31:31","nodeType":"EventDefinition","parameters":{"id":15811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15806,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"7830:5:31","nodeType":"VariableDeclaration","scope":15812,"src":"7814:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15805,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7814:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15808,"indexed":false,"mutability":"mutable","name":"oldPercentage","nameLocation":"7845:13:31","nodeType":"VariableDeclaration","scope":15812,"src":"7837:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15807,"name":"uint256","nodeType":"ElementaryTypeName","src":"7837:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15810,"indexed":false,"mutability":"mutable","name":"newPercentage","nameLocation":"7868:13:31","nodeType":"VariableDeclaration","scope":15812,"src":"7860:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15809,"name":"uint256","nodeType":"ElementaryTypeName","src":"7860:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7813:69:31"},"src":"7776:107:31"},{"anonymous":false,"documentation":{"id":15813,"nodeType":"StructuredDocumentation","src":"7887:72:31","text":" @dev V8: Event fired when an app is endorsed with points."},"eventSelector":"1193ced031b3229da69fab9691642274e1ea2625dfce9967135e6d5e6029d220","id":15823,"name":"AppEndorsed","nameLocation":"7968:11:31","nodeType":"EventDefinition","parameters":{"id":15822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15815,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"7996:5:31","nodeType":"VariableDeclaration","scope":15823,"src":"7980:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15814,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7980:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15817,"indexed":true,"mutability":"mutable","name":"nodeId","nameLocation":"8019:6:31","nodeType":"VariableDeclaration","scope":15823,"src":"8003:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15816,"name":"uint256","nodeType":"ElementaryTypeName","src":"8003:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15819,"indexed":false,"mutability":"mutable","name":"endorser","nameLocation":"8035:8:31","nodeType":"VariableDeclaration","scope":15823,"src":"8027:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15818,"name":"address","nodeType":"ElementaryTypeName","src":"8027:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15821,"indexed":false,"mutability":"mutable","name":"points","nameLocation":"8053:6:31","nodeType":"VariableDeclaration","scope":15823,"src":"8045:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15820,"name":"uint256","nodeType":"ElementaryTypeName","src":"8045:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7979:81:31"},"src":"7962:99:31"},{"anonymous":false,"documentation":{"id":15824,"nodeType":"StructuredDocumentation","src":"8065:62:31","text":" @dev V8: Event fired when an app is unendorsed."},"eventSelector":"75a2c0f7478dc6b5e01e316a07fc6b72d32d90ca051d898b5d198300d1a7c036","id":15832,"name":"AppUnendorsed","nameLocation":"8136:13:31","nodeType":"EventDefinition","parameters":{"id":15831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15826,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"8166:5:31","nodeType":"VariableDeclaration","scope":15832,"src":"8150:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8150:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15828,"indexed":true,"mutability":"mutable","name":"nodeId","nameLocation":"8189:6:31","nodeType":"VariableDeclaration","scope":15832,"src":"8173:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15827,"name":"uint256","nodeType":"ElementaryTypeName","src":"8173:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15830,"indexed":false,"mutability":"mutable","name":"points","nameLocation":"8205:6:31","nodeType":"VariableDeclaration","scope":15832,"src":"8197:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15829,"name":"uint256","nodeType":"ElementaryTypeName","src":"8197:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8149:63:31"},"src":"8130:83:31"},{"anonymous":false,"documentation":{"id":15833,"nodeType":"StructuredDocumentation","src":"8217:75:31","text":" @dev V8: Event fired when endorsements paused state changes."},"eventSelector":"fd9f033c3b3a54e30cfe5bf2bc66dea3bac111d66ecc2c03a2bcc1c5ccdd0250","id":15837,"name":"EndorsementsPausedUpdated","nameLocation":"8301:25:31","nodeType":"EventDefinition","parameters":{"id":15836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15835,"indexed":false,"mutability":"mutable","name":"paused","nameLocation":"8332:6:31","nodeType":"VariableDeclaration","scope":15837,"src":"8327:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15834,"name":"bool","nodeType":"ElementaryTypeName","src":"8327:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8326:13:31"},"src":"8295:45:31"},{"anonymous":false,"documentation":{"id":15838,"nodeType":"StructuredDocumentation","src":"8344:80:31","text":" @dev V8: Event fired when max points per node per app is updated."},"eventSelector":"ff24fd32f78a666774cb7265d538935a108bff58375ccca2d01c4c9b66ac22a5","id":15844,"name":"MaxPointsPerNodePerAppUpdated","nameLocation":"8433:29:31","nodeType":"EventDefinition","parameters":{"id":15843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15840,"indexed":false,"mutability":"mutable","name":"oldMax","nameLocation":"8471:6:31","nodeType":"VariableDeclaration","scope":15844,"src":"8463:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15839,"name":"uint256","nodeType":"ElementaryTypeName","src":"8463:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15842,"indexed":false,"mutability":"mutable","name":"newMax","nameLocation":"8487:6:31","nodeType":"VariableDeclaration","scope":15844,"src":"8479:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15841,"name":"uint256","nodeType":"ElementaryTypeName","src":"8479:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8462:32:31"},"src":"8427:68:31"},{"anonymous":false,"documentation":{"id":15845,"nodeType":"StructuredDocumentation","src":"8499:71:31","text":" @dev V8: Event fired when max points per app is updated."},"eventSelector":"f4c290bd7ee941689bccbabc9dbd567d76db3be9871c7aa182dabf6737f7fc70","id":15851,"name":"MaxPointsPerAppUpdated","nameLocation":"8579:22:31","nodeType":"EventDefinition","parameters":{"id":15850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15847,"indexed":false,"mutability":"mutable","name":"oldMax","nameLocation":"8610:6:31","nodeType":"VariableDeclaration","scope":15851,"src":"8602:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15846,"name":"uint256","nodeType":"ElementaryTypeName","src":"8602:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15849,"indexed":false,"mutability":"mutable","name":"newMax","nameLocation":"8626:6:31","nodeType":"VariableDeclaration","scope":15851,"src":"8618:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15848,"name":"uint256","nodeType":"ElementaryTypeName","src":"8618:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8601:32:31"},"src":"8573:61:31"},{"anonymous":false,"documentation":{"id":15852,"nodeType":"StructuredDocumentation","src":"8638:84:31","text":" @dev V8: Event fired when an app admin voluntarily delists their app."},"eventSelector":"5a6c1432141559a12a66c9321806df68b9948db6cc62bffed540b668c3165bf8","id":15858,"name":"AppSelfBlacklisted","nameLocation":"8731:18:31","nodeType":"EventDefinition","parameters":{"id":15857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15854,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"8766:5:31","nodeType":"VariableDeclaration","scope":15858,"src":"8750:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8750:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15856,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"8789:5:31","nodeType":"VariableDeclaration","scope":15858,"src":"8773:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15855,"name":"address","nodeType":"ElementaryTypeName","src":"8773:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8749:46:31"},"src":"8725:71:31"},{"anonymous":false,"documentation":{"id":15859,"nodeType":"StructuredDocumentation","src":"8800:74:31","text":" @dev Event fired when the node strength scores are updated."},"eventSelector":"c91e5ded81b3894187855cc79c29a7eaa6b412d30cfa1658fe313129291db242","id":15864,"name":"NodeStrengthScoresUpdated","nameLocation":"8883:25:31","nodeType":"EventDefinition","parameters":{"id":15863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15862,"indexed":true,"mutability":"mutable","name":"nodeStrengthScores","nameLocation":"8953:18:31","nodeType":"VariableDeclaration","scope":15864,"src":"8909:62:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_memory_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores"},"typeName":{"id":15861,"nodeType":"UserDefinedTypeName","pathNode":{"id":15860,"name":"EndorsementUtils.NodeStrengthScores","nameLocations":["8909:16:31","8926:18:31"],"nodeType":"IdentifierPath","referencedDeclaration":19503,"src":"8909:35:31"},"referencedDeclaration":19503,"src":"8909:35:31","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_storage_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores"}},"visibility":"internal"}],"src":"8908:64:31"},"src":"8877:96:31"},{"documentation":{"id":15865,"nodeType":"StructuredDocumentation","src":"8977:122:31","text":" @dev Generates the hash of the app name to be used as the app id.\n @param name the name of the app"},"functionSelector":"34b0e6b3","id":15872,"implemented":false,"kind":"function","modifiers":[],"name":"hashAppName","nameLocation":"9111:11:31","nodeType":"FunctionDefinition","parameters":{"id":15868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15867,"mutability":"mutable","name":"name","nameLocation":"9137:4:31","nodeType":"VariableDeclaration","scope":15872,"src":"9123:18:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15866,"name":"string","nodeType":"ElementaryTypeName","src":"9123:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9122:20:31"},"returnParameters":{"id":15871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15872,"src":"9166:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9166:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9165:9:31"},"scope":16381,"src":"9102:73:31","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":15873,"nodeType":"StructuredDocumentation","src":"9179:88:31","text":" @dev Get the app data by its id.\n @param appId the id of the app"},"functionSelector":"785d6e18","id":15881,"implemented":false,"kind":"function","modifiers":[],"name":"app","nameLocation":"9279:3:31","nodeType":"FunctionDefinition","parameters":{"id":15876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15875,"mutability":"mutable","name":"appId","nameLocation":"9291:5:31","nodeType":"VariableDeclaration","scope":15881,"src":"9283:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15874,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9283:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9282:15:31"},"returnParameters":{"id":15880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15881,"src":"9321:51:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AppWithDetailsReturnType_$17368_memory_ptr","typeString":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType"},"typeName":{"id":15878,"nodeType":"UserDefinedTypeName","pathNode":{"id":15877,"name":"X2EarnAppsDataTypes.AppWithDetailsReturnType","nameLocations":["9321:19:31","9341:24:31"],"nodeType":"IdentifierPath","referencedDeclaration":17368,"src":"9321:44:31"},"referencedDeclaration":17368,"src":"9321:44:31","typeDescriptions":{"typeIdentifier":"t_struct$_AppWithDetailsReturnType_$17368_storage_ptr","typeString":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType"}},"visibility":"internal"}],"src":"9320:53:31"},"scope":16381,"src":"9270:104:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15882,"nodeType":"StructuredDocumentation","src":"9378:190:31","text":" @notice Get all the apps that exist in the VeBetter DAO ecosystem.\n @dev An XApp must have been included in at least one allocation round to be considered an existing app."},"functionSelector":"f7703379","id":15889,"implemented":false,"kind":"function","modifiers":[],"name":"apps","nameLocation":"9580:4:31","nodeType":"FunctionDefinition","parameters":{"id":15883,"nodeType":"ParameterList","parameters":[],"src":"9584:2:31"},"returnParameters":{"id":15888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15889,"src":"9610:53:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AppWithDetailsReturnType_$17368_memory_ptr_$dyn_memory_ptr","typeString":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]"},"typeName":{"baseType":{"id":15885,"nodeType":"UserDefinedTypeName","pathNode":{"id":15884,"name":"X2EarnAppsDataTypes.AppWithDetailsReturnType","nameLocations":["9610:19:31","9630:24:31"],"nodeType":"IdentifierPath","referencedDeclaration":17368,"src":"9610:44:31"},"referencedDeclaration":17368,"src":"9610:44:31","typeDescriptions":{"typeIdentifier":"t_struct$_AppWithDetailsReturnType_$17368_storage_ptr","typeString":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType"}},"id":15886,"nodeType":"ArrayTypeName","src":"9610:46:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AppWithDetailsReturnType_$17368_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]"}},"visibility":"internal"}],"src":"9609:55:31"},"scope":16381,"src":"9571:94:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15890,"nodeType":"StructuredDocumentation","src":"9669:190:31","text":" @dev Add a new moderator to the app.\n @param appId the id of the app\n @param moderator the address of the moderator\n Emits a {ModeratorAddedToApp} event."},"functionSelector":"0cb212e1","id":15897,"implemented":false,"kind":"function","modifiers":[],"name":"addAppModerator","nameLocation":"9871:15:31","nodeType":"FunctionDefinition","parameters":{"id":15895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15892,"mutability":"mutable","name":"appId","nameLocation":"9895:5:31","nodeType":"VariableDeclaration","scope":15897,"src":"9887:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15891,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9887:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15894,"mutability":"mutable","name":"moderator","nameLocation":"9910:9:31","nodeType":"VariableDeclaration","scope":15897,"src":"9902:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15893,"name":"address","nodeType":"ElementaryTypeName","src":"9902:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9886:34:31"},"returnParameters":{"id":15896,"nodeType":"ParameterList","parameters":[],"src":"9929:0:31"},"scope":16381,"src":"9862:68:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15898,"nodeType":"StructuredDocumentation","src":"9934:195:31","text":" @dev Remove a moderator from the app.\n @param appId the id of the app\n @param moderator the address of the moderator\n Emits a {ModeratorRemovedFromApp} event."},"functionSelector":"2589a49d","id":15905,"implemented":false,"kind":"function","modifiers":[],"name":"removeAppModerator","nameLocation":"10141:18:31","nodeType":"FunctionDefinition","parameters":{"id":15903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15900,"mutability":"mutable","name":"appId","nameLocation":"10168:5:31","nodeType":"VariableDeclaration","scope":15905,"src":"10160:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10160:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15902,"mutability":"mutable","name":"moderator","nameLocation":"10183:9:31","nodeType":"VariableDeclaration","scope":15905,"src":"10175:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15901,"name":"address","nodeType":"ElementaryTypeName","src":"10175:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10159:34:31"},"returnParameters":{"id":15904,"nodeType":"ParameterList","parameters":[],"src":"10202:0:31"},"scope":16381,"src":"10132:71:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15906,"nodeType":"StructuredDocumentation","src":"10207:165:31","text":" @dev Set the app admin.\n @param appId the id of the app\n @param admin the address of the admin\n Emits a {AppAdminUpdated} event."},"functionSelector":"833d29b4","id":15913,"implemented":false,"kind":"function","modifiers":[],"name":"setAppAdmin","nameLocation":"10384:11:31","nodeType":"FunctionDefinition","parameters":{"id":15911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15908,"mutability":"mutable","name":"appId","nameLocation":"10404:5:31","nodeType":"VariableDeclaration","scope":15913,"src":"10396:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15907,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10396:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15910,"mutability":"mutable","name":"admin","nameLocation":"10419:5:31","nodeType":"VariableDeclaration","scope":15913,"src":"10411:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15909,"name":"address","nodeType":"ElementaryTypeName","src":"10411:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10395:30:31"},"returnParameters":{"id":15912,"nodeType":"ParameterList","parameters":[],"src":"10434:0:31"},"scope":16381,"src":"10375:60:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15914,"nodeType":"StructuredDocumentation","src":"10439:182:31","text":" @dev Add a new creator to the app.\n @param appId the id of the app\n @param creator the address of the creator\n Emits a {CreatorAddedToApp} event."},"functionSelector":"993f8d36","id":15921,"implemented":false,"kind":"function","modifiers":[],"name":"addCreator","nameLocation":"10633:10:31","nodeType":"FunctionDefinition","parameters":{"id":15919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15916,"mutability":"mutable","name":"appId","nameLocation":"10652:5:31","nodeType":"VariableDeclaration","scope":15921,"src":"10644:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15915,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10644:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15918,"mutability":"mutable","name":"creator","nameLocation":"10667:7:31","nodeType":"VariableDeclaration","scope":15921,"src":"10659:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15917,"name":"address","nodeType":"ElementaryTypeName","src":"10659:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10643:32:31"},"returnParameters":{"id":15920,"nodeType":"ParameterList","parameters":[],"src":"10684:0:31"},"scope":16381,"src":"10624:61:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15922,"nodeType":"StructuredDocumentation","src":"10689:129:31","text":" @dev Check if a creator has already been used for another app.\n @param creator the address of the creator"},"functionSelector":"bcbd410c","id":15929,"implemented":false,"kind":"function","modifiers":[],"name":"isCreatorOfAnyApp","nameLocation":"10830:17:31","nodeType":"FunctionDefinition","parameters":{"id":15925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15924,"mutability":"mutable","name":"creator","nameLocation":"10856:7:31","nodeType":"VariableDeclaration","scope":15929,"src":"10848:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15923,"name":"address","nodeType":"ElementaryTypeName","src":"10848:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10847:17:31"},"returnParameters":{"id":15928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15929,"src":"10883:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15926,"name":"bool","nodeType":"ElementaryTypeName","src":"10883:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10882:6:31"},"scope":16381,"src":"10821:68:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15930,"nodeType":"StructuredDocumentation","src":"10893:187:31","text":" @dev Remove a creator from the app.\n @param appId the id of the app\n @param creator the address of the creator\n Emits a {CreatorRemovedFromApp} event."},"functionSelector":"9fa949ad","id":15937,"implemented":false,"kind":"function","modifiers":[],"name":"removeAppCreator","nameLocation":"11092:16:31","nodeType":"FunctionDefinition","parameters":{"id":15935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15932,"mutability":"mutable","name":"appId","nameLocation":"11117:5:31","nodeType":"VariableDeclaration","scope":15937,"src":"11109:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15931,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11109:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15934,"mutability":"mutable","name":"creator","nameLocation":"11132:7:31","nodeType":"VariableDeclaration","scope":15937,"src":"11124:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15933,"name":"address","nodeType":"ElementaryTypeName","src":"11124:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11108:32:31"},"returnParameters":{"id":15936,"nodeType":"ParameterList","parameters":[],"src":"11149:0:31"},"scope":16381,"src":"11083:67:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15938,"nodeType":"StructuredDocumentation","src":"11154:88:31","text":" @dev Get the creators of an app.\n @param appId the id of the app"},"functionSelector":"b747e2e9","id":15946,"implemented":false,"kind":"function","modifiers":[],"name":"appCreators","nameLocation":"11254:11:31","nodeType":"FunctionDefinition","parameters":{"id":15941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15940,"mutability":"mutable","name":"appId","nameLocation":"11274:5:31","nodeType":"VariableDeclaration","scope":15946,"src":"11266:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11266:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11265:15:31"},"returnParameters":{"id":15945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15946,"src":"11304:16:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":15942,"name":"address","nodeType":"ElementaryTypeName","src":"11304:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15943,"nodeType":"ArrayTypeName","src":"11304:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"11303:18:31"},"scope":16381,"src":"11245:77:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15947,"nodeType":"StructuredDocumentation","src":"11326:117:31","text":" @dev Get the number of apps created by an account.\n @param creator the address of the creator"},"functionSelector":"6912f1f6","id":15954,"implemented":false,"kind":"function","modifiers":[],"name":"creatorApps","nameLocation":"11455:11:31","nodeType":"FunctionDefinition","parameters":{"id":15950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15949,"mutability":"mutable","name":"creator","nameLocation":"11475:7:31","nodeType":"VariableDeclaration","scope":15954,"src":"11467:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15948,"name":"address","nodeType":"ElementaryTypeName","src":"11467:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11466:17:31"},"returnParameters":{"id":15953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15954,"src":"11507:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15951,"name":"uint256","nodeType":"ElementaryTypeName","src":"11507:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11506:9:31"},"scope":16381,"src":"11446:70:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15955,"nodeType":"StructuredDocumentation","src":"11520:79:31","text":" @dev Get the app admin.\n @param appId the id of the app"},"functionSelector":"2c35f428","id":15962,"implemented":false,"kind":"function","modifiers":[],"name":"appAdmin","nameLocation":"11611:8:31","nodeType":"FunctionDefinition","parameters":{"id":15958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15957,"mutability":"mutable","name":"appId","nameLocation":"11628:5:31","nodeType":"VariableDeclaration","scope":15962,"src":"11620:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15956,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11620:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11619:15:31"},"returnParameters":{"id":15961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15960,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15962,"src":"11658:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15959,"name":"address","nodeType":"ElementaryTypeName","src":"11658:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11657:9:31"},"scope":16381,"src":"11602:65:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15963,"nodeType":"StructuredDocumentation","src":"11671:160:31","text":" @dev Check if an account is the admin of the app\n @param appId the hashed name of the app\n @param account the address of the account"},"functionSelector":"8e3a29dc","id":15972,"implemented":false,"kind":"function","modifiers":[],"name":"isAppAdmin","nameLocation":"11843:10:31","nodeType":"FunctionDefinition","parameters":{"id":15968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15965,"mutability":"mutable","name":"appId","nameLocation":"11862:5:31","nodeType":"VariableDeclaration","scope":15972,"src":"11854:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15964,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11854:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15967,"mutability":"mutable","name":"account","nameLocation":"11877:7:31","nodeType":"VariableDeclaration","scope":15972,"src":"11869:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15966,"name":"address","nodeType":"ElementaryTypeName","src":"11869:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11853:32:31"},"returnParameters":{"id":15971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15970,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15972,"src":"11909:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15969,"name":"bool","nodeType":"ElementaryTypeName","src":"11909:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11908:6:31"},"scope":16381,"src":"11834:81:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15973,"nodeType":"StructuredDocumentation","src":"11919:274:31","text":" @dev Update the address where the x2earn app receives allocation funds.\n @param appId the id of the app\n @param newTeamWalletAddress the new address where the app should receive allocation funds\n Emits a {TeamWalletAddressUpdated} event."},"functionSelector":"6165267c","id":15980,"implemented":false,"kind":"function","modifiers":[],"name":"updateTeamWalletAddress","nameLocation":"12205:23:31","nodeType":"FunctionDefinition","parameters":{"id":15978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15975,"mutability":"mutable","name":"appId","nameLocation":"12237:5:31","nodeType":"VariableDeclaration","scope":15980,"src":"12229:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15974,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12229:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15977,"mutability":"mutable","name":"newTeamWalletAddress","nameLocation":"12252:20:31","nodeType":"VariableDeclaration","scope":15980,"src":"12244:28:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15976,"name":"address","nodeType":"ElementaryTypeName","src":"12244:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12228:45:31"},"returnParameters":{"id":15979,"nodeType":"ParameterList","parameters":[],"src":"12282:0:31"},"scope":16381,"src":"12196:87:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15981,"nodeType":"StructuredDocumentation","src":"12287:124:31","text":" @dev Get the address where the x2earn app receives allocation funds.\n @param appId the id of the app"},"functionSelector":"1772503b","id":15988,"implemented":false,"kind":"function","modifiers":[],"name":"teamWalletAddress","nameLocation":"12423:17:31","nodeType":"FunctionDefinition","parameters":{"id":15984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15983,"mutability":"mutable","name":"appId","nameLocation":"12449:5:31","nodeType":"VariableDeclaration","scope":15988,"src":"12441:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15982,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12441:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12440:15:31"},"returnParameters":{"id":15987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15988,"src":"12479:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15985,"name":"address","nodeType":"ElementaryTypeName","src":"12479:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12478:9:31"},"scope":16381,"src":"12414:74:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15989,"nodeType":"StructuredDocumentation","src":"12492:139:31","text":" @dev Function to get the percentage of the allocation sent to the team address each round.\n @param appId the app id"},"functionSelector":"826b9a4e","id":15996,"implemented":false,"kind":"function","modifiers":[],"name":"teamAllocationPercentage","nameLocation":"12643:24:31","nodeType":"FunctionDefinition","parameters":{"id":15992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15991,"mutability":"mutable","name":"appId","nameLocation":"12676:5:31","nodeType":"VariableDeclaration","scope":15996,"src":"12668:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15990,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12668:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12667:15:31"},"returnParameters":{"id":15995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15996,"src":"12706:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15993,"name":"uint256","nodeType":"ElementaryTypeName","src":"12706:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12705:9:31"},"scope":16381,"src":"12634:81:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15997,"nodeType":"StructuredDocumentation","src":"12719:176:31","text":" @dev Update the allocation percentage to be sent to the team\n @param appId the id of the app\n @param percentage the new percentage of the allocation"},"functionSelector":"54933bf0","id":16004,"implemented":false,"kind":"function","modifiers":[],"name":"setTeamAllocationPercentage","nameLocation":"12907:27:31","nodeType":"FunctionDefinition","parameters":{"id":16002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15999,"mutability":"mutable","name":"appId","nameLocation":"12943:5:31","nodeType":"VariableDeclaration","scope":16004,"src":"12935:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15998,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12935:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16001,"mutability":"mutable","name":"percentage","nameLocation":"12958:10:31","nodeType":"VariableDeclaration","scope":16004,"src":"12950:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16000,"name":"uint256","nodeType":"ElementaryTypeName","src":"12950:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12934:35:31"},"returnParameters":{"id":16003,"nodeType":"ParameterList","parameters":[],"src":"12978:0:31"},"scope":16381,"src":"12898:81:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16005,"nodeType":"StructuredDocumentation","src":"12983:225:31","text":" @dev Add a new reward distributor to the app.\n @param appId the id of the app\n @param distributorAddress the address of the reward distributor\n Emits a {RewardDistributorAddedToApp} event."},"functionSelector":"83802165","id":16012,"implemented":false,"kind":"function","modifiers":[],"name":"addRewardDistributor","nameLocation":"13220:20:31","nodeType":"FunctionDefinition","parameters":{"id":16010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16007,"mutability":"mutable","name":"appId","nameLocation":"13249:5:31","nodeType":"VariableDeclaration","scope":16012,"src":"13241:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13241:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16009,"mutability":"mutable","name":"distributorAddress","nameLocation":"13264:18:31","nodeType":"VariableDeclaration","scope":16012,"src":"13256:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16008,"name":"address","nodeType":"ElementaryTypeName","src":"13256:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13240:43:31"},"returnParameters":{"id":16011,"nodeType":"ParameterList","parameters":[],"src":"13292:0:31"},"scope":16381,"src":"13211:82:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16013,"nodeType":"StructuredDocumentation","src":"13297:230:31","text":" @dev Remove a reward distributor from the app.\n @param appId the id of the app\n @param distributorAddress the address of the reward distributor\n Emits a {RewardDistributorRemovedFromApp} event."},"functionSelector":"a06bb129","id":16020,"implemented":false,"kind":"function","modifiers":[],"name":"removeRewardDistributor","nameLocation":"13539:23:31","nodeType":"FunctionDefinition","parameters":{"id":16018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16015,"mutability":"mutable","name":"appId","nameLocation":"13571:5:31","nodeType":"VariableDeclaration","scope":16020,"src":"13563:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16014,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13563:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16017,"mutability":"mutable","name":"distributorAddress","nameLocation":"13586:18:31","nodeType":"VariableDeclaration","scope":16020,"src":"13578:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16016,"name":"address","nodeType":"ElementaryTypeName","src":"13578:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13562:43:31"},"returnParameters":{"id":16019,"nodeType":"ParameterList","parameters":[],"src":"13614:0:31"},"scope":16381,"src":"13530:85:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16021,"nodeType":"StructuredDocumentation","src":"13619:180:31","text":" @dev Returns true if an account is a reward distributor of the app\n @param appId the id of the app\n @param distributorAddress the address of the account"},"functionSelector":"b58a7547","id":16030,"implemented":false,"kind":"function","modifiers":[],"name":"isRewardDistributor","nameLocation":"13811:19:31","nodeType":"FunctionDefinition","parameters":{"id":16026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16023,"mutability":"mutable","name":"appId","nameLocation":"13839:5:31","nodeType":"VariableDeclaration","scope":16030,"src":"13831:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16022,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13831:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16025,"mutability":"mutable","name":"distributorAddress","nameLocation":"13854:18:31","nodeType":"VariableDeclaration","scope":16030,"src":"13846:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16024,"name":"address","nodeType":"ElementaryTypeName","src":"13846:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13830:43:31"},"returnParameters":{"id":16029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16028,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16030,"src":"13897:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16027,"name":"bool","nodeType":"ElementaryTypeName","src":"13897:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13896:6:31"},"scope":16381,"src":"13802:101:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16031,"nodeType":"StructuredDocumentation","src":"13907:99:31","text":" @dev Enable the rewards pool for a new app.\n @param appId the id of the app"},"functionSelector":"1a25071f","id":16036,"implemented":false,"kind":"function","modifiers":[],"name":"enableRewardsPoolForNewApp","nameLocation":"14018:26:31","nodeType":"FunctionDefinition","parameters":{"id":16034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16033,"mutability":"mutable","name":"appId","nameLocation":"14053:5:31","nodeType":"VariableDeclaration","scope":16036,"src":"14045:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16032,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14045:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14044:15:31"},"returnParameters":{"id":16035,"nodeType":"ParameterList","parameters":[],"src":"14068:0:31"},"scope":16381,"src":"14009:60:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16037,"nodeType":"StructuredDocumentation","src":"14073:669:31","text":" @notice Checks endorsements for a given app and updates its voting eligibility based on the endorsements' scores.\n @dev This function is intended to be called by a cron job prior to the start of each voting round.\n If the app has less than 100 points, the grace period elasped is checked.\n If the grace period elapsed by the app is greater than the threshold grace period, the app is marked as not eligible for voting.\n If an endorser has lost its node status (level 0), it is removed from the endorsers list.\n @param appId The unique identifier of the app being checked.\n @return True if the app is eligible for voting."},"functionSelector":"a099a192","id":16044,"implemented":false,"kind":"function","modifiers":[],"name":"checkEndorsement","nameLocation":"14754:16:31","nodeType":"FunctionDefinition","parameters":{"id":16040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16039,"mutability":"mutable","name":"appId","nameLocation":"14779:5:31","nodeType":"VariableDeclaration","scope":16044,"src":"14771:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16038,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14771:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14770:15:31"},"returnParameters":{"id":16043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16042,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16044,"src":"14804:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16041,"name":"bool","nodeType":"ElementaryTypeName","src":"14804:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14803:6:31"},"scope":16381,"src":"14745:65:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16045,"nodeType":"StructuredDocumentation","src":"14814:234:31","text":" @dev Update the metadata URI of the app.\n @param appId the id of the app\n @param metadataURI the new metadata URI of the app containing details about the app\n Emits a {AppMetadataURIUpdated} event."},"functionSelector":"e9a1fee4","id":16052,"implemented":false,"kind":"function","modifiers":[],"name":"updateAppMetadata","nameLocation":"15060:17:31","nodeType":"FunctionDefinition","parameters":{"id":16050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16047,"mutability":"mutable","name":"appId","nameLocation":"15086:5:31","nodeType":"VariableDeclaration","scope":16052,"src":"15078:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16046,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15078:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16049,"mutability":"mutable","name":"metadataURI","nameLocation":"15107:11:31","nodeType":"VariableDeclaration","scope":16052,"src":"15093:25:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16048,"name":"string","nodeType":"ElementaryTypeName","src":"15093:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"15077:42:31"},"returnParameters":{"id":16051,"nodeType":"ParameterList","parameters":[],"src":"15128:0:31"},"scope":16381,"src":"15051:78:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16053,"nodeType":"StructuredDocumentation","src":"15133:318:31","text":" @dev Check if there is an app with the specified `appId`.\n @dev This function should be used to check if an app exists is part of the VeBetter DAO ecosystem.\n @notice An app is considered to exist if it has been included in at least one allocation round.\n @param appId the id of the app"},"functionSelector":"607bfb24","id":16060,"implemented":false,"kind":"function","modifiers":[],"name":"appExists","nameLocation":"15463:9:31","nodeType":"FunctionDefinition","parameters":{"id":16056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16055,"mutability":"mutable","name":"appId","nameLocation":"15481:5:31","nodeType":"VariableDeclaration","scope":16060,"src":"15473:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16054,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15473:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15472:15:31"},"returnParameters":{"id":16059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16058,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16060,"src":"15511:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16057,"name":"bool","nodeType":"ElementaryTypeName","src":"15511:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15510:6:31"},"scope":16381,"src":"15454:63:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16061,"nodeType":"StructuredDocumentation","src":"15521:92:31","text":" @dev Check if an app is blacklisted.\n @param appId the id of the app"},"functionSelector":"6b623bbe","id":16068,"implemented":false,"kind":"function","modifiers":[],"name":"isBlacklisted","nameLocation":"15625:13:31","nodeType":"FunctionDefinition","parameters":{"id":16064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16063,"mutability":"mutable","name":"appId","nameLocation":"15647:5:31","nodeType":"VariableDeclaration","scope":16068,"src":"15639:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15639:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15638:15:31"},"returnParameters":{"id":16067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16068,"src":"15677:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16065,"name":"bool","nodeType":"ElementaryTypeName","src":"15677:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15676:6:31"},"scope":16381,"src":"15616:67:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16069,"nodeType":"StructuredDocumentation","src":"15687:274:31","text":" @dev Allow or deny an app to participate in the next allocation voting rounds.\n @param _appId the id of the app\n @param _isEligible true if the app should be eligible for voting, false otherwise\n Emits a {VotingEligibilityUpdated} event."},"functionSelector":"0765ef60","id":16076,"implemented":false,"kind":"function","modifiers":[],"name":"setVotingEligibility","nameLocation":"15973:20:31","nodeType":"FunctionDefinition","parameters":{"id":16074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16071,"mutability":"mutable","name":"_appId","nameLocation":"16002:6:31","nodeType":"VariableDeclaration","scope":16076,"src":"15994:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16070,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15994:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16073,"mutability":"mutable","name":"_isEligible","nameLocation":"16015:11:31","nodeType":"VariableDeclaration","scope":16076,"src":"16010:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16072,"name":"bool","nodeType":"ElementaryTypeName","src":"16010:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15993:34:31"},"returnParameters":{"id":16075,"nodeType":"ParameterList","parameters":[],"src":"16036:0:31"},"scope":16381,"src":"15964:73:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16077,"nodeType":"StructuredDocumentation","src":"16041:99:31","text":" @dev Get all the app ids that are eligible for voting in the next allocation rounds."},"functionSelector":"c04cff19","id":16083,"implemented":false,"kind":"function","modifiers":[],"name":"allEligibleApps","nameLocation":"16152:15:31","nodeType":"FunctionDefinition","parameters":{"id":16078,"nodeType":"ParameterList","parameters":[],"src":"16167:2:31"},"returnParameters":{"id":16082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16083,"src":"16193:16:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":16079,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16193:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":16080,"nodeType":"ArrayTypeName","src":"16193:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"16192:18:31"},"scope":16381,"src":"16143:68:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16084,"nodeType":"StructuredDocumentation","src":"16215:369:31","text":" @dev Check if an app was allowed to participate in the allocation rounds in a specific timepoint.\n XAllocationVoting contract can use this function to check if an app was eligible for voting in the block when the round starts.\n @param appId the id of the app\n @param timepoint the timepoint when the app should be checked for Eligibility"},"functionSelector":"d2570b94","id":16093,"implemented":false,"kind":"function","modifiers":[],"name":"isEligible","nameLocation":"16596:10:31","nodeType":"FunctionDefinition","parameters":{"id":16089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16086,"mutability":"mutable","name":"appId","nameLocation":"16615:5:31","nodeType":"VariableDeclaration","scope":16093,"src":"16607:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16085,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16607:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16088,"mutability":"mutable","name":"timepoint","nameLocation":"16630:9:31","nodeType":"VariableDeclaration","scope":16093,"src":"16622:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16087,"name":"uint256","nodeType":"ElementaryTypeName","src":"16622:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16606:34:31"},"returnParameters":{"id":16092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16093,"src":"16664:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16090,"name":"bool","nodeType":"ElementaryTypeName","src":"16664:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16663:6:31"},"scope":16381,"src":"16587:83:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16094,"nodeType":"StructuredDocumentation","src":"16674:56:31","text":" @dev return the base URI for the contract"},"functionSelector":"6c0360eb","id":16099,"implemented":false,"kind":"function","modifiers":[],"name":"baseURI","nameLocation":"16742:7:31","nodeType":"FunctionDefinition","parameters":{"id":16095,"nodeType":"ParameterList","parameters":[],"src":"16749:2:31"},"returnParameters":{"id":16098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16099,"src":"16775:13:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16096,"name":"string","nodeType":"ElementaryTypeName","src":"16775:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"16774:15:31"},"scope":16381,"src":"16733:57:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16100,"nodeType":"StructuredDocumentation","src":"16794:113:31","text":" @dev return the grace period for an XApp to find new endorsers after the previous one was removed."},"functionSelector":"a06db7dc","id":16105,"implemented":false,"kind":"function","modifiers":[],"name":"gracePeriod","nameLocation":"16919:11:31","nodeType":"FunctionDefinition","parameters":{"id":16101,"nodeType":"ParameterList","parameters":[],"src":"16930:2:31"},"returnParameters":{"id":16104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16103,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16105,"src":"16956:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16102,"name":"uint256","nodeType":"ElementaryTypeName","src":"16956:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16955:9:31"},"scope":16381,"src":"16910:55:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16106,"nodeType":"StructuredDocumentation","src":"16969:69:31","text":" @dev return true if an app is pending for endorsement."},"functionSelector":"c7b24f30","id":16113,"implemented":false,"kind":"function","modifiers":[],"name":"isAppUnendorsed","nameLocation":"17050:15:31","nodeType":"FunctionDefinition","parameters":{"id":16109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16108,"mutability":"mutable","name":"appId","nameLocation":"17074:5:31","nodeType":"VariableDeclaration","scope":16113,"src":"17066:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16107,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17066:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17065:15:31"},"returnParameters":{"id":16112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16113,"src":"17104:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16110,"name":"bool","nodeType":"ElementaryTypeName","src":"17104:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17103:6:31"},"scope":16381,"src":"17041:69:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16114,"nodeType":"StructuredDocumentation","src":"17114:147:31","text":" @notice Gets the ids of all apps that are looking for endorsement.\n @return the ids of the apps that are pending for endorsement"},"functionSelector":"d6418b8a","id":16120,"implemented":false,"kind":"function","modifiers":[],"name":"unendorsedAppIds","nameLocation":"17273:16:31","nodeType":"FunctionDefinition","parameters":{"id":16115,"nodeType":"ParameterList","parameters":[],"src":"17289:2:31"},"returnParameters":{"id":16119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16118,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16120,"src":"17315:16:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":16116,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17315:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":16117,"nodeType":"ArrayTypeName","src":"17315:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"17314:18:31"},"scope":16381,"src":"17264:69:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16121,"nodeType":"StructuredDocumentation","src":"17337:169:31","text":" @notice Gets the information about all apps that are looking for endorsement.\n @return the information about the apps that are pending for endorsement"},"functionSelector":"03bc087f","id":16128,"implemented":false,"kind":"function","modifiers":[],"name":"unendorsedApps","nameLocation":"17518:14:31","nodeType":"FunctionDefinition","parameters":{"id":16122,"nodeType":"ParameterList","parameters":[],"src":"17532:2:31"},"returnParameters":{"id":16127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16128,"src":"17558:53:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AppWithDetailsReturnType_$17368_memory_ptr_$dyn_memory_ptr","typeString":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]"},"typeName":{"baseType":{"id":16124,"nodeType":"UserDefinedTypeName","pathNode":{"id":16123,"name":"X2EarnAppsDataTypes.AppWithDetailsReturnType","nameLocations":["17558:19:31","17578:24:31"],"nodeType":"IdentifierPath","referencedDeclaration":17368,"src":"17558:44:31"},"referencedDeclaration":17368,"src":"17558:44:31","typeDescriptions":{"typeIdentifier":"t_struct$_AppWithDetailsReturnType_$17368_storage_ptr","typeString":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType"}},"id":16125,"nodeType":"ArrayTypeName","src":"17558:46:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AppWithDetailsReturnType_$17368_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]"}},"visibility":"internal"}],"src":"17557:55:31"},"scope":16381,"src":"17509:104:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16129,"nodeType":"StructuredDocumentation","src":"17617:97:31","text":" @dev Get the endorsement score of an app.\n @param appId the id of the app"},"functionSelector":"7ba53285","id":16136,"implemented":false,"kind":"function","modifiers":[],"name":"getScore","nameLocation":"17726:8:31","nodeType":"FunctionDefinition","parameters":{"id":16132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16131,"mutability":"mutable","name":"appId","nameLocation":"17743:5:31","nodeType":"VariableDeclaration","scope":16136,"src":"17735:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16130,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17735:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17734:15:31"},"returnParameters":{"id":16135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16134,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16136,"src":"17768:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16133,"name":"uint256","nodeType":"ElementaryTypeName","src":"17768:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17767:9:31"},"scope":16381,"src":"17717:60:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16137,"nodeType":"StructuredDocumentation","src":"17781:251:31","text":" @notice Returns the endorsement score for an app at a specific block number.\n @param appId The unique identifier of the app.\n @param timepoint The block number to query.\n @return The endorsement score at the given timepoint."},"functionSelector":"9ab17c9b","id":16146,"implemented":false,"kind":"function","modifiers":[],"name":"getScoreAtTimepoint","nameLocation":"18044:19:31","nodeType":"FunctionDefinition","parameters":{"id":16142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16139,"mutability":"mutable","name":"appId","nameLocation":"18072:5:31","nodeType":"VariableDeclaration","scope":16146,"src":"18064:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18064:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16141,"mutability":"mutable","name":"timepoint","nameLocation":"18087:9:31","nodeType":"VariableDeclaration","scope":16146,"src":"18079:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16140,"name":"uint256","nodeType":"ElementaryTypeName","src":"18079:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18063:34:31"},"returnParameters":{"id":16145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16144,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16146,"src":"18121:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16143,"name":"uint256","nodeType":"ElementaryTypeName","src":"18121:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18120:9:31"},"scope":16381,"src":"18035:95:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16147,"nodeType":"StructuredDocumentation","src":"18134:89:31","text":" @dev Get the endorsers of an app.\n @param appId the id of the app"},"functionSelector":"44bb58f7","id":16155,"implemented":false,"kind":"function","modifiers":[],"name":"getEndorsers","nameLocation":"18235:12:31","nodeType":"FunctionDefinition","parameters":{"id":16150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16149,"mutability":"mutable","name":"appId","nameLocation":"18256:5:31","nodeType":"VariableDeclaration","scope":16155,"src":"18248:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16148,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18248:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18247:15:31"},"returnParameters":{"id":16154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16155,"src":"18286:16:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16151,"name":"address","nodeType":"ElementaryTypeName","src":"18286:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16152,"nodeType":"ArrayTypeName","src":"18286:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"18285:18:31"},"scope":16381,"src":"18226:78:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16156,"nodeType":"StructuredDocumentation","src":"18308:60:31","text":" @notice Get all endorser node IDs for an app."},"functionSelector":"5cfdd470","id":16164,"implemented":false,"kind":"function","modifiers":[],"name":"getEndorserNodes","nameLocation":"18380:16:31","nodeType":"FunctionDefinition","parameters":{"id":16159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16158,"mutability":"mutable","name":"appId","nameLocation":"18405:5:31","nodeType":"VariableDeclaration","scope":16164,"src":"18397:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16157,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18397:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18396:15:31"},"returnParameters":{"id":16163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16164,"src":"18435:16:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16160,"name":"uint256","nodeType":"ElementaryTypeName","src":"18435:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16161,"nodeType":"ArrayTypeName","src":"18435:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"18434:18:31"},"scope":16381,"src":"18371:82:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16165,"nodeType":"StructuredDocumentation","src":"18457:128:31","text":" @dev Get the endorsersment score of an individual.\n @param user the address of the user who holds a NODE"},"functionSelector":"c996c624","id":16172,"implemented":false,"kind":"function","modifiers":[],"name":"getUsersEndorsementScore","nameLocation":"18597:24:31","nodeType":"FunctionDefinition","parameters":{"id":16168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16167,"mutability":"mutable","name":"user","nameLocation":"18630:4:31","nodeType":"VariableDeclaration","scope":16172,"src":"18622:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16166,"name":"address","nodeType":"ElementaryTypeName","src":"18622:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18621:14:31"},"returnParameters":{"id":16171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16172,"src":"18659:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16169,"name":"uint256","nodeType":"ElementaryTypeName","src":"18659:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18658:9:31"},"scope":16381,"src":"18588:80:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16173,"nodeType":"StructuredDocumentation","src":"18672:103:31","text":" @dev Get the endorsersment score of a node ID.\n @param nodeId the ID of a node."},"functionSelector":"42c89f52","id":16180,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeEndorsementScore","nameLocation":"18787:23:31","nodeType":"FunctionDefinition","parameters":{"id":16176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16175,"mutability":"mutable","name":"nodeId","nameLocation":"18819:6:31","nodeType":"VariableDeclaration","scope":16180,"src":"18811:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16174,"name":"uint256","nodeType":"ElementaryTypeName","src":"18811:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18810:16:31"},"returnParameters":{"id":16179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16180,"src":"18850:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16177,"name":"uint256","nodeType":"ElementaryTypeName","src":"18850:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18849:9:31"},"scope":16381,"src":"18778:81:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16181,"nodeType":"StructuredDocumentation","src":"18863:144:31","text":" @notice Get the version of the contract.\n @dev This should be updated every time a new version of implementation is deployed."},"functionSelector":"54fd4d50","id":16186,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"19019:7:31","nodeType":"FunctionDefinition","parameters":{"id":16182,"nodeType":"ParameterList","parameters":[],"src":"19026:2:31"},"returnParameters":{"id":16185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16186,"src":"19052:13:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16183,"name":"string","nodeType":"ElementaryTypeName","src":"19052:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"19051:15:31"},"scope":16381,"src":"19010:57:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16187,"nodeType":"StructuredDocumentation","src":"19071:312:31","text":" @dev Register a new app.\n @param _teamWalletAddress the address where the app will receive the allocation funds\n @param _admin the address of the admin\n @param _appName the name of the app\n @param _appMetadataURI the metadata URI of the app\n Emits a {AppAdded} event."},"functionSelector":"169efd47","id":16198,"implemented":false,"kind":"function","modifiers":[],"name":"submitApp","nameLocation":"19395:9:31","nodeType":"FunctionDefinition","parameters":{"id":16196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16189,"mutability":"mutable","name":"_teamWalletAddress","nameLocation":"19418:18:31","nodeType":"VariableDeclaration","scope":16198,"src":"19410:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16188,"name":"address","nodeType":"ElementaryTypeName","src":"19410:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16191,"mutability":"mutable","name":"_admin","nameLocation":"19450:6:31","nodeType":"VariableDeclaration","scope":16198,"src":"19442:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16190,"name":"address","nodeType":"ElementaryTypeName","src":"19442:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16193,"mutability":"mutable","name":"_appName","nameLocation":"19476:8:31","nodeType":"VariableDeclaration","scope":16198,"src":"19462:22:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16192,"name":"string","nodeType":"ElementaryTypeName","src":"19462:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16195,"mutability":"mutable","name":"_appMetadataURI","nameLocation":"19504:15:31","nodeType":"VariableDeclaration","scope":16198,"src":"19490:29:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16194,"name":"string","nodeType":"ElementaryTypeName","src":"19490:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"19404:119:31"},"returnParameters":{"id":16197,"nodeType":"ParameterList","parameters":[],"src":"19532:0:31"},"scope":16381,"src":"19386:147:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16199,"nodeType":"StructuredDocumentation","src":"19537:195:31","text":" @dev Update the the endorsement scores of each node level.\n @param _nodeStrengthScores The node level scores to update.\n Emits a {NodeStrengthScoreUpdated} event."},"functionSelector":"0e1fb61a","id":16205,"implemented":false,"kind":"function","modifiers":[],"name":"updateNodeEndorsementScores","nameLocation":"19744:27:31","nodeType":"FunctionDefinition","parameters":{"id":16203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16202,"mutability":"mutable","name":"_nodeStrengthScores","nameLocation":"19817:19:31","nodeType":"VariableDeclaration","scope":16205,"src":"19772:64:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores"},"typeName":{"id":16201,"nodeType":"UserDefinedTypeName","pathNode":{"id":16200,"name":"EndorsementUtils.NodeStrengthScores","nameLocations":["19772:16:31","19789:18:31"],"nodeType":"IdentifierPath","referencedDeclaration":19503,"src":"19772:35:31"},"referencedDeclaration":19503,"src":"19772:35:31","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_storage_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores"}},"visibility":"internal"}],"src":"19771:66:31"},"returnParameters":{"id":16204,"nodeType":"ParameterList","parameters":[],"src":"19846:0:31"},"scope":16381,"src":"19735:112:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16206,"nodeType":"StructuredDocumentation","src":"19851:276:31","text":" @notice Update the endorsement score threshold\n @dev This should be minimum endorsement score required for an app to be eligible for voting.\n @param _scoreThreshold the new score threshold\n Emits a {EndorsementScoreThresholdUpdated} event."},"functionSelector":"4f77fe12","id":16211,"implemented":false,"kind":"function","modifiers":[],"name":"updateEndorsementScoreThreshold","nameLocation":"20140:31:31","nodeType":"FunctionDefinition","parameters":{"id":16209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16208,"mutability":"mutable","name":"_scoreThreshold","nameLocation":"20180:15:31","nodeType":"VariableDeclaration","scope":16211,"src":"20172:23:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16207,"name":"uint256","nodeType":"ElementaryTypeName","src":"20172:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20171:25:31"},"returnParameters":{"id":16210,"nodeType":"ParameterList","parameters":[],"src":"20205:0:31"},"scope":16381,"src":"20131:75:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16212,"nodeType":"StructuredDocumentation","src":"20210:375:31","text":" @notice This function can be called by an XAPP admin that wishes to remove an endorserment from a specific node ID\n @dev Can only be valled by DEFAULT_ADMIN or XAPP admin\n @param _appId The unique identifier of the app that wishes to be unendorsed.\n @param _nodeId The unique identifier of the node they wish to remove from their list of endorsers."},"functionSelector":"e123cd0c","id":16219,"implemented":false,"kind":"function","modifiers":[],"name":"removeNodeEndorsement","nameLocation":"20597:21:31","nodeType":"FunctionDefinition","parameters":{"id":16217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16214,"mutability":"mutable","name":"_appId","nameLocation":"20627:6:31","nodeType":"VariableDeclaration","scope":16219,"src":"20619:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16213,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20619:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16216,"mutability":"mutable","name":"_nodeId","nameLocation":"20643:7:31","nodeType":"VariableDeclaration","scope":16219,"src":"20635:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16215,"name":"uint256","nodeType":"ElementaryTypeName","src":"20635:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20618:33:31"},"returnParameters":{"id":16218,"nodeType":"ParameterList","parameters":[],"src":"20660:0:31"},"scope":16381,"src":"20588:73:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16220,"nodeType":"StructuredDocumentation","src":"20665:44:31","text":" @dev Get the score threshold."},"functionSelector":"f1a962ac","id":16225,"implemented":false,"kind":"function","modifiers":[],"name":"endorsementScoreThreshold","nameLocation":"20721:25:31","nodeType":"FunctionDefinition","parameters":{"id":16221,"nodeType":"ParameterList","parameters":[],"src":"20746:2:31"},"returnParameters":{"id":16224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16223,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16225,"src":"20772:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16222,"name":"uint256","nodeType":"ElementaryTypeName","src":"20772:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20771:9:31"},"scope":16381,"src":"20712:69:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16226,"nodeType":"StructuredDocumentation","src":"20785:47:31","text":" @dev Remove an XApps submission."},"functionSelector":"0ab12e14","id":16231,"implemented":false,"kind":"function","modifiers":[],"name":"removeXAppSubmission","nameLocation":"20844:20:31","nodeType":"FunctionDefinition","parameters":{"id":16229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16228,"mutability":"mutable","name":"_appId","nameLocation":"20873:6:31","nodeType":"VariableDeclaration","scope":16231,"src":"20865:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20865:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20864:16:31"},"returnParameters":{"id":16230,"nodeType":"ParameterList","parameters":[],"src":"20889:0:31"},"scope":16381,"src":"20835:55:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16232,"nodeType":"StructuredDocumentation","src":"20894:198:31","text":" @notice this function returns the endorsement score of a node level\n @param nodeLevel The strength level of the node.\n @return uint256 The endorsement score of the node level."},"functionSelector":"acdb9f05","id":16239,"implemented":false,"kind":"function","modifiers":[],"name":"nodeLevelEndorsementScore","nameLocation":"21104:25:31","nodeType":"FunctionDefinition","parameters":{"id":16235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16234,"mutability":"mutable","name":"nodeLevel","nameLocation":"21136:9:31","nodeType":"VariableDeclaration","scope":16239,"src":"21130:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16233,"name":"uint8","nodeType":"ElementaryTypeName","src":"21130:5:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"21129:17:31"},"returnParameters":{"id":16238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16237,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16239,"src":"21170:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16236,"name":"uint256","nodeType":"ElementaryTypeName","src":"21170:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21169:9:31"},"scope":16381,"src":"21095:84:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16240,"nodeType":"StructuredDocumentation","src":"21183:66:31","text":" @dev Get the cooldown period for a node in seconds."},"functionSelector":"04646a49","id":16245,"implemented":false,"kind":"function","modifiers":[],"name":"cooldownPeriod","nameLocation":"21261:14:31","nodeType":"FunctionDefinition","parameters":{"id":16241,"nodeType":"ParameterList","parameters":[],"src":"21275:2:31"},"returnParameters":{"id":16244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16245,"src":"21301:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16242,"name":"uint256","nodeType":"ElementaryTypeName","src":"21301:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21300:9:31"},"scope":16381,"src":"21252:58:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16246,"nodeType":"StructuredDocumentation","src":"21314:150:31","text":" @notice Function to update the grace period.\n @param _newGracePeriod The new grace period.\n Emits a {GracePeriodUpdated} event."},"functionSelector":"0bf4f68e","id":16251,"implemented":false,"kind":"function","modifiers":[],"name":"updateGracePeriod","nameLocation":"21476:17:31","nodeType":"FunctionDefinition","parameters":{"id":16249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16248,"mutability":"mutable","name":"_newGracePeriod","nameLocation":"21501:15:31","nodeType":"VariableDeclaration","scope":16251,"src":"21494:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":16247,"name":"uint48","nodeType":"ElementaryTypeName","src":"21494:6:31","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"21493:24:31"},"returnParameters":{"id":16250,"nodeType":"ParameterList","parameters":[],"src":"21526:0:31"},"scope":16381,"src":"21467:60:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16252,"nodeType":"StructuredDocumentation","src":"21531:162:31","text":" @notice Function to update the cooldown period.\n @param _newCooldownPeriod The new cooldown period.\n Emits a {CooldownPeriodUpdated} event."},"functionSelector":"861f6bfd","id":16257,"implemented":false,"kind":"function","modifiers":[],"name":"updateCooldownPeriod","nameLocation":"21705:20:31","nodeType":"FunctionDefinition","parameters":{"id":16255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16254,"mutability":"mutable","name":"_newCooldownPeriod","nameLocation":"21734:18:31","nodeType":"VariableDeclaration","scope":16257,"src":"21726:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16253,"name":"uint256","nodeType":"ElementaryTypeName","src":"21726:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21725:28:31"},"returnParameters":{"id":16256,"nodeType":"ParameterList","parameters":[],"src":"21762:0:31"},"scope":16381,"src":"21696:67:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16258,"nodeType":"StructuredDocumentation","src":"21822:197:31","text":" @notice Endorse an app with a specified number of points.\n @param appId The app to endorse.\n @param nodeId The node endorsing.\n @param points Number of points to endorse."},"functionSelector":"109eea01","id":16267,"implemented":false,"kind":"function","modifiers":[],"name":"endorseApp","nameLocation":"22031:10:31","nodeType":"FunctionDefinition","parameters":{"id":16265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16260,"mutability":"mutable","name":"appId","nameLocation":"22050:5:31","nodeType":"VariableDeclaration","scope":16267,"src":"22042:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16259,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22042:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16262,"mutability":"mutable","name":"nodeId","nameLocation":"22065:6:31","nodeType":"VariableDeclaration","scope":16267,"src":"22057:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16261,"name":"uint256","nodeType":"ElementaryTypeName","src":"22057:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16264,"mutability":"mutable","name":"points","nameLocation":"22081:6:31","nodeType":"VariableDeclaration","scope":16267,"src":"22073:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16263,"name":"uint256","nodeType":"ElementaryTypeName","src":"22073:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22041:47:31"},"returnParameters":{"id":16266,"nodeType":"ParameterList","parameters":[],"src":"22097:0:31"},"scope":16381,"src":"22022:76:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16268,"nodeType":"StructuredDocumentation","src":"22102:204:31","text":" @notice Unendorse an app by removing points.\n @param appId The app to unendorse.\n @param nodeId The node unendorsing.\n @param points Number of points to remove (0 = remove all)."},"functionSelector":"6939cec8","id":16277,"implemented":false,"kind":"function","modifiers":[],"name":"unendorseApp","nameLocation":"22318:12:31","nodeType":"FunctionDefinition","parameters":{"id":16275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16270,"mutability":"mutable","name":"appId","nameLocation":"22339:5:31","nodeType":"VariableDeclaration","scope":16277,"src":"22331:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16269,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22331:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16272,"mutability":"mutable","name":"nodeId","nameLocation":"22354:6:31","nodeType":"VariableDeclaration","scope":16277,"src":"22346:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16271,"name":"uint256","nodeType":"ElementaryTypeName","src":"22346:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16274,"mutability":"mutable","name":"points","nameLocation":"22370:6:31","nodeType":"VariableDeclaration","scope":16277,"src":"22362:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16273,"name":"uint256","nodeType":"ElementaryTypeName","src":"22362:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22330:47:31"},"returnParameters":{"id":16276,"nodeType":"ParameterList","parameters":[],"src":"22386:0:31"},"scope":16381,"src":"22309:78:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16278,"nodeType":"StructuredDocumentation","src":"22391:52:31","text":" @notice Pause endorsement operations."},"functionSelector":"9294b7a4","id":16281,"implemented":false,"kind":"function","modifiers":[],"name":"pauseEndorsements","nameLocation":"22455:17:31","nodeType":"FunctionDefinition","parameters":{"id":16279,"nodeType":"ParameterList","parameters":[],"src":"22472:2:31"},"returnParameters":{"id":16280,"nodeType":"ParameterList","parameters":[],"src":"22483:0:31"},"scope":16381,"src":"22446:38:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16282,"nodeType":"StructuredDocumentation","src":"22488:54:31","text":" @notice Unpause endorsement operations."},"functionSelector":"1d6dbc78","id":16285,"implemented":false,"kind":"function","modifiers":[],"name":"unpauseEndorsements","nameLocation":"22554:19:31","nodeType":"FunctionDefinition","parameters":{"id":16283,"nodeType":"ParameterList","parameters":[],"src":"22573:2:31"},"returnParameters":{"id":16284,"nodeType":"ParameterList","parameters":[],"src":"22584:0:31"},"scope":16381,"src":"22545:40:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16286,"nodeType":"StructuredDocumentation","src":"22589:57:31","text":" @notice Seed endorsement during migration."},"functionSelector":"ee9419cf","id":16295,"implemented":false,"kind":"function","modifiers":[],"name":"seedEndorsement","nameLocation":"22658:15:31","nodeType":"FunctionDefinition","parameters":{"id":16293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16288,"mutability":"mutable","name":"appId","nameLocation":"22682:5:31","nodeType":"VariableDeclaration","scope":16295,"src":"22674:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16287,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22674:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16290,"mutability":"mutable","name":"nodeId","nameLocation":"22697:6:31","nodeType":"VariableDeclaration","scope":16295,"src":"22689:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16289,"name":"uint256","nodeType":"ElementaryTypeName","src":"22689:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16292,"mutability":"mutable","name":"points","nameLocation":"22713:6:31","nodeType":"VariableDeclaration","scope":16295,"src":"22705:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16291,"name":"uint256","nodeType":"ElementaryTypeName","src":"22705:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22673:47:31"},"returnParameters":{"id":16294,"nodeType":"ParameterList","parameters":[],"src":"22729:0:31"},"scope":16381,"src":"22649:81:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16296,"nodeType":"StructuredDocumentation","src":"22734:50:31","text":" @notice Mark migration as complete."},"functionSelector":"c296b1d2","id":16299,"implemented":false,"kind":"function","modifiers":[],"name":"markMigrationComplete","nameLocation":"22796:21:31","nodeType":"FunctionDefinition","parameters":{"id":16297,"nodeType":"ParameterList","parameters":[],"src":"22817:2:31"},"returnParameters":{"id":16298,"nodeType":"ParameterList","parameters":[],"src":"22828:0:31"},"scope":16381,"src":"22787:42:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16300,"nodeType":"StructuredDocumentation","src":"22833:55:31","text":" @notice Set max points per node per app."},"functionSelector":"6fb44f5f","id":16305,"implemented":false,"kind":"function","modifiers":[],"name":"setMaxPointsPerNodePerApp","nameLocation":"22900:25:31","nodeType":"FunctionDefinition","parameters":{"id":16303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16302,"mutability":"mutable","name":"maxPoints","nameLocation":"22934:9:31","nodeType":"VariableDeclaration","scope":16305,"src":"22926:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16301,"name":"uint256","nodeType":"ElementaryTypeName","src":"22926:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22925:19:31"},"returnParameters":{"id":16304,"nodeType":"ParameterList","parameters":[],"src":"22953:0:31"},"scope":16381,"src":"22891:63:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16306,"nodeType":"StructuredDocumentation","src":"22958:52:31","text":" @notice Set max total points per app."},"functionSelector":"51d2a6e3","id":16311,"implemented":false,"kind":"function","modifiers":[],"name":"setMaxPointsPerApp","nameLocation":"23022:18:31","nodeType":"FunctionDefinition","parameters":{"id":16309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16308,"mutability":"mutable","name":"maxPoints","nameLocation":"23049:9:31","nodeType":"VariableDeclaration","scope":16311,"src":"23041:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16307,"name":"uint256","nodeType":"ElementaryTypeName","src":"23041:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23040:19:31"},"returnParameters":{"id":16310,"nodeType":"ParameterList","parameters":[],"src":"23068:0:31"},"scope":16381,"src":"23013:56:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16312,"nodeType":"StructuredDocumentation","src":"23073:67:31","text":" @notice Get available endorsement points for a node."},"functionSelector":"e9f9739d","id":16319,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeAvailablePoints","nameLocation":"23152:22:31","nodeType":"FunctionDefinition","parameters":{"id":16315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16314,"mutability":"mutable","name":"nodeId","nameLocation":"23183:6:31","nodeType":"VariableDeclaration","scope":16319,"src":"23175:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16313,"name":"uint256","nodeType":"ElementaryTypeName","src":"23175:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23174:16:31"},"returnParameters":{"id":16318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16319,"src":"23214:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16316,"name":"uint256","nodeType":"ElementaryTypeName","src":"23214:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23213:9:31"},"scope":16381,"src":"23143:80:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16320,"nodeType":"StructuredDocumentation","src":"23227:80:31","text":" @notice Get comprehensive info about a node's endorsement points."},"functionSelector":"5dd3a4f1","id":16328,"implemented":false,"kind":"function","modifiers":[],"name":"getNodePointsInfo","nameLocation":"23319:17:31","nodeType":"FunctionDefinition","parameters":{"id":16323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16322,"mutability":"mutable","name":"nodeId","nameLocation":"23345:6:31","nodeType":"VariableDeclaration","scope":16328,"src":"23337:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16321,"name":"uint256","nodeType":"ElementaryTypeName","src":"23337:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23336:16:31"},"returnParameters":{"id":16327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16326,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16328,"src":"23376:44:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo"},"typeName":{"id":16325,"nodeType":"UserDefinedTypeName","pathNode":{"id":16324,"name":"X2EarnAppsStorageTypes.NodePointsInfo","nameLocations":["23376:22:31","23399:14:31"],"nodeType":"IdentifierPath","referencedDeclaration":22875,"src":"23376:37:31"},"referencedDeclaration":22875,"src":"23376:37:31","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo"}},"visibility":"internal"}],"src":"23375:46:31"},"scope":16381,"src":"23310:112:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16329,"nodeType":"StructuredDocumentation","src":"23426:62:31","text":" @notice Get all active endorsements for a node."},"functionSelector":"44532be2","id":16338,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeActiveEndorsements","nameLocation":"23500:25:31","nodeType":"FunctionDefinition","parameters":{"id":16332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16331,"mutability":"mutable","name":"nodeId","nameLocation":"23539:6:31","nodeType":"VariableDeclaration","scope":16338,"src":"23531:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16330,"name":"uint256","nodeType":"ElementaryTypeName","src":"23531:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23525:24:31"},"returnParameters":{"id":16337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16338,"src":"23573:43:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_memory_ptr_$dyn_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":16334,"nodeType":"UserDefinedTypeName","pathNode":{"id":16333,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["23573:22:31","23596:11:31"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"23573:34:31"},"referencedDeclaration":22865,"src":"23573:34:31","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":16335,"nodeType":"ArrayTypeName","src":"23573:36:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"src":"23572:45:31"},"scope":16381,"src":"23491:127:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16339,"nodeType":"StructuredDocumentation","src":"23622:77:31","text":" @notice Check if node can unendorse an app (cooldown expired)."},"functionSelector":"ccd4baca","id":16348,"implemented":false,"kind":"function","modifiers":[],"name":"canUnendorse","nameLocation":"23711:12:31","nodeType":"FunctionDefinition","parameters":{"id":16344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16341,"mutability":"mutable","name":"nodeId","nameLocation":"23732:6:31","nodeType":"VariableDeclaration","scope":16348,"src":"23724:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16340,"name":"uint256","nodeType":"ElementaryTypeName","src":"23724:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16343,"mutability":"mutable","name":"appId","nameLocation":"23748:5:31","nodeType":"VariableDeclaration","scope":16348,"src":"23740:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23740:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23723:31:31"},"returnParameters":{"id":16347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16348,"src":"23778:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16345,"name":"bool","nodeType":"ElementaryTypeName","src":"23778:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"23777:6:31"},"scope":16381,"src":"23702:82:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16349,"nodeType":"StructuredDocumentation","src":"23788:55:31","text":" @notice Get max points per node per app."},"functionSelector":"4a0c4a42","id":16354,"implemented":false,"kind":"function","modifiers":[],"name":"maxPointsPerNodePerApp","nameLocation":"23855:22:31","nodeType":"FunctionDefinition","parameters":{"id":16350,"nodeType":"ParameterList","parameters":[],"src":"23877:2:31"},"returnParameters":{"id":16353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16352,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16354,"src":"23903:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16351,"name":"uint256","nodeType":"ElementaryTypeName","src":"23903:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23902:9:31"},"scope":16381,"src":"23846:66:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16355,"nodeType":"StructuredDocumentation","src":"23916:46:31","text":" @notice Get max points per app."},"functionSelector":"5cbc2ffb","id":16360,"implemented":false,"kind":"function","modifiers":[],"name":"maxPointsPerApp","nameLocation":"23974:15:31","nodeType":"FunctionDefinition","parameters":{"id":16356,"nodeType":"ParameterList","parameters":[],"src":"23989:2:31"},"returnParameters":{"id":16359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16360,"src":"24015:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16357,"name":"uint256","nodeType":"ElementaryTypeName","src":"24015:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24014:9:31"},"scope":16381,"src":"23965:59:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16361,"nodeType":"StructuredDocumentation","src":"24028:56:31","text":" @notice Check if endorsements are paused."},"functionSelector":"b90a30ea","id":16366,"implemented":false,"kind":"function","modifiers":[],"name":"endorsementsPaused","nameLocation":"24096:18:31","nodeType":"FunctionDefinition","parameters":{"id":16362,"nodeType":"ParameterList","parameters":[],"src":"24114:2:31"},"returnParameters":{"id":16365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16366,"src":"24140:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16363,"name":"bool","nodeType":"ElementaryTypeName","src":"24140:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24139:6:31"},"scope":16381,"src":"24087:59:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16367,"nodeType":"StructuredDocumentation","src":"24150:70:31","text":" @notice V8 initializer for flexible endorsement config."},"functionSelector":"27d91b0e","id":16374,"implemented":false,"kind":"function","modifiers":[],"name":"initializeV8","nameLocation":"24232:12:31","nodeType":"FunctionDefinition","parameters":{"id":16372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16369,"mutability":"mutable","name":"_maxPointsPerNodePerApp","nameLocation":"24253:23:31","nodeType":"VariableDeclaration","scope":16374,"src":"24245:31:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16368,"name":"uint256","nodeType":"ElementaryTypeName","src":"24245:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16371,"mutability":"mutable","name":"_maxPointsPerApp","nameLocation":"24286:16:31","nodeType":"VariableDeclaration","scope":16374,"src":"24278:24:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16370,"name":"uint256","nodeType":"ElementaryTypeName","src":"24278:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24244:59:31"},"returnParameters":{"id":16373,"nodeType":"ParameterList","parameters":[],"src":"24312:0:31"},"scope":16381,"src":"24223:90:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16375,"nodeType":"StructuredDocumentation","src":"24317:238:31","text":" @notice Allows an app admin to voluntarily blacklist their app from allocation voting.\n @dev Blacklists the app and revokes creator NFTs. Only governance can restore.\n @param _appId The unique identifier of the app."},"functionSelector":"76cd2fa5","id":16380,"implemented":false,"kind":"function","modifiers":[],"name":"selfBlacklistApp","nameLocation":"24567:16:31","nodeType":"FunctionDefinition","parameters":{"id":16378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16377,"mutability":"mutable","name":"_appId","nameLocation":"24592:6:31","nodeType":"VariableDeclaration","scope":16380,"src":"24584:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16376,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24584:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"24583:16:31"},"returnParameters":{"id":16379,"nodeType":"ParameterList","parameters":[],"src":"24608:0:31"},"scope":16381,"src":"24558:51:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16382,"src":"802:23809:31","usedErrors":[15504,15509,15516,15521,15524,15527,15530,15535,15540,15543,15548,15553,15558,15563,15568,15571,15576,15583,15588,15595,15602,15607,15612,15617,15622,15625,15628,15635,15644,15653,15662,15665],"usedEvents":[15676,15683,15690,15697,15704,15711,15718,15725,15732,15739,15748,15757,15766,15773,15780,15787,15794,15803,15812,15823,15832,15837,15844,15851,15858,15864]}],"src":"32:24580:31"},"id":31},"contracts/interfaces/IX2EarnCreator.sol":{"ast":{"absolutePath":"contracts/interfaces/IX2EarnCreator.sol","exportedSymbols":{"IX2EarnCreator":[16494]},"id":16495,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16383,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:32"},{"abstract":false,"baseContracts":[],"canonicalName":"IX2EarnCreator","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":16494,"linearizedBaseContracts":[16494],"name":"IX2EarnCreator","nameLocation":"67:14:32","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":16384,"nodeType":"StructuredDocumentation","src":"142:130:32","text":"@notice Grants a role to an account\n @param role The role to assign\n @param account The account to grant the role to"},"functionSelector":"2f2ff15d","id":16391,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"284:9:32","nodeType":"FunctionDefinition","parameters":{"id":16389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16386,"mutability":"mutable","name":"role","nameLocation":"302:4:32","nodeType":"VariableDeclaration","scope":16391,"src":"294:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"294:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16388,"mutability":"mutable","name":"account","nameLocation":"316:7:32","nodeType":"VariableDeclaration","scope":16391,"src":"308:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16387,"name":"address","nodeType":"ElementaryTypeName","src":"308:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"293:31:32"},"returnParameters":{"id":16390,"nodeType":"ParameterList","parameters":[],"src":"333:0:32"},"scope":16494,"src":"275:59:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16392,"nodeType":"StructuredDocumentation","src":"338:136:32","text":"@notice Revokes a role from an account\n @param role The role to revoke\n @param account The account to revoke the role from"},"functionSelector":"d547741f","id":16399,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"486:10:32","nodeType":"FunctionDefinition","parameters":{"id":16397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16394,"mutability":"mutable","name":"role","nameLocation":"505:4:32","nodeType":"VariableDeclaration","scope":16399,"src":"497:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"497:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16396,"mutability":"mutable","name":"account","nameLocation":"519:7:32","nodeType":"VariableDeclaration","scope":16399,"src":"511:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16395,"name":"address","nodeType":"ElementaryTypeName","src":"511:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"496:31:32"},"returnParameters":{"id":16398,"nodeType":"ParameterList","parameters":[],"src":"536:0:32"},"scope":16494,"src":"477:60:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16400,"nodeType":"StructuredDocumentation","src":"541:193:32","text":"@notice Checks if an account has a specific role\n @param role The role identifier\n @param account The account to check\n @return Boolean indicating if the account has the role"},"functionSelector":"91d14854","id":16409,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"746:7:32","nodeType":"FunctionDefinition","parameters":{"id":16405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16402,"mutability":"mutable","name":"role","nameLocation":"762:4:32","nodeType":"VariableDeclaration","scope":16409,"src":"754:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16401,"name":"bytes32","nodeType":"ElementaryTypeName","src":"754:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16404,"mutability":"mutable","name":"account","nameLocation":"776:7:32","nodeType":"VariableDeclaration","scope":16409,"src":"768:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16403,"name":"address","nodeType":"ElementaryTypeName","src":"768:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"753:31:32"},"returnParameters":{"id":16408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16409,"src":"808:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16406,"name":"bool","nodeType":"ElementaryTypeName","src":"808:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"807:6:32"},"scope":16494,"src":"737:77:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16410,"nodeType":"StructuredDocumentation","src":"875:103:32","text":"@notice Mints a new token to the specified address\n @param to The address to receive the token"},"functionSelector":"40d097c3","id":16415,"implemented":false,"kind":"function","modifiers":[],"name":"safeMint","nameLocation":"990:8:32","nodeType":"FunctionDefinition","parameters":{"id":16413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16412,"mutability":"mutable","name":"to","nameLocation":"1007:2:32","nodeType":"VariableDeclaration","scope":16415,"src":"999:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16411,"name":"address","nodeType":"ElementaryTypeName","src":"999:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"998:12:32"},"returnParameters":{"id":16414,"nodeType":"ParameterList","parameters":[],"src":"1019:0:32"},"scope":16494,"src":"981:39:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16416,"nodeType":"StructuredDocumentation","src":"1024:90:32","text":"@notice Allows a user to mint a Creator NFT to themselves when self-minting is enabled"},"functionSelector":"e495d3e5","id":16419,"implemented":false,"kind":"function","modifiers":[],"name":"selfMint","nameLocation":"1126:8:32","nodeType":"FunctionDefinition","parameters":{"id":16417,"nodeType":"ParameterList","parameters":[],"src":"1134:2:32"},"returnParameters":{"id":16418,"nodeType":"ParameterList","parameters":[],"src":"1145:0:32"},"scope":16494,"src":"1117:29:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16420,"nodeType":"StructuredDocumentation","src":"1150:51:32","text":"@notice Returns whether self-minting is enabled"},"functionSelector":"e6e05f88","id":16425,"implemented":false,"kind":"function","modifiers":[],"name":"selfMintEnabled","nameLocation":"1213:15:32","nodeType":"FunctionDefinition","parameters":{"id":16421,"nodeType":"ParameterList","parameters":[],"src":"1228:2:32"},"returnParameters":{"id":16424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16425,"src":"1254:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16422,"name":"bool","nodeType":"ElementaryTypeName","src":"1254:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1253:6:32"},"scope":16494,"src":"1204:56:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16426,"nodeType":"StructuredDocumentation","src":"1264:114:32","text":"@notice Burns a specified token, removing it from circulation\n @param tokenId The ID of the token to burn"},"functionSelector":"42966c68","id":16431,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"1390:4:32","nodeType":"FunctionDefinition","parameters":{"id":16429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16428,"mutability":"mutable","name":"tokenId","nameLocation":"1403:7:32","nodeType":"VariableDeclaration","scope":16431,"src":"1395:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16427,"name":"uint256","nodeType":"ElementaryTypeName","src":"1395:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1394:17:32"},"returnParameters":{"id":16430,"nodeType":"ParameterList","parameters":[],"src":"1420:0:32"},"scope":16494,"src":"1381:40:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16432,"nodeType":"StructuredDocumentation","src":"1425:152:32","text":"@notice Retrieves the token URI for a given token ID\n @param tokenId The ID of the token\n @return The URI pointing to the token's metadata"},"functionSelector":"c87b56dd","id":16439,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"1589:8:32","nodeType":"FunctionDefinition","parameters":{"id":16435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16434,"mutability":"mutable","name":"tokenId","nameLocation":"1606:7:32","nodeType":"VariableDeclaration","scope":16439,"src":"1598:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16433,"name":"uint256","nodeType":"ElementaryTypeName","src":"1598:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1597:17:32"},"returnParameters":{"id":16438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16437,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16439,"src":"1638:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16436,"name":"string","nodeType":"ElementaryTypeName","src":"1638:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1637:15:32"},"scope":16494,"src":"1580:73:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16440,"nodeType":"StructuredDocumentation","src":"1716:52:32","text":"@notice Pauses all minting and burning functions"},"functionSelector":"8456cb59","id":16443,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"1780:5:32","nodeType":"FunctionDefinition","parameters":{"id":16441,"nodeType":"ParameterList","parameters":[],"src":"1785:2:32"},"returnParameters":{"id":16442,"nodeType":"ParameterList","parameters":[],"src":"1796:0:32"},"scope":16494,"src":"1771:26:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16444,"nodeType":"StructuredDocumentation","src":"1801:50:32","text":"@notice Unpauses minting and burning functions"},"functionSelector":"3f4ba83a","id":16447,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"1863:7:32","nodeType":"FunctionDefinition","parameters":{"id":16445,"nodeType":"ParameterList","parameters":[],"src":"1870:2:32"},"returnParameters":{"id":16446,"nodeType":"ParameterList","parameters":[],"src":"1881:0:32"},"scope":16494,"src":"1854:28:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16448,"nodeType":"StructuredDocumentation","src":"1886:114:32","text":"@notice Returns whether the contract is paused\n @return Boolean indicating whether the contract is paused"},"functionSelector":"5c975abb","id":16453,"implemented":false,"kind":"function","modifiers":[],"name":"paused","nameLocation":"2012:6:32","nodeType":"FunctionDefinition","parameters":{"id":16449,"nodeType":"ParameterList","parameters":[],"src":"2018:2:32"},"returnParameters":{"id":16452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16453,"src":"2044:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16450,"name":"bool","nodeType":"ElementaryTypeName","src":"2044:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2043:6:32"},"scope":16494,"src":"2003:47:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16454,"nodeType":"StructuredDocumentation","src":"2116:93:32","text":"@notice Gets the total number of tokens in existence\n @return Total supply of tokens"},"functionSelector":"18160ddd","id":16459,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2221:11:32","nodeType":"FunctionDefinition","parameters":{"id":16455,"nodeType":"ParameterList","parameters":[],"src":"2232:2:32"},"returnParameters":{"id":16458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16459,"src":"2258:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16456,"name":"uint256","nodeType":"ElementaryTypeName","src":"2258:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2257:9:32"},"scope":16494,"src":"2212:55:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16460,"nodeType":"StructuredDocumentation","src":"2271:246:32","text":"@notice Gets the token ID owned by `owner` at a specific `index`\n @param owner Address owning the tokens\n @param index Index of the token in the owner's list of tokens\n @return Token ID owned by `owner` at the specified `index`"},"functionSelector":"2f745c59","id":16469,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"2529:19:32","nodeType":"FunctionDefinition","parameters":{"id":16465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16462,"mutability":"mutable","name":"owner","nameLocation":"2557:5:32","nodeType":"VariableDeclaration","scope":16469,"src":"2549:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16461,"name":"address","nodeType":"ElementaryTypeName","src":"2549:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16464,"mutability":"mutable","name":"index","nameLocation":"2572:5:32","nodeType":"VariableDeclaration","scope":16469,"src":"2564:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16463,"name":"uint256","nodeType":"ElementaryTypeName","src":"2564:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2548:30:32"},"returnParameters":{"id":16468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16469,"src":"2602:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16466,"name":"uint256","nodeType":"ElementaryTypeName","src":"2602:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2601:9:32"},"scope":16494,"src":"2520:91:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16470,"nodeType":"StructuredDocumentation","src":"2615:164:32","text":"@notice Gets the token ID at a specific global `index`\n @param index Index of the token in the total supply\n @return Token ID at the specified `index`"},"functionSelector":"4f6ccce7","id":16477,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"2791:12:32","nodeType":"FunctionDefinition","parameters":{"id":16473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16472,"mutability":"mutable","name":"index","nameLocation":"2812:5:32","nodeType":"VariableDeclaration","scope":16477,"src":"2804:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16471,"name":"uint256","nodeType":"ElementaryTypeName","src":"2804:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2803:15:32"},"returnParameters":{"id":16476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16477,"src":"2842:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16474,"name":"uint256","nodeType":"ElementaryTypeName","src":"2842:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2841:9:32"},"scope":16494,"src":"2782:69:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16478,"nodeType":"StructuredDocumentation","src":"2910:177:32","text":"@notice Checks if the contract supports a specific interface\n @param interfaceId The interface identifier\n @return Boolean indicating if the interface is supported"},"functionSelector":"01ffc9a7","id":16485,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3099:17:32","nodeType":"FunctionDefinition","parameters":{"id":16481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16480,"mutability":"mutable","name":"interfaceId","nameLocation":"3124:11:32","nodeType":"VariableDeclaration","scope":16485,"src":"3117:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":16479,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3117:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3116:20:32"},"returnParameters":{"id":16484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16483,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16485,"src":"3160:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16482,"name":"bool","nodeType":"ElementaryTypeName","src":"3160:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3159:6:32"},"scope":16494,"src":"3090:76:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16486,"nodeType":"StructuredDocumentation","src":"3170:156:32","text":"@notice Returns the balance of tokens held by `owner`\n @param owner Address to query the balance of\n @return Balance of tokens held by `owner`"},"functionSelector":"70a08231","id":16493,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3338:9:32","nodeType":"FunctionDefinition","parameters":{"id":16489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16488,"mutability":"mutable","name":"owner","nameLocation":"3356:5:32","nodeType":"VariableDeclaration","scope":16493,"src":"3348:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16487,"name":"address","nodeType":"ElementaryTypeName","src":"3348:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3347:15:32"},"returnParameters":{"id":16492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16493,"src":"3386:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16490,"name":"uint256","nodeType":"ElementaryTypeName","src":"3386:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3385:9:32"},"scope":16494,"src":"3329:66:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16495,"src":"57:3340:32","usedErrors":[],"usedEvents":[]}],"src":"32:3366:32"},"id":32},"contracts/interfaces/IX2EarnRewardsPool.sol":{"ast":{"absolutePath":"contracts/interfaces/IX2EarnRewardsPool.sol","exportedSymbols":{"IX2EarnRewardsPool":[16819]},"id":16820,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16496,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"33:23:33"},{"abstract":false,"baseContracts":[],"canonicalName":"IX2EarnRewardsPool","contractDependencies":[],"contractKind":"interface","documentation":{"id":16497,"nodeType":"StructuredDocumentation","src":"58:362:33","text":" @title IX2EarnRewardsPool\n @dev Interface designed to be used by a contract that allows x2Earn apps to reward users that performed sustainable actions.\n Funds can be deposited into this contract by specifying the app id that can access the funds.\n Admins of x2EarnApps can withdraw funds from the rewards pool, whihc are sent to the team wallet."},"fullyImplemented":false,"id":16819,"linearizedBaseContracts":[16819],"name":"IX2EarnRewardsPool","nameLocation":"431:18:33","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":16498,"nodeType":"StructuredDocumentation","src":"454:278:33","text":" @dev Event emitted when a new deposit is made into the rewards pool.\n @param amount The amount of $B3TR deposited.\n @param appId The ID of the app for which the deposit was made.\n @param depositor The address of the user that deposited the funds."},"eventSelector":"b129470ed4a80566812579bd667bb40c9cc246b5470797f9291f8a27cd3d1630","id":16506,"name":"NewDeposit","nameLocation":"741:10:33","nodeType":"EventDefinition","parameters":{"id":16505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16500,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"760:6:33","nodeType":"VariableDeclaration","scope":16506,"src":"752:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16499,"name":"uint256","nodeType":"ElementaryTypeName","src":"752:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16502,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"784:5:33","nodeType":"VariableDeclaration","scope":16506,"src":"768:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16501,"name":"bytes32","nodeType":"ElementaryTypeName","src":"768:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16504,"indexed":true,"mutability":"mutable","name":"depositor","nameLocation":"807:9:33","nodeType":"VariableDeclaration","scope":16506,"src":"791:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16503,"name":"address","nodeType":"ElementaryTypeName","src":"791:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"751:66:33"},"src":"735:83:33"},{"anonymous":false,"documentation":{"id":16507,"nodeType":"StructuredDocumentation","src":"822:411:33","text":" @dev Event emitted when a team withdraws funds from the rewards pool.\n @param amount The amount of $B3TR withdrawn.\n @param appId The ID of the app for which the withdrawal was made.\n @param teamWallet The address of the team wallet that received the funds.\n @param withdrawer The address of the user that withdrew the funds.\n @param reason The reason for the withdrawal."},"eventSelector":"d9ffa9a1a748d0d5a7264f97f319a08a8d4925854093354e05965ff93e46d804","id":16519,"name":"TeamWithdrawal","nameLocation":"1242:14:33","nodeType":"EventDefinition","parameters":{"id":16518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16509,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1270:6:33","nodeType":"VariableDeclaration","scope":16519,"src":"1262:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16508,"name":"uint256","nodeType":"ElementaryTypeName","src":"1262:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16511,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"1298:5:33","nodeType":"VariableDeclaration","scope":16519,"src":"1282:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16510,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1282:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16513,"indexed":true,"mutability":"mutable","name":"teamWallet","nameLocation":"1325:10:33","nodeType":"VariableDeclaration","scope":16519,"src":"1309:26:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16512,"name":"address","nodeType":"ElementaryTypeName","src":"1309:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16515,"indexed":false,"mutability":"mutable","name":"withdrawer","nameLocation":"1349:10:33","nodeType":"VariableDeclaration","scope":16519,"src":"1341:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16514,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16517,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"1372:6:33","nodeType":"VariableDeclaration","scope":16519,"src":"1365:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16516,"name":"string","nodeType":"ElementaryTypeName","src":"1365:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1256:126:33"},"src":"1236:147:33"},{"anonymous":false,"documentation":{"id":16520,"nodeType":"StructuredDocumentation","src":"1387:406:33","text":" @dev Event emitted when a reward is emitted by an app.\n @param amount The amount of $B3TR rewarded.\n @param appId The ID of the app that emitted the reward.\n @param receiver The address of the user that received the reward.\n @param proof The proof of the sustainable action that was performed.\n @param distributor The address of the user that distributed the reward."},"eventSelector":"4811710b0c25cc7e05baf214b3a939cf893f1cbff4d0b219e680f069a4f204a2","id":16532,"name":"RewardDistributed","nameLocation":"1802:17:33","nodeType":"EventDefinition","parameters":{"id":16531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16522,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1833:6:33","nodeType":"VariableDeclaration","scope":16532,"src":"1825:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16521,"name":"uint256","nodeType":"ElementaryTypeName","src":"1825:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16524,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"1861:5:33","nodeType":"VariableDeclaration","scope":16532,"src":"1845:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16523,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1845:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16526,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"1888:8:33","nodeType":"VariableDeclaration","scope":16532,"src":"1872:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16525,"name":"address","nodeType":"ElementaryTypeName","src":"1872:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16528,"indexed":false,"mutability":"mutable","name":"proof","nameLocation":"1909:5:33","nodeType":"VariableDeclaration","scope":16532,"src":"1902:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16527,"name":"string","nodeType":"ElementaryTypeName","src":"1902:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16530,"indexed":true,"mutability":"mutable","name":"distributor","nameLocation":"1936:11:33","nodeType":"VariableDeclaration","scope":16532,"src":"1920:27:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16529,"name":"address","nodeType":"ElementaryTypeName","src":"1920:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1819:132:33"},"src":"1796:156:33"},{"anonymous":false,"documentation":{"id":16533,"nodeType":"StructuredDocumentation","src":"1956:227:33","text":" @dev Event emitted when the proof of sustainability external contract call fails.\n @param reason The reason for the failure.\n @param lowLevelData The low level data returned by the external contract."},"eventSelector":"60d31a41349f4f78a019d64d088a78b27da96d17d6b2de5bac97516e9c0df128","id":16539,"name":"RegisterActionFailed","nameLocation":"2192:20:33","nodeType":"EventDefinition","parameters":{"id":16538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16535,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2220:6:33","nodeType":"VariableDeclaration","scope":16539,"src":"2213:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16534,"name":"string","nodeType":"ElementaryTypeName","src":"2213:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16537,"indexed":false,"mutability":"mutable","name":"lowLevelData","nameLocation":"2234:12:33","nodeType":"VariableDeclaration","scope":16539,"src":"2228:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16536,"name":"bytes","nodeType":"ElementaryTypeName","src":"2228:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2212:35:33"},"src":"2186:62:33"},{"anonymous":false,"documentation":{"id":16540,"nodeType":"StructuredDocumentation","src":"2252:194:33","text":" @dev Event emitted when an app's reward distribution is paused.\n @param appId The ID of the app that was paused.\n @param admin The address of the admin who paused the app."},"eventSelector":"acca5e415b8aed07cbd321de9d16effb4a77548130d6e3f218adb63b40d53f48","id":16546,"name":"AppPaused","nameLocation":"2455:9:33","nodeType":"EventDefinition","parameters":{"id":16545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16542,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"2481:5:33","nodeType":"VariableDeclaration","scope":16546,"src":"2465:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16541,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2465:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16544,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"2504:5:33","nodeType":"VariableDeclaration","scope":16546,"src":"2488:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16543,"name":"address","nodeType":"ElementaryTypeName","src":"2488:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:46:33"},"src":"2449:62:33"},{"anonymous":false,"documentation":{"id":16547,"nodeType":"StructuredDocumentation","src":"2515:200:33","text":" @dev Event emitted when an app's reward distribution is unpaused.\n @param appId The ID of the app that was unpaused.\n @param admin The address of the admin who unpaused the app."},"eventSelector":"23a8a3a8a84537d60bdd2345bf190d189d31179dbbb1c6aefe29166ad8f6579a","id":16553,"name":"AppUnpaused","nameLocation":"2724:11:33","nodeType":"EventDefinition","parameters":{"id":16552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16549,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"2752:5:33","nodeType":"VariableDeclaration","scope":16553,"src":"2736:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16548,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2736:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16551,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"2775:5:33","nodeType":"VariableDeclaration","scope":16553,"src":"2759:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16550,"name":"address","nodeType":"ElementaryTypeName","src":"2759:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2735:46:33"},"src":"2718:64:33"},{"anonymous":false,"documentation":{"id":16554,"nodeType":"StructuredDocumentation","src":"2785:423:33","text":" @dev Event emitted when a reward is emitted by an app with proof and metadata.\n @param amount The amount of $B3TR rewarded.\n @param appId The ID of the app that emitted the reward.\n @param receiver The address of the user that received the reward.\n @param metadata The metadata of the sustainable action that was performed.\n @param distributor The address of the user that distributed the reward."},"eventSelector":"c56b89dcf339c479f6e2af79e456c592b86e3014b888582db81d00ff7c51c1c6","id":16566,"name":"RewardMetadata","nameLocation":"3217:14:33","nodeType":"EventDefinition","parameters":{"id":16565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16556,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3245:6:33","nodeType":"VariableDeclaration","scope":16566,"src":"3237:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16555,"name":"uint256","nodeType":"ElementaryTypeName","src":"3237:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16558,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"3273:5:33","nodeType":"VariableDeclaration","scope":16566,"src":"3257:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16557,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3257:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16560,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"3300:8:33","nodeType":"VariableDeclaration","scope":16566,"src":"3284:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16559,"name":"address","nodeType":"ElementaryTypeName","src":"3284:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16562,"indexed":false,"mutability":"mutable","name":"metadata","nameLocation":"3321:8:33","nodeType":"VariableDeclaration","scope":16566,"src":"3314:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16561,"name":"string","nodeType":"ElementaryTypeName","src":"3314:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16564,"indexed":true,"mutability":"mutable","name":"distributor","nameLocation":"3351:11:33","nodeType":"VariableDeclaration","scope":16566,"src":"3335:27:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16563,"name":"address","nodeType":"ElementaryTypeName","src":"3335:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3231:135:33"},"src":"3211:156:33"},{"anonymous":false,"documentation":{"id":16567,"nodeType":"StructuredDocumentation","src":"3371:173:33","text":" @dev Event emitted when the admin configure the rewards pool balance\n @param appId - the app ID\n @param enable - true to enable, false to disable"},"eventSelector":"00931d752286e23fcdacca93deeddd7c78cee51157d50c56f09f3a5cc7c14b77","id":16573,"name":"RewardsPoolBalanceEnabled","nameLocation":"3553:25:33","nodeType":"EventDefinition","parameters":{"id":16572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16569,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"3595:5:33","nodeType":"VariableDeclaration","scope":16573,"src":"3579:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16568,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3579:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16571,"indexed":false,"mutability":"mutable","name":"enable","nameLocation":"3607:6:33","nodeType":"VariableDeclaration","scope":16573,"src":"3602:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16570,"name":"bool","nodeType":"ElementaryTypeName","src":"3602:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3578:36:33"},"src":"3547:68:33"},{"anonymous":false,"documentation":{"id":16574,"nodeType":"StructuredDocumentation","src":"3619:427:33","text":" @dev Event emitted when the balance of the rewards pool for an app is initialized or updated.\n @param appId The ID of the app for which the balance was updated.\n @param amount The amount being added or removed from the rewards pool.\n @param availableFunds The current balance of the available funds for the app.\n @param rewardsPoolBalance The current balance of the rewards pool for the app."},"eventSelector":"7edf7f16b6ec1a7be78507b450fd1504bc48e72ff18e5b620a6f0fd24717f49d","id":16584,"name":"RewardsPoolBalanceUpdated","nameLocation":"4055:25:33","nodeType":"EventDefinition","parameters":{"id":16583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16576,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"4097:5:33","nodeType":"VariableDeclaration","scope":16584,"src":"4081:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4081:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16578,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4112:6:33","nodeType":"VariableDeclaration","scope":16584,"src":"4104:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16577,"name":"uint256","nodeType":"ElementaryTypeName","src":"4104:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16580,"indexed":false,"mutability":"mutable","name":"availableFunds","nameLocation":"4128:14:33","nodeType":"VariableDeclaration","scope":16584,"src":"4120:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16579,"name":"uint256","nodeType":"ElementaryTypeName","src":"4120:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16582,"indexed":false,"mutability":"mutable","name":"rewardsPoolBalance","nameLocation":"4152:18:33","nodeType":"VariableDeclaration","scope":16584,"src":"4144:26:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16581,"name":"uint256","nodeType":"ElementaryTypeName","src":"4144:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4080:91:33"},"src":"4049:123:33"},{"documentation":{"id":16585,"nodeType":"StructuredDocumentation","src":"4177:113:33","text":" @dev Retrieves the current version of the contract.\n @return The version of the contract."},"functionSelector":"54fd4d50","id":16590,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"4302:7:33","nodeType":"FunctionDefinition","parameters":{"id":16586,"nodeType":"ParameterList","parameters":[],"src":"4309:2:33"},"returnParameters":{"id":16589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16590,"src":"4335:13:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16587,"name":"string","nodeType":"ElementaryTypeName","src":"4335:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4334:15:33"},"scope":16819,"src":"4293:57:33","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":16591,"nodeType":"StructuredDocumentation","src":"4354:181:33","text":" @dev Function used by x2earn apps to deposit funds into the rewards pool.\n @param amount The amount of $B3TR to deposit.\n @param appId The ID of the app."},"functionSelector":"c9630cb0","id":16600,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"4547:7:33","nodeType":"FunctionDefinition","parameters":{"id":16596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16593,"mutability":"mutable","name":"amount","nameLocation":"4563:6:33","nodeType":"VariableDeclaration","scope":16600,"src":"4555:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16592,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16595,"mutability":"mutable","name":"appId","nameLocation":"4579:5:33","nodeType":"VariableDeclaration","scope":16600,"src":"4571:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16594,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4571:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4554:31:33"},"returnParameters":{"id":16599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16600,"src":"4604:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16597,"name":"bool","nodeType":"ElementaryTypeName","src":"4604:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4603:6:33"},"scope":16819,"src":"4538:72:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16601,"nodeType":"StructuredDocumentation","src":"4614:233:33","text":" @dev Function used by x2earn apps to withdraw funds from the rewards pool.\n @param amount The amount of $B3TR to withdraw.\n @param appId The ID of the app.\n @param reason The reason for the withdrawal."},"functionSelector":"cfe706b3","id":16610,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"4859:8:33","nodeType":"FunctionDefinition","parameters":{"id":16608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16603,"mutability":"mutable","name":"amount","nameLocation":"4876:6:33","nodeType":"VariableDeclaration","scope":16610,"src":"4868:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16602,"name":"uint256","nodeType":"ElementaryTypeName","src":"4868:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16605,"mutability":"mutable","name":"appId","nameLocation":"4892:5:33","nodeType":"VariableDeclaration","scope":16610,"src":"4884:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4884:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16607,"mutability":"mutable","name":"reason","nameLocation":"4913:6:33","nodeType":"VariableDeclaration","scope":16610,"src":"4899:20:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16606,"name":"string","nodeType":"ElementaryTypeName","src":"4899:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4867:53:33"},"returnParameters":{"id":16609,"nodeType":"ParameterList","parameters":[],"src":"4929:0:33"},"scope":16819,"src":"4850:80:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16611,"nodeType":"StructuredDocumentation","src":"4934:165:33","text":" @dev Gets the amount of funds available for an app to withdraw and reward user if the dual-pool is disabled.\n @param appId The ID of the app."},"functionSelector":"f2744334","id":16618,"implemented":false,"kind":"function","modifiers":[],"name":"availableFunds","nameLocation":"5111:14:33","nodeType":"FunctionDefinition","parameters":{"id":16614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16613,"mutability":"mutable","name":"appId","nameLocation":"5134:5:33","nodeType":"VariableDeclaration","scope":16618,"src":"5126:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16612,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5126:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5125:15:33"},"returnParameters":{"id":16617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16616,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16618,"src":"5164:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16615,"name":"uint256","nodeType":"ElementaryTypeName","src":"5164:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5163:9:33"},"scope":16819,"src":"5102:71:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16619,"nodeType":"StructuredDocumentation","src":"5177:136:33","text":" @dev Gets the total of funds available for withdrawal and rewards distribution.\n @param appId The ID of the app."},"functionSelector":"b51fc445","id":16626,"implemented":false,"kind":"function","modifiers":[],"name":"totalBalance","nameLocation":"5325:12:33","nodeType":"FunctionDefinition","parameters":{"id":16622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16621,"mutability":"mutable","name":"appId","nameLocation":"5346:5:33","nodeType":"VariableDeclaration","scope":16626,"src":"5338:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5338:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5337:15:33"},"returnParameters":{"id":16625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16624,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16626,"src":"5376:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16623,"name":"uint256","nodeType":"ElementaryTypeName","src":"5376:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5375:9:33"},"scope":16819,"src":"5316:69:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16627,"nodeType":"StructuredDocumentation","src":"5389:127:33","text":" @dev Gets either the dual-pool rewards pool balance is enabled or not.\n @param appId The ID of the app."},"functionSelector":"b81ddb2e","id":16634,"implemented":false,"kind":"function","modifiers":[],"name":"isRewardsPoolEnabled","nameLocation":"5528:20:33","nodeType":"FunctionDefinition","parameters":{"id":16630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16629,"mutability":"mutable","name":"appId","nameLocation":"5557:5:33","nodeType":"VariableDeclaration","scope":16634,"src":"5549:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16628,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5549:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5548:15:33"},"returnParameters":{"id":16633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16632,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16634,"src":"5587:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16631,"name":"bool","nodeType":"ElementaryTypeName","src":"5587:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5586:6:33"},"scope":16819,"src":"5519:74:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16635,"nodeType":"StructuredDocumentation","src":"5597:128:33","text":" @dev Gets whether the distribution is paused or not for a specific xApp\n @param appId The ID of the app."},"functionSelector":"8a7793b1","id":16642,"implemented":false,"kind":"function","modifiers":[],"name":"isDistributionPaused","nameLocation":"5737:20:33","nodeType":"FunctionDefinition","parameters":{"id":16638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16637,"mutability":"mutable","name":"appId","nameLocation":"5766:5:33","nodeType":"VariableDeclaration","scope":16642,"src":"5758:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16636,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5758:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5757:15:33"},"returnParameters":{"id":16641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16642,"src":"5796:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16639,"name":"bool","nodeType":"ElementaryTypeName","src":"5796:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5795:6:33"},"scope":16819,"src":"5728:74:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16643,"nodeType":"StructuredDocumentation","src":"5806:201:33","text":" @dev Enables the rewards pool for a newly created app.\n @param appId The ID of the app.\n @notice This function can only be called by the X2EarnApps contract during app submission"},"functionSelector":"1a25071f","id":16648,"implemented":false,"kind":"function","modifiers":[],"name":"enableRewardsPoolForNewApp","nameLocation":"6019:26:33","nodeType":"FunctionDefinition","parameters":{"id":16646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16645,"mutability":"mutable","name":"appId","nameLocation":"6054:5:33","nodeType":"VariableDeclaration","scope":16648,"src":"6046:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6046:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6045:15:33"},"returnParameters":{"id":16647,"nodeType":"ParameterList","parameters":[],"src":"6069:0:33"},"scope":16819,"src":"6010:60:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16649,"nodeType":"StructuredDocumentation","src":"6076:152:33","text":" @dev Gets the amount of funds available for an app to reward users if the dual-pool is enabled.\n @param appId The ID of the app."},"functionSelector":"60dbdd08","id":16656,"implemented":false,"kind":"function","modifiers":[],"name":"rewardsPoolBalance","nameLocation":"6240:18:33","nodeType":"FunctionDefinition","parameters":{"id":16652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16651,"mutability":"mutable","name":"appId","nameLocation":"6267:5:33","nodeType":"VariableDeclaration","scope":16656,"src":"6259:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16650,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6259:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6258:15:33"},"returnParameters":{"id":16655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16656,"src":"6297:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16653,"name":"uint256","nodeType":"ElementaryTypeName","src":"6297:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6296:9:33"},"scope":16819,"src":"6231:75:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16657,"nodeType":"StructuredDocumentation","src":"6312:399:33","text":" @dev Function used by x2earn apps to reward users that performed sustainable actions.\n @param appId the app id that is emitting the reward\n @param amount the amount of B3TR token the user is rewarded with\n @param receiver the address of the user that performed the sustainable action and is rewarded\n @param proof deprecated argument, pass an empty string instead"},"functionSelector":"f7335f11","id":16668,"implemented":false,"kind":"function","modifiers":[],"name":"distributeReward","nameLocation":"6723:16:33","nodeType":"FunctionDefinition","parameters":{"id":16666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16659,"mutability":"mutable","name":"appId","nameLocation":"6748:5:33","nodeType":"VariableDeclaration","scope":16668,"src":"6740:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16658,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6740:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16661,"mutability":"mutable","name":"amount","nameLocation":"6763:6:33","nodeType":"VariableDeclaration","scope":16668,"src":"6755:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16660,"name":"uint256","nodeType":"ElementaryTypeName","src":"6755:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16663,"mutability":"mutable","name":"receiver","nameLocation":"6779:8:33","nodeType":"VariableDeclaration","scope":16668,"src":"6771:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16662,"name":"address","nodeType":"ElementaryTypeName","src":"6771:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16665,"mutability":"mutable","name":"proof","nameLocation":"6803:5:33","nodeType":"VariableDeclaration","scope":16668,"src":"6789:19:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16664,"name":"string","nodeType":"ElementaryTypeName","src":"6789:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6739:70:33"},"returnParameters":{"id":16667,"nodeType":"ParameterList","parameters":[],"src":"6818:0:33"},"scope":16819,"src":"6714:105:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16669,"nodeType":"StructuredDocumentation","src":"6823:505:33","text":" @dev Function used by x2earn apps to reward users that performed sustainable actions.\n @notice This function is depracted in favor of distributeRewardWithProof.\n @param appId the app id that is emitting the reward\n @param amount the amount of B3TR token the user is rewarded with\n @param receiver the address of the user that performed the sustainable action and is rewarded\n @param proof the JSON string that contains the proof and impact of the sustainable action"},"functionSelector":"69933c78","id":16680,"implemented":false,"kind":"function","modifiers":[],"name":"distributeRewardDeprecated","nameLocation":"7340:26:33","nodeType":"FunctionDefinition","parameters":{"id":16678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16671,"mutability":"mutable","name":"appId","nameLocation":"7375:5:33","nodeType":"VariableDeclaration","scope":16680,"src":"7367:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16670,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7367:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16673,"mutability":"mutable","name":"amount","nameLocation":"7390:6:33","nodeType":"VariableDeclaration","scope":16680,"src":"7382:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16672,"name":"uint256","nodeType":"ElementaryTypeName","src":"7382:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16675,"mutability":"mutable","name":"receiver","nameLocation":"7406:8:33","nodeType":"VariableDeclaration","scope":16680,"src":"7398:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16674,"name":"address","nodeType":"ElementaryTypeName","src":"7398:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16677,"mutability":"mutable","name":"proof","nameLocation":"7430:5:33","nodeType":"VariableDeclaration","scope":16680,"src":"7416:19:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16676,"name":"string","nodeType":"ElementaryTypeName","src":"7416:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7366:70:33"},"returnParameters":{"id":16679,"nodeType":"ParameterList","parameters":[],"src":"7445:0:33"},"scope":16819,"src":"7331:115:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16681,"nodeType":"StructuredDocumentation","src":"7450:695:33","text":" @dev Function used by x2earn apps to reward users that performed sustainable actions.\n @param appId the app id that is emitting the reward\n @param amount the amount of B3TR token the user is rewarded with\n @param receiver the address of the user that performed the sustainable action and is rewarded\n @param proofTypes the types of the proof of the sustainable action\n @param proofValues the values of the proof of the sustainable action\n @param impactCodes the codes of the impacts of the sustainable action\n @param impactValues the values of the impacts of the sustainable action\n @param description the description of the sustainable action"},"functionSelector":"7b924532","id":16704,"implemented":false,"kind":"function","modifiers":[],"name":"distributeRewardWithProof","nameLocation":"8157:25:33","nodeType":"FunctionDefinition","parameters":{"id":16702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16683,"mutability":"mutable","name":"appId","nameLocation":"8196:5:33","nodeType":"VariableDeclaration","scope":16704,"src":"8188:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16682,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8188:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16685,"mutability":"mutable","name":"amount","nameLocation":"8215:6:33","nodeType":"VariableDeclaration","scope":16704,"src":"8207:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16684,"name":"uint256","nodeType":"ElementaryTypeName","src":"8207:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16687,"mutability":"mutable","name":"receiver","nameLocation":"8235:8:33","nodeType":"VariableDeclaration","scope":16704,"src":"8227:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16686,"name":"address","nodeType":"ElementaryTypeName","src":"8227:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16690,"mutability":"mutable","name":"proofTypes","nameLocation":"8265:10:33","nodeType":"VariableDeclaration","scope":16704,"src":"8249:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16688,"name":"string","nodeType":"ElementaryTypeName","src":"8249:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16689,"nodeType":"ArrayTypeName","src":"8249:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16693,"mutability":"mutable","name":"proofValues","nameLocation":"8331:11:33","nodeType":"VariableDeclaration","scope":16704,"src":"8315:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16691,"name":"string","nodeType":"ElementaryTypeName","src":"8315:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16692,"nodeType":"ArrayTypeName","src":"8315:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16696,"mutability":"mutable","name":"impactCodes","nameLocation":"8397:11:33","nodeType":"VariableDeclaration","scope":16704,"src":"8381:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16694,"name":"string","nodeType":"ElementaryTypeName","src":"8381:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16695,"nodeType":"ArrayTypeName","src":"8381:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16699,"mutability":"mutable","name":"impactValues","nameLocation":"8454:12:33","nodeType":"VariableDeclaration","scope":16704,"src":"8437:29:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16697,"name":"uint256","nodeType":"ElementaryTypeName","src":"8437:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16698,"nodeType":"ArrayTypeName","src":"8437:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16701,"mutability":"mutable","name":"description","nameLocation":"8505:11:33","nodeType":"VariableDeclaration","scope":16704,"src":"8491:25:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16700,"name":"string","nodeType":"ElementaryTypeName","src":"8491:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8182:338:33"},"returnParameters":{"id":16703,"nodeType":"ParameterList","parameters":[],"src":"8529:0:33"},"scope":16819,"src":"8148:382:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16705,"nodeType":"StructuredDocumentation","src":"8534:779:33","text":" @dev Function used by x2earn apps to reward users that performed sustainable actions and emit metadata event.\n @param appId the app id that is emitting the reward\n @param amount the amount of B3TR token the user is rewarded with\n @param receiver the address of the user that performed the sustainable action and is rewarded\n @param proofTypes the types of the proof of the sustainable action\n @param proofValues the values of the proof of the sustainable action\n @param impactCodes the codes of the impacts of the sustainable action\n @param impactValues the values of the impacts of the sustainable action\n @param description the description of the sustainable action\n @param metadata the metadata of the sustainable action"},"functionSelector":"0eb11eb8","id":16730,"implemented":false,"kind":"function","modifiers":[],"name":"distributeRewardWithProofAndMetadata","nameLocation":"9325:36:33","nodeType":"FunctionDefinition","parameters":{"id":16728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16707,"mutability":"mutable","name":"appId","nameLocation":"9375:5:33","nodeType":"VariableDeclaration","scope":16730,"src":"9367:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16706,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9367:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16709,"mutability":"mutable","name":"amount","nameLocation":"9394:6:33","nodeType":"VariableDeclaration","scope":16730,"src":"9386:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16708,"name":"uint256","nodeType":"ElementaryTypeName","src":"9386:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16711,"mutability":"mutable","name":"receiver","nameLocation":"9414:8:33","nodeType":"VariableDeclaration","scope":16730,"src":"9406:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16710,"name":"address","nodeType":"ElementaryTypeName","src":"9406:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16714,"mutability":"mutable","name":"proofTypes","nameLocation":"9444:10:33","nodeType":"VariableDeclaration","scope":16730,"src":"9428:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16712,"name":"string","nodeType":"ElementaryTypeName","src":"9428:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16713,"nodeType":"ArrayTypeName","src":"9428:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16717,"mutability":"mutable","name":"proofValues","nameLocation":"9510:11:33","nodeType":"VariableDeclaration","scope":16730,"src":"9494:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16715,"name":"string","nodeType":"ElementaryTypeName","src":"9494:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16716,"nodeType":"ArrayTypeName","src":"9494:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16720,"mutability":"mutable","name":"impactCodes","nameLocation":"9576:11:33","nodeType":"VariableDeclaration","scope":16730,"src":"9560:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16718,"name":"string","nodeType":"ElementaryTypeName","src":"9560:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16719,"nodeType":"ArrayTypeName","src":"9560:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16723,"mutability":"mutable","name":"impactValues","nameLocation":"9633:12:33","nodeType":"VariableDeclaration","scope":16730,"src":"9616:29:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16721,"name":"uint256","nodeType":"ElementaryTypeName","src":"9616:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16722,"nodeType":"ArrayTypeName","src":"9616:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16725,"mutability":"mutable","name":"description","nameLocation":"9684:11:33","nodeType":"VariableDeclaration","scope":16730,"src":"9670:25:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16724,"name":"string","nodeType":"ElementaryTypeName","src":"9670:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16727,"mutability":"mutable","name":"metadata","nameLocation":"9715:8:33","nodeType":"VariableDeclaration","scope":16730,"src":"9701:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16726,"name":"string","nodeType":"ElementaryTypeName","src":"9701:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9361:413:33"},"returnParameters":{"id":16729,"nodeType":"ParameterList","parameters":[],"src":"9783:0:33"},"scope":16819,"src":"9316:468:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16731,"nodeType":"StructuredDocumentation","src":"9788:486:33","text":" @dev Function used by x2earn apps to reward users and attribute the action to a specific round.\n @param appId the app id that is emitting the reward\n @param amount the amount of B3TR token the user is rewarded with\n @param receiver the address of the user that performed the sustainable action and is rewarded\n @param proof deprecated argument, pass an empty string instead\n @param actionRound the round in which the action was actually performed"},"functionSelector":"ad0f96b1","id":16744,"implemented":false,"kind":"function","modifiers":[],"name":"distributeRewardForRound","nameLocation":"10286:24:33","nodeType":"FunctionDefinition","parameters":{"id":16742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16733,"mutability":"mutable","name":"appId","nameLocation":"10324:5:33","nodeType":"VariableDeclaration","scope":16744,"src":"10316:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10316:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16735,"mutability":"mutable","name":"amount","nameLocation":"10343:6:33","nodeType":"VariableDeclaration","scope":16744,"src":"10335:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16734,"name":"uint256","nodeType":"ElementaryTypeName","src":"10335:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16737,"mutability":"mutable","name":"receiver","nameLocation":"10363:8:33","nodeType":"VariableDeclaration","scope":16744,"src":"10355:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16736,"name":"address","nodeType":"ElementaryTypeName","src":"10355:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16739,"mutability":"mutable","name":"proof","nameLocation":"10391:5:33","nodeType":"VariableDeclaration","scope":16744,"src":"10377:19:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16738,"name":"string","nodeType":"ElementaryTypeName","src":"10377:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16741,"mutability":"mutable","name":"actionRound","nameLocation":"10410:11:33","nodeType":"VariableDeclaration","scope":16744,"src":"10402:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16740,"name":"uint256","nodeType":"ElementaryTypeName","src":"10402:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10310:115:33"},"returnParameters":{"id":16743,"nodeType":"ParameterList","parameters":[],"src":"10434:0:33"},"scope":16819,"src":"10277:158:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16745,"nodeType":"StructuredDocumentation","src":"10439:793:33","text":" @dev Function used by x2earn apps to reward users with proof and attribute the action to a specific round.\n @param appId the app id that is emitting the reward\n @param amount the amount of B3TR token the user is rewarded with\n @param receiver the address of the user that performed the sustainable action and is rewarded\n @param proofTypes the types of the proof of the sustainable action\n @param proofValues the values of the proof of the sustainable action\n @param impactCodes the codes of the impacts of the sustainable action\n @param impactValues the values of the impacts of the sustainable action\n @param description the description of the sustainable action\n @param actionRound the round in which the action was actually performed"},"functionSelector":"6b2c1bb8","id":16770,"implemented":false,"kind":"function","modifiers":[],"name":"distributeRewardWithProofForRound","nameLocation":"11244:33:33","nodeType":"FunctionDefinition","parameters":{"id":16768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16747,"mutability":"mutable","name":"appId","nameLocation":"11291:5:33","nodeType":"VariableDeclaration","scope":16770,"src":"11283:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16746,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11283:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16749,"mutability":"mutable","name":"amount","nameLocation":"11310:6:33","nodeType":"VariableDeclaration","scope":16770,"src":"11302:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16748,"name":"uint256","nodeType":"ElementaryTypeName","src":"11302:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16751,"mutability":"mutable","name":"receiver","nameLocation":"11330:8:33","nodeType":"VariableDeclaration","scope":16770,"src":"11322:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16750,"name":"address","nodeType":"ElementaryTypeName","src":"11322:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16754,"mutability":"mutable","name":"proofTypes","nameLocation":"11360:10:33","nodeType":"VariableDeclaration","scope":16770,"src":"11344:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16752,"name":"string","nodeType":"ElementaryTypeName","src":"11344:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16753,"nodeType":"ArrayTypeName","src":"11344:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16757,"mutability":"mutable","name":"proofValues","nameLocation":"11392:11:33","nodeType":"VariableDeclaration","scope":16770,"src":"11376:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16755,"name":"string","nodeType":"ElementaryTypeName","src":"11376:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16756,"nodeType":"ArrayTypeName","src":"11376:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16760,"mutability":"mutable","name":"impactCodes","nameLocation":"11425:11:33","nodeType":"VariableDeclaration","scope":16770,"src":"11409:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16758,"name":"string","nodeType":"ElementaryTypeName","src":"11409:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16759,"nodeType":"ArrayTypeName","src":"11409:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16763,"mutability":"mutable","name":"impactValues","nameLocation":"11459:12:33","nodeType":"VariableDeclaration","scope":16770,"src":"11442:29:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16761,"name":"uint256","nodeType":"ElementaryTypeName","src":"11442:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16762,"nodeType":"ArrayTypeName","src":"11442:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16765,"mutability":"mutable","name":"description","nameLocation":"11491:11:33","nodeType":"VariableDeclaration","scope":16770,"src":"11477:25:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16764,"name":"string","nodeType":"ElementaryTypeName","src":"11477:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16767,"mutability":"mutable","name":"actionRound","nameLocation":"11516:11:33","nodeType":"VariableDeclaration","scope":16770,"src":"11508:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16766,"name":"uint256","nodeType":"ElementaryTypeName","src":"11508:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11277:254:33"},"returnParameters":{"id":16769,"nodeType":"ParameterList","parameters":[],"src":"11540:0:33"},"scope":16819,"src":"11235:306:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16771,"nodeType":"StructuredDocumentation","src":"11545:863:33","text":" @dev Function used by x2earn apps to reward users with proof, metadata and attribute the action to a specific round.\n @param appId the app id that is emitting the reward\n @param amount the amount of B3TR token the user is rewarded with\n @param receiver the address of the user that performed the sustainable action and is rewarded\n @param proofTypes the types of the proof of the sustainable action\n @param proofValues the values of the proof of the sustainable action\n @param impactCodes the codes of the impacts of the sustainable action\n @param impactValues the values of the impacts of the sustainable action\n @param description the description of the sustainable action\n @param metadata the metadata of the sustainable action\n @param actionRound the round in which the action was actually performed"},"functionSelector":"2a308afa","id":16798,"implemented":false,"kind":"function","modifiers":[],"name":"distributeRewardWithProofAndMetadataForRound","nameLocation":"12420:44:33","nodeType":"FunctionDefinition","parameters":{"id":16796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16773,"mutability":"mutable","name":"appId","nameLocation":"12478:5:33","nodeType":"VariableDeclaration","scope":16798,"src":"12470:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16772,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12470:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16775,"mutability":"mutable","name":"amount","nameLocation":"12497:6:33","nodeType":"VariableDeclaration","scope":16798,"src":"12489:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16774,"name":"uint256","nodeType":"ElementaryTypeName","src":"12489:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16777,"mutability":"mutable","name":"receiver","nameLocation":"12517:8:33","nodeType":"VariableDeclaration","scope":16798,"src":"12509:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16776,"name":"address","nodeType":"ElementaryTypeName","src":"12509:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16780,"mutability":"mutable","name":"proofTypes","nameLocation":"12547:10:33","nodeType":"VariableDeclaration","scope":16798,"src":"12531:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16778,"name":"string","nodeType":"ElementaryTypeName","src":"12531:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16779,"nodeType":"ArrayTypeName","src":"12531:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16783,"mutability":"mutable","name":"proofValues","nameLocation":"12579:11:33","nodeType":"VariableDeclaration","scope":16798,"src":"12563:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16781,"name":"string","nodeType":"ElementaryTypeName","src":"12563:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16782,"nodeType":"ArrayTypeName","src":"12563:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16786,"mutability":"mutable","name":"impactCodes","nameLocation":"12612:11:33","nodeType":"VariableDeclaration","scope":16798,"src":"12596:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16784,"name":"string","nodeType":"ElementaryTypeName","src":"12596:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16785,"nodeType":"ArrayTypeName","src":"12596:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16789,"mutability":"mutable","name":"impactValues","nameLocation":"12646:12:33","nodeType":"VariableDeclaration","scope":16798,"src":"12629:29:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16787,"name":"uint256","nodeType":"ElementaryTypeName","src":"12629:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16788,"nodeType":"ArrayTypeName","src":"12629:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16791,"mutability":"mutable","name":"description","nameLocation":"12678:11:33","nodeType":"VariableDeclaration","scope":16798,"src":"12664:25:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16790,"name":"string","nodeType":"ElementaryTypeName","src":"12664:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16793,"mutability":"mutable","name":"metadata","nameLocation":"12709:8:33","nodeType":"VariableDeclaration","scope":16798,"src":"12695:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16792,"name":"string","nodeType":"ElementaryTypeName","src":"12695:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":16795,"mutability":"mutable","name":"actionRound","nameLocation":"12731:11:33","nodeType":"VariableDeclaration","scope":16798,"src":"12723:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16794,"name":"uint256","nodeType":"ElementaryTypeName","src":"12723:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12464:282:33"},"returnParameters":{"id":16797,"nodeType":"ParameterList","parameters":[],"src":"12755:0:33"},"scope":16819,"src":"12411:345:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":16799,"nodeType":"StructuredDocumentation","src":"12760:524:33","text":" @dev Builds the JSON proof string that will be stored\n on chain regarding the proofs, impacts and description of the sustainable action.\n @param proofTypes the types of the proof of the sustainable action\n @param proofValues the values of the proof of the sustainable action\n @param impactCodes the codes of the impacts of the sustainable action\n @param impactValues the values of the impacts of the sustainable action\n @param description the description of the sustainable action"},"functionSelector":"4879ed08","id":16818,"implemented":false,"kind":"function","modifiers":[],"name":"buildProof","nameLocation":"13296:10:33","nodeType":"FunctionDefinition","parameters":{"id":16814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16802,"mutability":"mutable","name":"proofTypes","nameLocation":"13328:10:33","nodeType":"VariableDeclaration","scope":16818,"src":"13312:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16800,"name":"string","nodeType":"ElementaryTypeName","src":"13312:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16801,"nodeType":"ArrayTypeName","src":"13312:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16805,"mutability":"mutable","name":"proofValues","nameLocation":"13394:11:33","nodeType":"VariableDeclaration","scope":16818,"src":"13378:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16803,"name":"string","nodeType":"ElementaryTypeName","src":"13378:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16804,"nodeType":"ArrayTypeName","src":"13378:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16808,"mutability":"mutable","name":"impactCodes","nameLocation":"13460:11:33","nodeType":"VariableDeclaration","scope":16818,"src":"13444:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":16806,"name":"string","nodeType":"ElementaryTypeName","src":"13444:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":16807,"nodeType":"ArrayTypeName","src":"13444:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":16811,"mutability":"mutable","name":"impactValues","nameLocation":"13517:12:33","nodeType":"VariableDeclaration","scope":16818,"src":"13500:29:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16809,"name":"uint256","nodeType":"ElementaryTypeName","src":"13500:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16810,"nodeType":"ArrayTypeName","src":"13500:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16813,"mutability":"mutable","name":"description","nameLocation":"13568:11:33","nodeType":"VariableDeclaration","scope":16818,"src":"13554:25:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16812,"name":"string","nodeType":"ElementaryTypeName","src":"13554:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13306:277:33"},"returnParameters":{"id":16817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16818,"src":"13602:13:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16815,"name":"string","nodeType":"ElementaryTypeName","src":"13602:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13601:15:33"},"scope":16819,"src":"13287:330:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16820,"src":"421:13198:33","usedErrors":[],"usedEvents":[16506,16519,16532,16539,16546,16553,16566,16573,16584]}],"src":"33:13587:33"},"id":33},"contracts/interfaces/IXAllocationVotingGovernor.sol":{"ast":{"absolutePath":"contracts/interfaces/IXAllocationVotingGovernor.sol","exportedSymbols":{"IERC165":[2040],"IERC6372":[1115],"IXAllocationVotingGovernor":[17346]},"id":17347,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16821,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:34"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","file":"@openzeppelin/contracts/interfaces/IERC165.sol","id":16823,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17347,"sourceUnit":1101,"src":"57:73:34","symbolAliases":[{"foreign":{"id":16822,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2040,"src":"66:7:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC6372.sol","file":"@openzeppelin/contracts/interfaces/IERC6372.sol","id":16825,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17347,"sourceUnit":1116,"src":"131:75:34","symbolAliases":[{"foreign":{"id":16824,"name":"IERC6372","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"140:8:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16827,"name":"IERC165","nameLocations":["1267:7:34"],"nodeType":"IdentifierPath","referencedDeclaration":2040,"src":"1267:7:34"},"id":16828,"nodeType":"InheritanceSpecifier","src":"1267:7:34"},{"baseName":{"id":16829,"name":"IERC6372","nameLocations":["1276:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":1115,"src":"1276:8:34"},"id":16830,"nodeType":"InheritanceSpecifier","src":"1276:8:34"}],"canonicalName":"IXAllocationVotingGovernor","contractDependencies":[],"contractKind":"interface","documentation":{"id":16826,"nodeType":"StructuredDocumentation","src":"208:1018:34","text":" @dev Interface of the distribution allocation voting for the x-allocation pool reward distributions.\n This interface was forked from OpenZeppelin's IGovernor.sol and modified to fit the needs of a voting mechanism\n where a user can vote on multpile x-apps belonging to the ecosystem and fractionalize their votes accross the x-apps.\n There can be only one round per time.\n After the round is created  it becomes immediately active.\n There can be only two possible outcomes of a round: it succeeds or it fails.\n To succeed the only requirement is that the quorum is reached.\n New allocation rounds can be started only by the Emissions contract, this way we can align the duration\n of emission cycles and allocation rounds.\n If the round fails, we will need to “finalize” it, which means we will create a pointer to the last succeeded round\n where shares should be calculated. Anyone can finalize the failed round,\n but it will be automatically done when a new round starts."},"fullyImplemented":false,"id":17346,"linearizedBaseContracts":[17346,1115,2040],"name":"IXAllocationVotingGovernor","nameLocation":"1237:26:34","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IXAllocationVotingGovernor.RoundState","id":16834,"members":[{"id":16831,"name":"Active","nameLocation":"1311:6:34","nodeType":"EnumValue","src":"1311:6:34"},{"id":16832,"name":"Failed","nameLocation":"1323:6:34","nodeType":"EnumValue","src":"1323:6:34"},{"id":16833,"name":"Succeeded","nameLocation":"1335:9:34","nodeType":"EnumValue","src":"1335:9:34"}],"name":"RoundState","nameLocation":"1294:10:34","nodeType":"EnumDefinition","src":"1289:59:34"},{"documentation":{"id":16835,"nodeType":"StructuredDocumentation","src":"1352:46:34","text":" @dev The vote was already cast."},"errorSelector":"71c6af49","id":16839,"name":"GovernorAlreadyCastVote","nameLocation":"1407:23:34","nodeType":"ErrorDefinition","parameters":{"id":16838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16837,"mutability":"mutable","name":"voter","nameLocation":"1439:5:34","nodeType":"VariableDeclaration","scope":16839,"src":"1431:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16836,"name":"address","nodeType":"ElementaryTypeName","src":"1431:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1430:15:34"},"src":"1401:45:34"},{"documentation":{"id":16840,"nodeType":"StructuredDocumentation","src":"1450:65:34","text":" @dev The `account` is not the governance executor."},"errorSelector":"5e309d21","id":16844,"name":"B3TRGovernorOnlyExecutor","nameLocation":"1524:24:34","nodeType":"ErrorDefinition","parameters":{"id":16843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16842,"mutability":"mutable","name":"account","nameLocation":"1557:7:34","nodeType":"VariableDeclaration","scope":16844,"src":"1549:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16841,"name":"address","nodeType":"ElementaryTypeName","src":"1549:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1548:17:34"},"src":"1518:48:34"},{"documentation":{"id":16845,"nodeType":"StructuredDocumentation","src":"1570:48:34","text":" @dev The `roundId` doesn't exist."},"errorSelector":"ced38c6c","id":16849,"name":"GovernorNonexistentRound","nameLocation":"1627:24:34","nodeType":"ErrorDefinition","parameters":{"id":16848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16847,"mutability":"mutable","name":"roundId","nameLocation":"1660:7:34","nodeType":"VariableDeclaration","scope":16849,"src":"1652:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16846,"name":"uint256","nodeType":"ElementaryTypeName","src":"1652:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1651:17:34"},"src":"1621:48:34"},{"documentation":{"id":16850,"nodeType":"StructuredDocumentation","src":"1673:497:34","text":" @dev The current state of a round is not the required for performing an operation.\n The `expectedStates` is a bitmap with the bits enabled for each RoundState enum position\n counting from right to left.\n NOTE: If `expectedState` is `bytes32(0)`, the round is expected to not be in any state (i.e. not exist).\n This is the case when a round that is expected to be unset is already initiated (the round is duplicated).\n See {Governor-_encodeStateBitmap}."},"errorSelector":"43656b56","id":16859,"name":"GovernorUnexpectedRoundState","nameLocation":"2179:28:34","nodeType":"ErrorDefinition","parameters":{"id":16858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16852,"mutability":"mutable","name":"roundId","nameLocation":"2216:7:34","nodeType":"VariableDeclaration","scope":16859,"src":"2208:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16855,"mutability":"mutable","name":"current","nameLocation":"2236:7:34","nodeType":"VariableDeclaration","scope":16859,"src":"2225:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RoundState_$16834","typeString":"enum IXAllocationVotingGovernor.RoundState"},"typeName":{"id":16854,"nodeType":"UserDefinedTypeName","pathNode":{"id":16853,"name":"RoundState","nameLocations":["2225:10:34"],"nodeType":"IdentifierPath","referencedDeclaration":16834,"src":"2225:10:34"},"referencedDeclaration":16834,"src":"2225:10:34","typeDescriptions":{"typeIdentifier":"t_enum$_RoundState_$16834","typeString":"enum IXAllocationVotingGovernor.RoundState"}},"visibility":"internal"},{"constant":false,"id":16857,"mutability":"mutable","name":"expectedStates","nameLocation":"2253:14:34","nodeType":"VariableDeclaration","scope":16859,"src":"2245:22:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16856,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2245:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2207:61:34"},"src":"2173:96:34"},{"documentation":{"id":16860,"nodeType":"StructuredDocumentation","src":"2273:64:34","text":" @dev The voting period set is not a valid period."},"errorSelector":"f1cfbf05","id":16864,"name":"GovernorInvalidVotingPeriod","nameLocation":"2346:27:34","nodeType":"ErrorDefinition","parameters":{"id":16863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16862,"mutability":"mutable","name":"votingPeriod","nameLocation":"2382:12:34","nodeType":"VariableDeclaration","scope":16864,"src":"2374:20:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16861,"name":"uint256","nodeType":"ElementaryTypeName","src":"2374:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2373:22:34"},"src":"2340:56:34"},{"documentation":{"id":16865,"nodeType":"StructuredDocumentation","src":"2400:110:34","text":" @dev The `appId` is not present in the list with the available x-apps for voting in this round."},"errorSelector":"4b8a7232","id":16869,"name":"GovernorAppNotAvailableForVoting","nameLocation":"2519:32:34","nodeType":"ErrorDefinition","parameters":{"id":16868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16867,"mutability":"mutable","name":"appId","nameLocation":"2560:5:34","nodeType":"VariableDeclaration","scope":16869,"src":"2552:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2552:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2551:15:34"},"src":"2513:54:34"},{"documentation":{"id":16870,"nodeType":"StructuredDocumentation","src":"2571:53:34","text":" @dev The `votingThreshold` is not met."},"errorSelector":"742f62c3","id":16876,"name":"GovernorVotingThresholdNotMet","nameLocation":"2633:29:34","nodeType":"ErrorDefinition","parameters":{"id":16875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16872,"mutability":"mutable","name":"threshold","nameLocation":"2671:9:34","nodeType":"VariableDeclaration","scope":16876,"src":"2663:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16871,"name":"uint256","nodeType":"ElementaryTypeName","src":"2663:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16874,"mutability":"mutable","name":"votes","nameLocation":"2690:5:34","nodeType":"VariableDeclaration","scope":16876,"src":"2682:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16873,"name":"uint256","nodeType":"ElementaryTypeName","src":"2682:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2662:34:34"},"src":"2627:70:34"},{"documentation":{"id":16877,"nodeType":"StructuredDocumentation","src":"2701:95:34","text":" @dev The `voter` has insufficient voting power for this round to cast the votes."},"errorSelector":"0cc9baf7","id":16879,"name":"GovernorInsufficientVotingPower","nameLocation":"2805:31:34","nodeType":"ErrorDefinition","parameters":{"id":16878,"nodeType":"ParameterList","parameters":[],"src":"2836:2:34"},"src":"2799:40:34"},{"documentation":{"id":16880,"nodeType":"StructuredDocumentation","src":"2843:98:34","text":" @dev The `voter` has voted for the same app multiple times in the same transaction."},"errorSelector":"8d9eb3dc","id":16882,"name":"DuplicateAppVote","nameLocation":"2950:16:34","nodeType":"ErrorDefinition","parameters":{"id":16881,"nodeType":"ParameterList","parameters":[],"src":"2966:2:34"},"src":"2944:25:34"},{"documentation":{"id":16883,"nodeType":"StructuredDocumentation","src":"2973:82:34","text":" The `voter` is not identified as a person via the VeBetterPassport."},"errorSelector":"44c45349","id":16889,"name":"GovernorPersonhoodVerificationFailed","nameLocation":"3064:36:34","nodeType":"ErrorDefinition","parameters":{"id":16888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16885,"mutability":"mutable","name":"person","nameLocation":"3109:6:34","nodeType":"VariableDeclaration","scope":16889,"src":"3101:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16884,"name":"address","nodeType":"ElementaryTypeName","src":"3101:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16887,"mutability":"mutable","name":"reason","nameLocation":"3124:6:34","nodeType":"VariableDeclaration","scope":16889,"src":"3117:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16886,"name":"string","nodeType":"ElementaryTypeName","src":"3117:6:34","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3100:31:34"},"src":"3058:74:34"},{"documentation":{"id":16890,"nodeType":"StructuredDocumentation","src":"3136:88:34","text":" @dev The `person` is not identified as a person via the VeBetterPassport."},"errorSelector":"68804cc0","id":16894,"name":"XAllocationVotingPersonhoodVerificationFailed","nameLocation":"3233:45:34","nodeType":"ErrorDefinition","parameters":{"id":16893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16892,"mutability":"mutable","name":"person","nameLocation":"3287:6:34","nodeType":"VariableDeclaration","scope":16894,"src":"3279:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16891,"name":"address","nodeType":"ElementaryTypeName","src":"3279:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3278:16:34"},"src":"3227:68:34"},{"documentation":{"id":16895,"nodeType":"StructuredDocumentation","src":"3299:60:34","text":" @dev The `voter` has auto-voting not enabled."},"errorSelector":"2b8b7c89","id":16899,"name":"AutoVotingNotEnabled","nameLocation":"3368:20:34","nodeType":"ErrorDefinition","parameters":{"id":16898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16897,"mutability":"mutable","name":"voter","nameLocation":"3397:5:34","nodeType":"VariableDeclaration","scope":16899,"src":"3389:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16896,"name":"address","nodeType":"ElementaryTypeName","src":"3389:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3388:15:34"},"src":"3362:42:34"},{"documentation":{"id":16900,"nodeType":"StructuredDocumentation","src":"3408:56:34","text":" @dev The `voter` has auto-voting enabled."},"errorSelector":"05b27abd","id":16904,"name":"AutoVotingEnabled","nameLocation":"3473:17:34","nodeType":"ErrorDefinition","parameters":{"id":16903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16902,"mutability":"mutable","name":"voter","nameLocation":"3499:5:34","nodeType":"VariableDeclaration","scope":16904,"src":"3491:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16901,"name":"address","nodeType":"ElementaryTypeName","src":"3491:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3490:15:34"},"src":"3467:39:34"},{"documentation":{"id":16905,"nodeType":"StructuredDocumentation","src":"3510:174:34","text":" @dev Thrown when a zero address is provided for a contract address parameter\n @param contractName The name/type of the contract that cannot be zero address"},"errorSelector":"e21b9230","id":16909,"name":"InvalidContractAddress","nameLocation":"3693:22:34","nodeType":"ErrorDefinition","parameters":{"id":16908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16907,"mutability":"mutable","name":"contractName","nameLocation":"3723:12:34","nodeType":"VariableDeclaration","scope":16909,"src":"3716:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16906,"name":"string","nodeType":"ElementaryTypeName","src":"3716:6:34","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3715:21:34"},"src":"3687:50:34"},{"documentation":{"id":16910,"nodeType":"StructuredDocumentation","src":"3741:45:34","text":" @dev The `caller` is not valid"},"errorSelector":"cbd9d2e0","id":16914,"name":"InvalidCaller","nameLocation":"3795:13:34","nodeType":"ErrorDefinition","parameters":{"id":16913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16912,"mutability":"mutable","name":"caller","nameLocation":"3817:6:34","nodeType":"VariableDeclaration","scope":16914,"src":"3809:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16911,"name":"address","nodeType":"ElementaryTypeName","src":"3809:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3808:16:34"},"src":"3789:36:34"},{"documentation":{"id":16915,"nodeType":"StructuredDocumentation","src":"3829:61:34","text":" @dev Citizen is not delegated to any navigator"},"errorSelector":"68e4d5d8","id":16919,"name":"NotDelegatedToNavigator","nameLocation":"3899:23:34","nodeType":"ErrorDefinition","parameters":{"id":16918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16917,"mutability":"mutable","name":"citizen","nameLocation":"3931:7:34","nodeType":"VariableDeclaration","scope":16919,"src":"3923:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16916,"name":"address","nodeType":"ElementaryTypeName","src":"3923:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3922:17:34"},"src":"3893:47:34"},{"documentation":{"id":16920,"nodeType":"StructuredDocumentation","src":"3944:80:34","text":" @dev Citizen is delegated to a navigator and cannot vote manually"},"errorSelector":"640ed183","id":16924,"name":"DelegatedToNavigator","nameLocation":"4033:20:34","nodeType":"ErrorDefinition","parameters":{"id":16923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16922,"mutability":"mutable","name":"citizen","nameLocation":"4062:7:34","nodeType":"VariableDeclaration","scope":16924,"src":"4054:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16921,"name":"address","nodeType":"ElementaryTypeName","src":"4054:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4053:17:34"},"src":"4027:44:34"},{"documentation":{"id":16925,"nodeType":"StructuredDocumentation","src":"4075:55:34","text":" @dev Navigator cannot enable auto-voting"},"errorSelector":"8523c47f","id":16929,"name":"NavigatorCannotEnableAutoVoting","nameLocation":"4139:31:34","nodeType":"ErrorDefinition","parameters":{"id":16928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16927,"mutability":"mutable","name":"navigator","nameLocation":"4179:9:34","nodeType":"VariableDeclaration","scope":16929,"src":"4171:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16926,"name":"address","nodeType":"ElementaryTypeName","src":"4171:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4170:19:34"},"src":"4133:57:34"},{"documentation":{"id":16930,"nodeType":"StructuredDocumentation","src":"4194:78:34","text":" @dev Navigator has not set allocation preferences for the round"},"errorSelector":"aee9bd3f","id":16936,"name":"NavigatorPreferencesNotSet","nameLocation":"4281:26:34","nodeType":"ErrorDefinition","parameters":{"id":16935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16932,"mutability":"mutable","name":"navigator","nameLocation":"4316:9:34","nodeType":"VariableDeclaration","scope":16936,"src":"4308:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16931,"name":"address","nodeType":"ElementaryTypeName","src":"4308:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16934,"mutability":"mutable","name":"roundId","nameLocation":"4335:7:34","nodeType":"VariableDeclaration","scope":16936,"src":"4327:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16933,"name":"uint256","nodeType":"ElementaryTypeName","src":"4327:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4307:36:34"},"src":"4275:69:34"},{"documentation":{"id":16937,"nodeType":"StructuredDocumentation","src":"4348:111:34","text":" @dev The skip window (minimum time into the round before skips are allowed) has not been reached"},"errorSelector":"8e951db6","id":16941,"name":"SkipWindowNotReached","nameLocation":"4468:20:34","nodeType":"ErrorDefinition","parameters":{"id":16940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16939,"mutability":"mutable","name":"roundId","nameLocation":"4497:7:34","nodeType":"VariableDeclaration","scope":16941,"src":"4489:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16938,"name":"uint256","nodeType":"ElementaryTypeName","src":"4489:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4488:17:34"},"src":"4462:44:34"},{"documentation":{"id":16942,"nodeType":"StructuredDocumentation","src":"4510:90:34","text":" @dev The voter has already been processed (voted or skipped) for this round"},"errorSelector":"15217ac6","id":16948,"name":"VoteAlreadyProcessed","nameLocation":"4609:20:34","nodeType":"ErrorDefinition","parameters":{"id":16947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16944,"mutability":"mutable","name":"voter","nameLocation":"4638:5:34","nodeType":"VariableDeclaration","scope":16948,"src":"4630:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16943,"name":"address","nodeType":"ElementaryTypeName","src":"4630:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16946,"mutability":"mutable","name":"roundId","nameLocation":"4653:7:34","nodeType":"VariableDeclaration","scope":16948,"src":"4645:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16945,"name":"uint256","nodeType":"ElementaryTypeName","src":"4645:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4629:32:34"},"src":"4603:59:34"},{"anonymous":false,"documentation":{"id":16949,"nodeType":"StructuredDocumentation","src":"4666:56:34","text":" @dev Emitted when auto-voting is skipped."},"eventSelector":"55b62c33ca46df94310e16fc7e52e8ed456d93a5f21b1e7b5b4c2428905ddebc","id":16961,"name":"AutoVoteSkipped","nameLocation":"4731:15:34","nodeType":"EventDefinition","parameters":{"id":16960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16951,"indexed":true,"mutability":"mutable","name":"voter","nameLocation":"4768:5:34","nodeType":"VariableDeclaration","scope":16961,"src":"4752:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16950,"name":"address","nodeType":"ElementaryTypeName","src":"4752:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16953,"indexed":true,"mutability":"mutable","name":"roundId","nameLocation":"4795:7:34","nodeType":"VariableDeclaration","scope":16961,"src":"4779:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16952,"name":"uint256","nodeType":"ElementaryTypeName","src":"4779:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16955,"indexed":false,"mutability":"mutable","name":"isPerson","nameLocation":"4813:8:34","nodeType":"VariableDeclaration","scope":16961,"src":"4808:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16954,"name":"bool","nodeType":"ElementaryTypeName","src":"4808:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16957,"indexed":false,"mutability":"mutable","name":"appCount","nameLocation":"4835:8:34","nodeType":"VariableDeclaration","scope":16961,"src":"4827:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16956,"name":"uint256","nodeType":"ElementaryTypeName","src":"4827:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16959,"indexed":false,"mutability":"mutable","name":"votingPower","nameLocation":"4857:11:34","nodeType":"VariableDeclaration","scope":16961,"src":"4849:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16958,"name":"uint256","nodeType":"ElementaryTypeName","src":"4849:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4746:126:34"},"src":"4725:148:34"},{"anonymous":false,"documentation":{"id":16962,"nodeType":"StructuredDocumentation","src":"4877:52:34","text":" @dev Emitted when a round is created."},"eventSelector":"ed97f3daa22d7f521cfac2156e927c837565dd6980bd67cc6f7e53cc52ea09c8","id":16975,"name":"RoundCreated","nameLocation":"4938:12:34","nodeType":"EventDefinition","parameters":{"id":16974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16964,"indexed":false,"mutability":"mutable","name":"roundId","nameLocation":"4959:7:34","nodeType":"VariableDeclaration","scope":16975,"src":"4951:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16963,"name":"uint256","nodeType":"ElementaryTypeName","src":"4951:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16966,"indexed":false,"mutability":"mutable","name":"proposer","nameLocation":"4976:8:34","nodeType":"VariableDeclaration","scope":16975,"src":"4968:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16965,"name":"address","nodeType":"ElementaryTypeName","src":"4968:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16968,"indexed":false,"mutability":"mutable","name":"voteStart","nameLocation":"4994:9:34","nodeType":"VariableDeclaration","scope":16975,"src":"4986:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16967,"name":"uint256","nodeType":"ElementaryTypeName","src":"4986:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16970,"indexed":false,"mutability":"mutable","name":"voteEnd","nameLocation":"5013:7:34","nodeType":"VariableDeclaration","scope":16975,"src":"5005:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16969,"name":"uint256","nodeType":"ElementaryTypeName","src":"5005:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16973,"indexed":false,"mutability":"mutable","name":"appsIds","nameLocation":"5032:7:34","nodeType":"VariableDeclaration","scope":16975,"src":"5022:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":16971,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5022:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":16972,"nodeType":"ArrayTypeName","src":"5022:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4950:90:34"},"src":"4932:109:34"},{"anonymous":false,"documentation":{"id":16976,"nodeType":"StructuredDocumentation","src":"5045:53:34","text":" @dev Emitted when votes are cast."},"eventSelector":"e2d0d542af9cdd3e0ef4ace292fc5e9dd654164e63920ea9b58c435492af84e2","id":16988,"name":"AllocationVoteCast","nameLocation":"5107:18:34","nodeType":"EventDefinition","parameters":{"id":16987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16978,"indexed":true,"mutability":"mutable","name":"voter","nameLocation":"5142:5:34","nodeType":"VariableDeclaration","scope":16988,"src":"5126:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16977,"name":"address","nodeType":"ElementaryTypeName","src":"5126:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16980,"indexed":true,"mutability":"mutable","name":"roundId","nameLocation":"5165:7:34","nodeType":"VariableDeclaration","scope":16988,"src":"5149:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16979,"name":"uint256","nodeType":"ElementaryTypeName","src":"5149:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16983,"indexed":false,"mutability":"mutable","name":"appsIds","nameLocation":"5184:7:34","nodeType":"VariableDeclaration","scope":16988,"src":"5174:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":16981,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5174:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":16982,"nodeType":"ArrayTypeName","src":"5174:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":16986,"indexed":false,"mutability":"mutable","name":"voteWeights","nameLocation":"5203:11:34","nodeType":"VariableDeclaration","scope":16988,"src":"5193:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16984,"name":"uint256","nodeType":"ElementaryTypeName","src":"5193:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16985,"nodeType":"ArrayTypeName","src":"5193:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5125:90:34"},"src":"5101:115:34"},{"anonymous":false,"documentation":{"id":16989,"nodeType":"StructuredDocumentation","src":"5220:72:34","text":" @dev Emitted when a vote is cast on behalf of an account."},"eventSelector":"64dbcb1d23926d04f2fea8c7cc3f5d02846ee1e48940419cf422f69ae35813aa","id":17001,"name":"AllocationAutoVoteCast","nameLocation":"5301:22:34","nodeType":"EventDefinition","parameters":{"id":17000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16991,"indexed":true,"mutability":"mutable","name":"voter","nameLocation":"5345:5:34","nodeType":"VariableDeclaration","scope":17001,"src":"5329:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16990,"name":"address","nodeType":"ElementaryTypeName","src":"5329:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16993,"indexed":true,"mutability":"mutable","name":"roundId","nameLocation":"5372:7:34","nodeType":"VariableDeclaration","scope":17001,"src":"5356:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16992,"name":"uint256","nodeType":"ElementaryTypeName","src":"5356:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16996,"indexed":false,"mutability":"mutable","name":"appsIds","nameLocation":"5395:7:34","nodeType":"VariableDeclaration","scope":17001,"src":"5385:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":16994,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5385:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":16995,"nodeType":"ArrayTypeName","src":"5385:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":16999,"indexed":false,"mutability":"mutable","name":"voteWeights","nameLocation":"5418:11:34","nodeType":"VariableDeclaration","scope":17001,"src":"5408:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16997,"name":"uint256","nodeType":"ElementaryTypeName","src":"5408:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16998,"nodeType":"ArrayTypeName","src":"5408:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5323:110:34"},"src":"5295:139:34"},{"anonymous":false,"documentation":{"id":17002,"nodeType":"StructuredDocumentation","src":"5438:70:34","text":" @dev Emitted when autovoting is toggled for an account."},"eventSelector":"6baead299a74ec4ebb558b9c9507046309c90e561107f4776cef02327b526549","id":17008,"name":"AutoVotingToggled","nameLocation":"5517:17:34","nodeType":"EventDefinition","parameters":{"id":17007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17004,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"5551:7:34","nodeType":"VariableDeclaration","scope":17008,"src":"5535:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17003,"name":"address","nodeType":"ElementaryTypeName","src":"5535:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17006,"indexed":false,"mutability":"mutable","name":"enabled","nameLocation":"5565:7:34","nodeType":"VariableDeclaration","scope":17008,"src":"5560:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17005,"name":"bool","nodeType":"ElementaryTypeName","src":"5560:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5534:39:34"},"src":"5511:63:34"},{"anonymous":false,"documentation":{"id":17009,"nodeType":"StructuredDocumentation","src":"5578:79:34","text":" @dev Emitted when the preferred apps are updated for an account."},"eventSelector":"3e3998ec06c031c887b2c4825699d96390034bafa666cc53be14a1b832a0654e","id":17016,"name":"PreferredAppsUpdated","nameLocation":"5666:20:34","nodeType":"EventDefinition","parameters":{"id":17015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17011,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"5703:7:34","nodeType":"VariableDeclaration","scope":17016,"src":"5687:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17010,"name":"address","nodeType":"ElementaryTypeName","src":"5687:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17014,"indexed":false,"mutability":"mutable","name":"apps","nameLocation":"5722:4:34","nodeType":"VariableDeclaration","scope":17016,"src":"5712:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":17012,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5712:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":17013,"nodeType":"ArrayTypeName","src":"5712:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"5686:41:34"},"src":"5660:68:34"},{"anonymous":false,"documentation":{"id":17017,"nodeType":"StructuredDocumentation","src":"5732:90:34","text":" @dev Emitted when a navigator casts a vote on behalf of a delegated citizen"},"eventSelector":"28e698009c3f75a566409d95005b1906bbae152060ccf899a822777dd147950c","id":17031,"name":"NavigatorVoteCast","nameLocation":"5831:17:34","nodeType":"EventDefinition","parameters":{"id":17030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17019,"indexed":true,"mutability":"mutable","name":"citizen","nameLocation":"5870:7:34","nodeType":"VariableDeclaration","scope":17031,"src":"5854:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17018,"name":"address","nodeType":"ElementaryTypeName","src":"5854:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17021,"indexed":true,"mutability":"mutable","name":"navigator","nameLocation":"5899:9:34","nodeType":"VariableDeclaration","scope":17031,"src":"5883:25:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17020,"name":"address","nodeType":"ElementaryTypeName","src":"5883:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17023,"indexed":true,"mutability":"mutable","name":"roundId","nameLocation":"5930:7:34","nodeType":"VariableDeclaration","scope":17031,"src":"5914:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17022,"name":"uint256","nodeType":"ElementaryTypeName","src":"5914:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17026,"indexed":false,"mutability":"mutable","name":"appsIds","nameLocation":"5953:7:34","nodeType":"VariableDeclaration","scope":17031,"src":"5943:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":17024,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5943:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":17025,"nodeType":"ArrayTypeName","src":"5943:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":17029,"indexed":false,"mutability":"mutable","name":"voteWeights","nameLocation":"5976:11:34","nodeType":"VariableDeclaration","scope":17031,"src":"5966:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17027,"name":"uint256","nodeType":"ElementaryTypeName","src":"5966:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17028,"nodeType":"ArrayTypeName","src":"5966:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5848:143:34"},"src":"5825:167:34"},{"anonymous":false,"documentation":{"id":17032,"nodeType":"StructuredDocumentation","src":"5996:99:34","text":" @dev Emitted when a navigator vote is skipped (navigator dead or no preferences set)"},"eventSelector":"8e8addaac431662b768d45375ef48133b8bad0daad5ce4096fd41007e8d31a87","id":17040,"name":"NavigatorVoteSkipped","nameLocation":"6104:20:34","nodeType":"EventDefinition","parameters":{"id":17039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17034,"indexed":true,"mutability":"mutable","name":"citizen","nameLocation":"6141:7:34","nodeType":"VariableDeclaration","scope":17040,"src":"6125:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17033,"name":"address","nodeType":"ElementaryTypeName","src":"6125:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17036,"indexed":true,"mutability":"mutable","name":"navigator","nameLocation":"6166:9:34","nodeType":"VariableDeclaration","scope":17040,"src":"6150:25:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17035,"name":"address","nodeType":"ElementaryTypeName","src":"6150:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17038,"indexed":true,"mutability":"mutable","name":"roundId","nameLocation":"6193:7:34","nodeType":"VariableDeclaration","scope":17040,"src":"6177:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17037,"name":"uint256","nodeType":"ElementaryTypeName","src":"6177:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6124:77:34"},"src":"6098:104:34"},{"anonymous":false,"documentation":{"id":17041,"nodeType":"StructuredDocumentation","src":"6206:396:34","text":" @dev Emitted when a freshness multiplier is applied to a vote.\n @param voter The voter address\n @param roundId The round in which the vote was cast\n @param fingerprint The XOR fingerprint of the voted apps\n @param lastChangedRound The round when the voter's fingerprint last changed\n @param multiplier The freshness multiplier applied (basis points, 10000 = 1x)"},"eventSelector":"0e517902a3b560beed6397b3f68b465d56e2928c11722f4e1766c6a25ff65906","id":17053,"name":"FreshnessMultiplierApplied","nameLocation":"6611:26:34","nodeType":"EventDefinition","parameters":{"id":17052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17043,"indexed":true,"mutability":"mutable","name":"voter","nameLocation":"6659:5:34","nodeType":"VariableDeclaration","scope":17053,"src":"6643:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17042,"name":"address","nodeType":"ElementaryTypeName","src":"6643:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17045,"indexed":true,"mutability":"mutable","name":"roundId","nameLocation":"6686:7:34","nodeType":"VariableDeclaration","scope":17053,"src":"6670:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17044,"name":"uint256","nodeType":"ElementaryTypeName","src":"6670:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17047,"indexed":false,"mutability":"mutable","name":"fingerprint","nameLocation":"6707:11:34","nodeType":"VariableDeclaration","scope":17053,"src":"6699:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17046,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6699:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":17049,"indexed":false,"mutability":"mutable","name":"lastChangedRound","nameLocation":"6732:16:34","nodeType":"VariableDeclaration","scope":17053,"src":"6724:24:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17048,"name":"uint256","nodeType":"ElementaryTypeName","src":"6724:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17051,"indexed":false,"mutability":"mutable","name":"multiplier","nameLocation":"6762:10:34","nodeType":"VariableDeclaration","scope":17053,"src":"6754:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17050,"name":"uint256","nodeType":"ElementaryTypeName","src":"6754:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6637:139:34"},"src":"6605:172:34"},{"documentation":{"id":17054,"nodeType":"StructuredDocumentation","src":"6781:138:34","text":" @notice module:core\n @dev Version of the governor instance (used in building the ERC712 domain separator). Default: \"1\""},"functionSelector":"54fd4d50","id":17059,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"6931:7:34","nodeType":"FunctionDefinition","parameters":{"id":17055,"nodeType":"ParameterList","parameters":[],"src":"6938:2:34"},"returnParameters":{"id":17058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17057,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17059,"src":"6964:13:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17056,"name":"string","nodeType":"ElementaryTypeName","src":"6964:6:34","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6963:15:34"},"scope":17346,"src":"6922:57:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17060,"nodeType":"StructuredDocumentation","src":"6983:69:34","text":" @notice module:core\n @dev Current state of a round"},"functionSelector":"3e4f49e6","id":17068,"implemented":false,"kind":"function","modifiers":[],"name":"state","nameLocation":"7064:5:34","nodeType":"FunctionDefinition","parameters":{"id":17063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17062,"mutability":"mutable","name":"roundId","nameLocation":"7078:7:34","nodeType":"VariableDeclaration","scope":17068,"src":"7070:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17061,"name":"uint256","nodeType":"ElementaryTypeName","src":"7070:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7069:17:34"},"returnParameters":{"id":17067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17068,"src":"7110:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RoundState_$16834","typeString":"enum IXAllocationVotingGovernor.RoundState"},"typeName":{"id":17065,"nodeType":"UserDefinedTypeName","pathNode":{"id":17064,"name":"RoundState","nameLocations":["7110:10:34"],"nodeType":"IdentifierPath","referencedDeclaration":16834,"src":"7110:10:34"},"referencedDeclaration":16834,"src":"7110:10:34","typeDescriptions":{"typeIdentifier":"t_enum$_RoundState_$16834","typeString":"enum IXAllocationVotingGovernor.RoundState"}},"visibility":"internal"}],"src":"7109:12:34"},"scope":17346,"src":"7055:67:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17069,"nodeType":"StructuredDocumentation","src":"7126:283:34","text":" @notice module:core\n @dev Timepoint used to retrieve user's votes and quorum. If using block number (as per Compound's Comp), the\n snapshot is performed at the end of this block. Hence, voting for this round starts at the beginning of the\n following block."},"functionSelector":"d06efeda","id":17076,"implemented":false,"kind":"function","modifiers":[],"name":"roundSnapshot","nameLocation":"7421:13:34","nodeType":"FunctionDefinition","parameters":{"id":17072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17071,"mutability":"mutable","name":"roundId","nameLocation":"7443:7:34","nodeType":"VariableDeclaration","scope":17076,"src":"7435:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17070,"name":"uint256","nodeType":"ElementaryTypeName","src":"7435:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7434:17:34"},"returnParameters":{"id":17075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17074,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17076,"src":"7475:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17073,"name":"uint256","nodeType":"ElementaryTypeName","src":"7475:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7474:9:34"},"scope":17346,"src":"7412:72:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17077,"nodeType":"StructuredDocumentation","src":"7488:194:34","text":" @notice module:core\n @dev Timepoint at which votes close. If using block number, votes close at the end of this block, so it is\n possible to cast a vote during this block."},"functionSelector":"d3a368bd","id":17084,"implemented":false,"kind":"function","modifiers":[],"name":"roundDeadline","nameLocation":"7694:13:34","nodeType":"FunctionDefinition","parameters":{"id":17080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17079,"mutability":"mutable","name":"roundId","nameLocation":"7716:7:34","nodeType":"VariableDeclaration","scope":17084,"src":"7708:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17078,"name":"uint256","nodeType":"ElementaryTypeName","src":"7708:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7707:17:34"},"returnParameters":{"id":17083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17084,"src":"7748:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17081,"name":"uint256","nodeType":"ElementaryTypeName","src":"7748:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7747:9:34"},"scope":17346,"src":"7685:72:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17085,"nodeType":"StructuredDocumentation","src":"7761:507:34","text":" @notice module:user-config\n @dev Delay between the vote start and vote end. The unit this duration is expressed in depends on the clock\n (see EIP-6372) this contract uses.\n NOTE: This value is stored when the round is submitted so that possible changes to the value do not affect\n proposals that have already been submitted. The type used to save it is a uint32. Consequently, while this\n interface returns a uint256, the value it returns should fit in a uint32."},"functionSelector":"02a251a3","id":17090,"implemented":false,"kind":"function","modifiers":[],"name":"votingPeriod","nameLocation":"8280:12:34","nodeType":"FunctionDefinition","parameters":{"id":17086,"nodeType":"ParameterList","parameters":[],"src":"8292:2:34"},"returnParameters":{"id":17089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17088,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17090,"src":"8318:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17087,"name":"uint256","nodeType":"ElementaryTypeName","src":"8318:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8317:9:34"},"scope":17346,"src":"8271:56:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17091,"nodeType":"StructuredDocumentation","src":"8331:343:34","text":" @notice module:user-config\n @dev Minimum number of cast voted required for a round to be successful.\n NOTE: The `timepoint` parameter corresponds to the snapshot used for counting vote. This allows to scale the\n quorum depending on values such as the totalSupply of a token at this timepoint (see {ERC20Votes})."},"functionSelector":"f8ce560a","id":17098,"implemented":false,"kind":"function","modifiers":[],"name":"quorum","nameLocation":"8686:6:34","nodeType":"FunctionDefinition","parameters":{"id":17094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17093,"mutability":"mutable","name":"timepoint","nameLocation":"8701:9:34","nodeType":"VariableDeclaration","scope":17098,"src":"8693:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17092,"name":"uint256","nodeType":"ElementaryTypeName","src":"8693:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8692:19:34"},"returnParameters":{"id":17097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17096,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17098,"src":"8735:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17095,"name":"uint256","nodeType":"ElementaryTypeName","src":"8735:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8734:9:34"},"scope":17346,"src":"8677:67:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17099,"nodeType":"StructuredDocumentation","src":"8748:220:34","text":" @notice module:user-config\n @dev Minimum number of cast voted required for a round to be successful.\n NOTE: The `roundId` parameter corresponds to the round for which the quorum is calculated."},"functionSelector":"59529edd","id":17106,"implemented":false,"kind":"function","modifiers":[],"name":"roundQuorum","nameLocation":"8980:11:34","nodeType":"FunctionDefinition","parameters":{"id":17102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17101,"mutability":"mutable","name":"roundId","nameLocation":"9000:7:34","nodeType":"VariableDeclaration","scope":17106,"src":"8992:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17100,"name":"uint256","nodeType":"ElementaryTypeName","src":"8992:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8991:17:34"},"returnParameters":{"id":17105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17106,"src":"9032:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17103,"name":"uint256","nodeType":"ElementaryTypeName","src":"9032:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9031:9:34"},"scope":17346,"src":"8971:70:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17107,"nodeType":"StructuredDocumentation","src":"9045:262:34","text":" @notice module:reputation\n @dev Voting power of an `account` at a specific `timepoint`.\n Note: this can be implemented in a number of ways, for example by reading the delegated balance from one (or\n multiple), {ERC20Votes} tokens."},"functionSelector":"eb9019d4","id":17116,"implemented":false,"kind":"function","modifiers":[],"name":"getVotes","nameLocation":"9319:8:34","nodeType":"FunctionDefinition","parameters":{"id":17112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17109,"mutability":"mutable","name":"account","nameLocation":"9336:7:34","nodeType":"VariableDeclaration","scope":17116,"src":"9328:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17108,"name":"address","nodeType":"ElementaryTypeName","src":"9328:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17111,"mutability":"mutable","name":"timepoint","nameLocation":"9353:9:34","nodeType":"VariableDeclaration","scope":17116,"src":"9345:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17110,"name":"uint256","nodeType":"ElementaryTypeName","src":"9345:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9327:36:34"},"returnParameters":{"id":17115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17114,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17116,"src":"9387:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17113,"name":"uint256","nodeType":"ElementaryTypeName","src":"9387:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9386:9:34"},"scope":17346,"src":"9310:86:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17117,"nodeType":"StructuredDocumentation","src":"9400:101:34","text":" @notice module:reputation\n @dev Total number of votes cast in an allocation round."},"functionSelector":"19e6e158","id":17124,"implemented":false,"kind":"function","modifiers":[],"name":"totalVotes","nameLocation":"9513:10:34","nodeType":"FunctionDefinition","parameters":{"id":17120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17119,"mutability":"mutable","name":"roundId","nameLocation":"9532:7:34","nodeType":"VariableDeclaration","scope":17124,"src":"9524:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17118,"name":"uint256","nodeType":"ElementaryTypeName","src":"9524:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9523:17:34"},"returnParameters":{"id":17123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17124,"src":"9564:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17121,"name":"uint256","nodeType":"ElementaryTypeName","src":"9564:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9563:9:34"},"scope":17346,"src":"9504:69:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17125,"nodeType":"StructuredDocumentation","src":"9577:97:34","text":" @notice module:reputation\n @dev Total number of voters in an allocation round."},"functionSelector":"498d91bf","id":17132,"implemented":false,"kind":"function","modifiers":[],"name":"totalVoters","nameLocation":"9686:11:34","nodeType":"FunctionDefinition","parameters":{"id":17128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17127,"mutability":"mutable","name":"roundId","nameLocation":"9706:7:34","nodeType":"VariableDeclaration","scope":17132,"src":"9698:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17126,"name":"uint256","nodeType":"ElementaryTypeName","src":"9698:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9697:17:34"},"returnParameters":{"id":17131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17132,"src":"9738:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17129,"name":"uint256","nodeType":"ElementaryTypeName","src":"9738:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9737:9:34"},"scope":17346,"src":"9677:70:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17133,"nodeType":"StructuredDocumentation","src":"9751:114:34","text":" @notice module:reputation\n @dev Number of votes cast for a specific app in an allocation round."},"functionSelector":"4bb5181a","id":17142,"implemented":false,"kind":"function","modifiers":[],"name":"getAppVotes","nameLocation":"9877:11:34","nodeType":"FunctionDefinition","parameters":{"id":17138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17135,"mutability":"mutable","name":"roundId","nameLocation":"9897:7:34","nodeType":"VariableDeclaration","scope":17142,"src":"9889:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17134,"name":"uint256","nodeType":"ElementaryTypeName","src":"9889:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17137,"mutability":"mutable","name":"appId","nameLocation":"9914:5:34","nodeType":"VariableDeclaration","scope":17142,"src":"9906:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17136,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9906:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9888:32:34"},"returnParameters":{"id":17141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17142,"src":"9944:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17139,"name":"uint256","nodeType":"ElementaryTypeName","src":"9944:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9943:9:34"},"scope":17346,"src":"9868:85:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17143,"nodeType":"StructuredDocumentation","src":"9957:161:34","text":" @notice module:reputation\n @dev Sum of the square roots of the votes cast for a specific app in an allocation round used for Quadatic Funding."},"functionSelector":"bed73010","id":17152,"implemented":false,"kind":"function","modifiers":[],"name":"getAppVotesQF","nameLocation":"10130:13:34","nodeType":"FunctionDefinition","parameters":{"id":17148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17145,"mutability":"mutable","name":"roundId","nameLocation":"10152:7:34","nodeType":"VariableDeclaration","scope":17152,"src":"10144:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17144,"name":"uint256","nodeType":"ElementaryTypeName","src":"10144:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17147,"mutability":"mutable","name":"app","nameLocation":"10169:3:34","nodeType":"VariableDeclaration","scope":17152,"src":"10161:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17146,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10161:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10143:30:34"},"returnParameters":{"id":17151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17152,"src":"10197:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17149,"name":"uint256","nodeType":"ElementaryTypeName","src":"10197:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10196:9:34"},"scope":17346,"src":"10121:85:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17153,"nodeType":"StructuredDocumentation","src":"10210:169:34","text":" @notice module:reputation\n @dev Calculates the total sum of the squares of the total Quadratic Funding (QF) votes for all apps in an allocation round."},"functionSelector":"fb03ec6f","id":17160,"implemented":false,"kind":"function","modifiers":[],"name":"totalVotesQF","nameLocation":"10391:12:34","nodeType":"FunctionDefinition","parameters":{"id":17156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17155,"mutability":"mutable","name":"roundId","nameLocation":"10412:7:34","nodeType":"VariableDeclaration","scope":17160,"src":"10404:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17154,"name":"uint256","nodeType":"ElementaryTypeName","src":"10404:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10403:17:34"},"returnParameters":{"id":17159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17160,"src":"10444:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17157,"name":"uint256","nodeType":"ElementaryTypeName","src":"10444:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10443:9:34"},"scope":17346,"src":"10382:71:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17161,"nodeType":"StructuredDocumentation","src":"10457:102:34","text":" @notice module:voting\n @dev Returns whether `account` has cast a vote on `roundId`."},"functionSelector":"43859632","id":17170,"implemented":false,"kind":"function","modifiers":[],"name":"hasVoted","nameLocation":"10571:8:34","nodeType":"FunctionDefinition","parameters":{"id":17166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17163,"mutability":"mutable","name":"roundId","nameLocation":"10588:7:34","nodeType":"VariableDeclaration","scope":17170,"src":"10580:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17162,"name":"uint256","nodeType":"ElementaryTypeName","src":"10580:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17165,"mutability":"mutable","name":"account","nameLocation":"10605:7:34","nodeType":"VariableDeclaration","scope":17170,"src":"10597:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17164,"name":"address","nodeType":"ElementaryTypeName","src":"10597:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10579:34:34"},"returnParameters":{"id":17169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17168,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17170,"src":"10637:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17167,"name":"bool","nodeType":"ElementaryTypeName","src":"10637:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10636:6:34"},"scope":17346,"src":"10562:81:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17171,"nodeType":"StructuredDocumentation","src":"10647:180:34","text":" @dev Create a new allocation round (round). Vote starts immediatly and lasts for a\n duration specified by {votingPeriod}.\n Emits a {RoundCreated} event."},"functionSelector":"bd85948c","id":17176,"implemented":false,"kind":"function","modifiers":[],"name":"startNewRound","nameLocation":"10839:13:34","nodeType":"FunctionDefinition","parameters":{"id":17172,"nodeType":"ParameterList","parameters":[],"src":"10852:2:34"},"returnParameters":{"id":17175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17174,"mutability":"mutable","name":"roundId","nameLocation":"10881:7:34","nodeType":"VariableDeclaration","scope":17176,"src":"10873:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17173,"name":"uint256","nodeType":"ElementaryTypeName","src":"10873:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10872:17:34"},"scope":17346,"src":"10830:60:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17177,"nodeType":"StructuredDocumentation","src":"10894:93:34","text":" @dev Cast multiple votes at once\n Emits a {AllocationVoteCast} event."},"functionSelector":"53ed6399","id":17188,"implemented":false,"kind":"function","modifiers":[],"name":"castVote","nameLocation":"10999:8:34","nodeType":"FunctionDefinition","parameters":{"id":17186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17179,"mutability":"mutable","name":"roundId","nameLocation":"11016:7:34","nodeType":"VariableDeclaration","scope":17188,"src":"11008:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17178,"name":"uint256","nodeType":"ElementaryTypeName","src":"11008:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17182,"mutability":"mutable","name":"appsIds","nameLocation":"11042:7:34","nodeType":"VariableDeclaration","scope":17188,"src":"11025:24:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":17180,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11025:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":17181,"nodeType":"ArrayTypeName","src":"11025:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":17185,"mutability":"mutable","name":"voteWeights","nameLocation":"11068:11:34","nodeType":"VariableDeclaration","scope":17188,"src":"11051:28:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17183,"name":"uint256","nodeType":"ElementaryTypeName","src":"11051:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17184,"nodeType":"ArrayTypeName","src":"11051:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11007:73:34"},"returnParameters":{"id":17187,"nodeType":"ParameterList","parameters":[],"src":"11089:0:34"},"scope":17346,"src":"10990:100:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17189,"nodeType":"StructuredDocumentation","src":"11094:190:34","text":" @dev Toggle autovoting for a user\n @param user The address to toggle autovoting for\n @notice This function is only callable by the VOT3 contract or the user themselves"},"functionSelector":"8a829eda","id":17194,"implemented":false,"kind":"function","modifiers":[],"name":"toggleAutoVoting","nameLocation":"11296:16:34","nodeType":"FunctionDefinition","parameters":{"id":17192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17191,"mutability":"mutable","name":"user","nameLocation":"11321:4:34","nodeType":"VariableDeclaration","scope":17194,"src":"11313:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17190,"name":"address","nodeType":"ElementaryTypeName","src":"11313:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11312:14:34"},"returnParameters":{"id":17193,"nodeType":"ParameterList","parameters":[],"src":"11335:0:34"},"scope":17346,"src":"11287:49:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17195,"nodeType":"StructuredDocumentation","src":"11340:159:34","text":" @dev Disable autovoting for a user. Called by NavigatorRegistry when a citizen delegates.\n @param user The address to disable autovoting for"},"functionSelector":"673fc724","id":17200,"implemented":false,"kind":"function","modifiers":[],"name":"disableAutoVotingFor","nameLocation":"11511:20:34","nodeType":"FunctionDefinition","parameters":{"id":17198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17197,"mutability":"mutable","name":"user","nameLocation":"11540:4:34","nodeType":"VariableDeclaration","scope":17200,"src":"11532:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17196,"name":"address","nodeType":"ElementaryTypeName","src":"11532:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11531:14:34"},"returnParameters":{"id":17199,"nodeType":"ParameterList","parameters":[],"src":"11554:0:34"},"scope":17346,"src":"11502:53:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17201,"nodeType":"StructuredDocumentation","src":"11559:162:34","text":" @dev Check if autovoting is enabled for an account\n @param user The address to check\n @return Whether autovoting is enabled for the account"},"functionSelector":"802d2709","id":17208,"implemented":false,"kind":"function","modifiers":[],"name":"isUserAutoVotingEnabled","nameLocation":"11733:23:34","nodeType":"FunctionDefinition","parameters":{"id":17204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17203,"mutability":"mutable","name":"user","nameLocation":"11765:4:34","nodeType":"VariableDeclaration","scope":17208,"src":"11757:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17202,"name":"address","nodeType":"ElementaryTypeName","src":"11757:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11756:14:34"},"returnParameters":{"id":17207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17208,"src":"11794:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17205,"name":"bool","nodeType":"ElementaryTypeName","src":"11794:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11793:6:34"},"scope":17346,"src":"11724:76:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17209,"nodeType":"StructuredDocumentation","src":"11804:165:34","text":" @dev Check if autovoting is enabled for an account\n @param account The address to check\n @return Whether autovoting is enabled for the account"},"functionSelector":"5fb26367","id":17216,"implemented":false,"kind":"function","modifiers":[],"name":"isUserAutoVotingEnabledInCurrentRound","nameLocation":"11981:37:34","nodeType":"FunctionDefinition","parameters":{"id":17212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17211,"mutability":"mutable","name":"account","nameLocation":"12027:7:34","nodeType":"VariableDeclaration","scope":17216,"src":"12019:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17210,"name":"address","nodeType":"ElementaryTypeName","src":"12019:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12018:17:34"},"returnParameters":{"id":17215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17214,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17216,"src":"12059:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17213,"name":"bool","nodeType":"ElementaryTypeName","src":"12059:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12058:6:34"},"scope":17346,"src":"11972:93:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17217,"nodeType":"StructuredDocumentation","src":"12069:249:34","text":" @dev Check if autovoting is enabled for an account at a specific round\n @param account The address to check\n @param roundId The round id to check\n @return Whether autovoting is enabled for the account at the specific round"},"functionSelector":"3d4fd3c7","id":17226,"implemented":false,"kind":"function","modifiers":[],"name":"isUserAutoVotingEnabledForRound","nameLocation":"12330:31:34","nodeType":"FunctionDefinition","parameters":{"id":17222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17219,"mutability":"mutable","name":"account","nameLocation":"12370:7:34","nodeType":"VariableDeclaration","scope":17226,"src":"12362:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17218,"name":"address","nodeType":"ElementaryTypeName","src":"12362:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17221,"mutability":"mutable","name":"roundId","nameLocation":"12387:7:34","nodeType":"VariableDeclaration","scope":17226,"src":"12379:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17220,"name":"uint256","nodeType":"ElementaryTypeName","src":"12379:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12361:34:34"},"returnParameters":{"id":17225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17226,"src":"12419:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17223,"name":"bool","nodeType":"ElementaryTypeName","src":"12419:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12418:6:34"},"scope":17346,"src":"12321:104:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17227,"nodeType":"StructuredDocumentation","src":"12429:89:34","text":" @dev Check if autovoting is enabled for an account at a specific timepoint"},"functionSelector":"a461a94d","id":17236,"implemented":false,"kind":"function","modifiers":[],"name":"isUserAutoVotingEnabledAtTimepoint","nameLocation":"12530:34:34","nodeType":"FunctionDefinition","parameters":{"id":17232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17229,"mutability":"mutable","name":"account","nameLocation":"12573:7:34","nodeType":"VariableDeclaration","scope":17236,"src":"12565:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17228,"name":"address","nodeType":"ElementaryTypeName","src":"12565:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17231,"mutability":"mutable","name":"timepoint","nameLocation":"12589:9:34","nodeType":"VariableDeclaration","scope":17236,"src":"12582:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":17230,"name":"uint48","nodeType":"ElementaryTypeName","src":"12582:6:34","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"12564:35:34"},"returnParameters":{"id":17235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17236,"src":"12623:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17233,"name":"bool","nodeType":"ElementaryTypeName","src":"12623:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12622:6:34"},"scope":17346,"src":"12521:108:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17237,"nodeType":"StructuredDocumentation","src":"12633:63:34","text":" @dev Returns the current allocation round round."},"functionSelector":"9cbe5efd","id":17242,"implemented":false,"kind":"function","modifiers":[],"name":"currentRoundId","nameLocation":"12708:14:34","nodeType":"FunctionDefinition","parameters":{"id":17238,"nodeType":"ParameterList","parameters":[],"src":"12722:2:34"},"returnParameters":{"id":17241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17240,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17242,"src":"12748:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17239,"name":"uint256","nodeType":"ElementaryTypeName","src":"12748:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12747:9:34"},"scope":17346,"src":"12699:58:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17243,"nodeType":"StructuredDocumentation","src":"12761:78:34","text":" @dev Returns the current allocation round block when it starts."},"functionSelector":"561b64ef","id":17248,"implemented":false,"kind":"function","modifiers":[],"name":"currentRoundSnapshot","nameLocation":"12851:20:34","nodeType":"FunctionDefinition","parameters":{"id":17244,"nodeType":"ParameterList","parameters":[],"src":"12871:2:34"},"returnParameters":{"id":17247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17248,"src":"12897:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17245,"name":"uint256","nodeType":"ElementaryTypeName","src":"12897:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12896:9:34"},"scope":17346,"src":"12842:64:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17249,"nodeType":"StructuredDocumentation","src":"12910:76:34","text":" @dev Returns the current allocation round block when it ends."},"functionSelector":"59372812","id":17254,"implemented":false,"kind":"function","modifiers":[],"name":"currentRoundDeadline","nameLocation":"12998:20:34","nodeType":"FunctionDefinition","parameters":{"id":17250,"nodeType":"ParameterList","parameters":[],"src":"13018:2:34"},"returnParameters":{"id":17253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17252,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17254,"src":"13044:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17251,"name":"uint256","nodeType":"ElementaryTypeName","src":"13044:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13043:9:34"},"scope":17346,"src":"12989:64:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17255,"nodeType":"StructuredDocumentation","src":"13057:75:34","text":" \n@dev Returns if quorum was reached for a specific round."},"functionSelector":"d4a8dd98","id":17262,"implemented":false,"kind":"function","modifiers":[],"name":"quorumReached","nameLocation":"13144:13:34","nodeType":"FunctionDefinition","parameters":{"id":17258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17257,"mutability":"mutable","name":"roundId","nameLocation":"13166:7:34","nodeType":"VariableDeclaration","scope":17262,"src":"13158:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17256,"name":"uint256","nodeType":"ElementaryTypeName","src":"13158:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13157:17:34"},"returnParameters":{"id":17261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17262,"src":"13198:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17259,"name":"bool","nodeType":"ElementaryTypeName","src":"13198:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13197:6:34"},"scope":17346,"src":"13135:69:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17263,"nodeType":"StructuredDocumentation","src":"13208:94:34","text":" @dev Returns the ids of apps that are available for voting in a specific round."},"functionSelector":"7ace2485","id":17271,"implemented":false,"kind":"function","modifiers":[],"name":"getAppIdsOfRound","nameLocation":"13314:16:34","nodeType":"FunctionDefinition","parameters":{"id":17266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17265,"mutability":"mutable","name":"roundId","nameLocation":"13339:7:34","nodeType":"VariableDeclaration","scope":17271,"src":"13331:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17264,"name":"uint256","nodeType":"ElementaryTypeName","src":"13331:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13330:17:34"},"returnParameters":{"id":17270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17271,"src":"13371:16:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":17267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13371:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":17268,"nodeType":"ArrayTypeName","src":"13371:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"13370:18:34"},"scope":17346,"src":"13305:84:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17272,"nodeType":"StructuredDocumentation","src":"13393:71:34","text":" @dev Returns if an app can be voted in a specific round."},"functionSelector":"d68b4c36","id":17281,"implemented":false,"kind":"function","modifiers":[],"name":"isEligibleForVote","nameLocation":"13476:17:34","nodeType":"FunctionDefinition","parameters":{"id":17277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17274,"mutability":"mutable","name":"appId","nameLocation":"13502:5:34","nodeType":"VariableDeclaration","scope":17281,"src":"13494:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17273,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13494:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":17276,"mutability":"mutable","name":"roundId","nameLocation":"13517:7:34","nodeType":"VariableDeclaration","scope":17281,"src":"13509:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17275,"name":"uint256","nodeType":"ElementaryTypeName","src":"13509:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13493:32:34"},"returnParameters":{"id":17280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17279,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17281,"src":"13549:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17278,"name":"bool","nodeType":"ElementaryTypeName","src":"13549:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13548:6:34"},"scope":17346,"src":"13467:88:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17282,"nodeType":"StructuredDocumentation","src":"13559:76:34","text":" @dev Checks if the state of the round is {RoundState.Active}."},"functionSelector":"82afd23b","id":17289,"implemented":false,"kind":"function","modifiers":[],"name":"isActive","nameLocation":"13647:8:34","nodeType":"FunctionDefinition","parameters":{"id":17285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17284,"mutability":"mutable","name":"roundId","nameLocation":"13664:7:34","nodeType":"VariableDeclaration","scope":17289,"src":"13656:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17283,"name":"uint256","nodeType":"ElementaryTypeName","src":"13656:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13655:17:34"},"returnParameters":{"id":17288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17289,"src":"13696:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17286,"name":"bool","nodeType":"ElementaryTypeName","src":"13696:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13695:6:34"},"scope":17346,"src":"13638:64:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17290,"nodeType":"StructuredDocumentation","src":"13706:68:34","text":" @dev Returns the id of the last round that succeeded."},"functionSelector":"30097377","id":17297,"implemented":false,"kind":"function","modifiers":[],"name":"latestSucceededRoundId","nameLocation":"13786:22:34","nodeType":"FunctionDefinition","parameters":{"id":17293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17292,"mutability":"mutable","name":"roundId","nameLocation":"13817:7:34","nodeType":"VariableDeclaration","scope":17297,"src":"13809:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17291,"name":"uint256","nodeType":"ElementaryTypeName","src":"13809:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13808:17:34"},"returnParameters":{"id":17296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17295,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17297,"src":"13849:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17294,"name":"uint256","nodeType":"ElementaryTypeName","src":"13849:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13848:9:34"},"scope":17346,"src":"13777:81:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17298,"nodeType":"StructuredDocumentation","src":"13862:88:34","text":" @dev Returns true if an account has voted at least one time in any round."},"functionSelector":"9aeb962b","id":17305,"implemented":false,"kind":"function","modifiers":[],"name":"hasVotedOnce","nameLocation":"13962:12:34","nodeType":"FunctionDefinition","parameters":{"id":17301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17300,"mutability":"mutable","name":"user","nameLocation":"13983:4:34","nodeType":"VariableDeclaration","scope":17305,"src":"13975:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17299,"name":"address","nodeType":"ElementaryTypeName","src":"13975:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13974:14:34"},"returnParameters":{"id":17304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17305,"src":"14012:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17302,"name":"bool","nodeType":"ElementaryTypeName","src":"14012:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14011:6:34"},"scope":17346,"src":"13953:65:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17306,"nodeType":"StructuredDocumentation","src":"14022:93:34","text":" @dev Returns the base allocation percentage for funds distribution in a round."},"functionSelector":"0eca87fb","id":17313,"implemented":false,"kind":"function","modifiers":[],"name":"getRoundBaseAllocationPercentage","nameLocation":"14127:32:34","nodeType":"FunctionDefinition","parameters":{"id":17309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17308,"mutability":"mutable","name":"roundId","nameLocation":"14168:7:34","nodeType":"VariableDeclaration","scope":17313,"src":"14160:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17307,"name":"uint256","nodeType":"ElementaryTypeName","src":"14160:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14159:17:34"},"returnParameters":{"id":17312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17311,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17313,"src":"14200:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17310,"name":"uint256","nodeType":"ElementaryTypeName","src":"14200:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14199:9:34"},"scope":17346,"src":"14118:91:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17314,"nodeType":"StructuredDocumentation","src":"14213:79:34","text":" @dev Returns the max amount of shares an app can get in a round."},"functionSelector":"0a0e74ef","id":17321,"implemented":false,"kind":"function","modifiers":[],"name":"getRoundAppSharesCap","nameLocation":"14304:20:34","nodeType":"FunctionDefinition","parameters":{"id":17317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17316,"mutability":"mutable","name":"roundId","nameLocation":"14333:7:34","nodeType":"VariableDeclaration","scope":17321,"src":"14325:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17315,"name":"uint256","nodeType":"ElementaryTypeName","src":"14325:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14324:17:34"},"returnParameters":{"id":17320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17319,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17321,"src":"14365:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17318,"name":"uint256","nodeType":"ElementaryTypeName","src":"14365:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14364:9:34"},"scope":17346,"src":"14295:79:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17322,"nodeType":"StructuredDocumentation","src":"14378:55:34","text":" @dev Validates if an account is a person"},"functionSelector":"cfea80ed","id":17329,"implemented":false,"kind":"function","modifiers":[],"name":"validatePersonhoodForCurrentRound","nameLocation":"14445:33:34","nodeType":"FunctionDefinition","parameters":{"id":17325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17324,"mutability":"mutable","name":"account","nameLocation":"14487:7:34","nodeType":"VariableDeclaration","scope":17329,"src":"14479:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17323,"name":"address","nodeType":"ElementaryTypeName","src":"14479:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14478:17:34"},"returnParameters":{"id":17328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17329,"src":"14519:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17326,"name":"bool","nodeType":"ElementaryTypeName","src":"14519:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14518:6:34"},"scope":17346,"src":"14436:89:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17330,"nodeType":"StructuredDocumentation","src":"14529:83:34","text":"@dev Deprecated: use getVotes instead, which now includes deposit voting power."},"functionSelector":"4cadad2f","id":17339,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalVotingPower","nameLocation":"14624:19:34","nodeType":"FunctionDefinition","parameters":{"id":17335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17332,"mutability":"mutable","name":"voter","nameLocation":"14652:5:34","nodeType":"VariableDeclaration","scope":17339,"src":"14644:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17331,"name":"address","nodeType":"ElementaryTypeName","src":"14644:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17334,"mutability":"mutable","name":"roundStart","nameLocation":"14667:10:34","nodeType":"VariableDeclaration","scope":17339,"src":"14659:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17333,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14643:35:34"},"returnParameters":{"id":17338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17339,"src":"14702:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17336,"name":"uint256","nodeType":"ElementaryTypeName","src":"14702:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14701:9:34"},"scope":17346,"src":"14615:96:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17340,"nodeType":"StructuredDocumentation","src":"14715:92:34","text":" @dev Get the total number of users who enabled auto-voting at the round start"},"functionSelector":"a022756b","id":17345,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalAutoVotingUsersAtRoundStart","nameLocation":"14819:35:34","nodeType":"FunctionDefinition","parameters":{"id":17341,"nodeType":"ParameterList","parameters":[],"src":"14854:2:34"},"returnParameters":{"id":17344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17345,"src":"14880:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":17342,"name":"uint208","nodeType":"ElementaryTypeName","src":"14880:7:34","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"14879:9:34"},"scope":17346,"src":"14810:79:34","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":17347,"src":"1227:13664:34","usedErrors":[16839,16844,16849,16859,16864,16869,16876,16879,16882,16889,16894,16899,16904,16909,16914,16919,16924,16929,16936,16941,16948],"usedEvents":[16961,16975,16988,17001,17008,17016,17031,17040,17053]}],"src":"32:14860:34"},"id":34},"contracts/libraries/X2EarnAppsDataTypes.sol":{"ast":{"absolutePath":"contracts/libraries/X2EarnAppsDataTypes.sol","exportedSymbols":{"X2EarnAppsDataTypes":[17369]},"id":17370,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":17348,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:35"},{"abstract":false,"baseContracts":[],"canonicalName":"X2EarnAppsDataTypes","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":17369,"linearizedBaseContracts":[17369],"name":"X2EarnAppsDataTypes","nameLocation":"65:19:35","nodeType":"ContractDefinition","nodes":[{"canonicalName":"X2EarnAppsDataTypes.App","id":17355,"members":[{"constant":false,"id":17350,"mutability":"mutable","name":"id","nameLocation":"114:2:35","nodeType":"VariableDeclaration","scope":17355,"src":"106:10:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17349,"name":"bytes32","nodeType":"ElementaryTypeName","src":"106:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":17352,"mutability":"mutable","name":"name","nameLocation":"129:4:35","nodeType":"VariableDeclaration","scope":17355,"src":"122:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":17351,"name":"string","nodeType":"ElementaryTypeName","src":"122:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17354,"mutability":"mutable","name":"createdAtTimestamp","nameLocation":"147:18:35","nodeType":"VariableDeclaration","scope":17355,"src":"139:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17353,"name":"uint256","nodeType":"ElementaryTypeName","src":"139:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"App","nameLocation":"96:3:35","nodeType":"StructDefinition","scope":17369,"src":"89:81:35","visibility":"public"},{"canonicalName":"X2EarnAppsDataTypes.AppWithDetailsReturnType","id":17368,"members":[{"constant":false,"id":17357,"mutability":"mutable","name":"id","nameLocation":"220:2:35","nodeType":"VariableDeclaration","scope":17368,"src":"212:10:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17356,"name":"bytes32","nodeType":"ElementaryTypeName","src":"212:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":17359,"mutability":"mutable","name":"teamWalletAddress","nameLocation":"236:17:35","nodeType":"VariableDeclaration","scope":17368,"src":"228:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17358,"name":"address","nodeType":"ElementaryTypeName","src":"228:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17361,"mutability":"mutable","name":"name","nameLocation":"266:4:35","nodeType":"VariableDeclaration","scope":17368,"src":"259:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":17360,"name":"string","nodeType":"ElementaryTypeName","src":"259:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17363,"mutability":"mutable","name":"metadataURI","nameLocation":"283:11:35","nodeType":"VariableDeclaration","scope":17368,"src":"276:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":17362,"name":"string","nodeType":"ElementaryTypeName","src":"276:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17365,"mutability":"mutable","name":"createdAtTimestamp","nameLocation":"308:18:35","nodeType":"VariableDeclaration","scope":17368,"src":"300:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17364,"name":"uint256","nodeType":"ElementaryTypeName","src":"300:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17367,"mutability":"mutable","name":"appAvailableForAllocationVoting","nameLocation":"337:31:35","nodeType":"VariableDeclaration","scope":17368,"src":"332:36:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17366,"name":"bool","nodeType":"ElementaryTypeName","src":"332:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"AppWithDetailsReturnType","nameLocation":"181:24:35","nodeType":"StructDefinition","scope":17369,"src":"174:199:35","visibility":"public"}],"scope":17370,"src":"57:318:35","usedErrors":[],"usedEvents":[]}],"src":"32:344:35"},"id":35},"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol":{"ast":{"absolutePath":"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol","exportedSymbols":{"VechainNodesDataTypes":[17403]},"id":17404,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":17371,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:36"},{"abstract":false,"baseContracts":[],"canonicalName":"VechainNodesDataTypes","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":17403,"linearizedBaseContracts":[17403],"name":"VechainNodesDataTypes","nameLocation":"65:21:36","nodeType":"ContractDefinition","nodes":[{"canonicalName":"VechainNodesDataTypes.NodeStrengthLevel","documentation":{"id":17372,"nodeType":"StructuredDocumentation","src":"93:56:36","text":" @dev The strength level of each node."},"id":17381,"members":[{"id":17373,"name":"None","nameLocation":"187:4:36","nodeType":"EnumValue","src":"187:4:36"},{"id":17374,"name":"Strength","nameLocation":"225:8:36","nodeType":"EnumValue","src":"225:8:36"},{"id":17375,"name":"Thunder","nameLocation":"243:7:36","nodeType":"EnumValue","src":"243:7:36"},{"id":17376,"name":"Mjolnir","nameLocation":"260:7:36","nodeType":"EnumValue","src":"260:7:36"},{"id":17377,"name":"VeThorX","nameLocation":"296:7:36","nodeType":"EnumValue","src":"296:7:36"},{"id":17378,"name":"StrengthX","nameLocation":"313:9:36","nodeType":"EnumValue","src":"313:9:36"},{"id":17379,"name":"ThunderX","nameLocation":"332:8:36","nodeType":"EnumValue","src":"332:8:36"},{"id":17380,"name":"MjolnirX","nameLocation":"350:8:36","nodeType":"EnumValue","src":"350:8:36"}],"name":"NodeStrengthLevel","nameLocation":"159:17:36","nodeType":"EnumDefinition","src":"154:210:36"},{"canonicalName":"VechainNodesDataTypes.NodeStrengthScores","documentation":{"id":17382,"nodeType":"StructuredDocumentation","src":"370:44:36","text":" @dev The score of a node."},"id":17397,"members":[{"constant":false,"id":17384,"mutability":"mutable","name":"strength","nameLocation":"463:8:36","nodeType":"VariableDeclaration","scope":17397,"src":"455:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17383,"name":"uint256","nodeType":"ElementaryTypeName","src":"455:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17386,"mutability":"mutable","name":"thunder","nameLocation":"489:7:36","nodeType":"VariableDeclaration","scope":17397,"src":"481:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17385,"name":"uint256","nodeType":"ElementaryTypeName","src":"481:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17388,"mutability":"mutable","name":"mjolnir","nameLocation":"514:7:36","nodeType":"VariableDeclaration","scope":17397,"src":"506:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17387,"name":"uint256","nodeType":"ElementaryTypeName","src":"506:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17390,"mutability":"mutable","name":"veThorX","nameLocation":"539:7:36","nodeType":"VariableDeclaration","scope":17397,"src":"531:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17389,"name":"uint256","nodeType":"ElementaryTypeName","src":"531:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17392,"mutability":"mutable","name":"strengthX","nameLocation":"564:9:36","nodeType":"VariableDeclaration","scope":17397,"src":"556:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17391,"name":"uint256","nodeType":"ElementaryTypeName","src":"556:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17394,"mutability":"mutable","name":"thunderX","nameLocation":"591:8:36","nodeType":"VariableDeclaration","scope":17397,"src":"583:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17393,"name":"uint256","nodeType":"ElementaryTypeName","src":"583:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17396,"mutability":"mutable","name":"mjolnirX","nameLocation":"617:8:36","nodeType":"VariableDeclaration","scope":17397,"src":"609:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17395,"name":"uint256","nodeType":"ElementaryTypeName","src":"609:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"NodeStrengthScores","nameLocation":"426:18:36","nodeType":"StructDefinition","scope":17403,"src":"419:213:36","visibility":"public"},{"canonicalName":"VechainNodesDataTypes.NodeSource","documentation":{"id":17398,"nodeType":"StructuredDocumentation","src":"638:87:36","text":" @dev The source of a node: VeChainNodes legacy contract or Stargate."},"id":17402,"members":[{"id":17399,"name":"None","nameLocation":"756:4:36","nodeType":"EnumValue","src":"756:4:36"},{"id":17400,"name":"VeChainNodes","nameLocation":"770:12:36","nodeType":"EnumValue","src":"770:12:36"},{"id":17401,"name":"StargateNFT","nameLocation":"792:11:36","nodeType":"EnumValue","src":"792:11:36"}],"name":"NodeSource","nameLocation":"735:10:36","nodeType":"EnumDefinition","src":"730:79:36"}],"scope":17404,"src":"57:754:36","usedErrors":[],"usedEvents":[]}],"src":"32:780:36"},"id":36},"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol":{"ast":{"absolutePath":"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol","exportedSymbols":{"Checkpoints":[6421],"DataTypes":[17569],"EnumerableSet":[7034],"IERC20":[1516],"IStargate":[18153],"IStargateDelegation":[18400],"ITokenAuction":[19387]},"id":17570,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":17405,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"833:23:37"},{"absolutePath":"@openzeppelin/contracts/utils/structs/EnumerableSet.sol","file":"@openzeppelin/contracts/utils/structs/EnumerableSet.sol","id":17407,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17570,"sourceUnit":7035,"src":"858:88:37","symbolAliases":[{"foreign":{"id":17406,"name":"EnumerableSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7034,"src":"867:13:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":17409,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17570,"sourceUnit":1517,"src":"947:72:37","symbolAliases":[{"foreign":{"id":17408,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"956:6:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/structs/Checkpoints.sol","file":"@openzeppelin/contracts/utils/structs/Checkpoints.sol","id":17411,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17570,"sourceUnit":6422,"src":"1020:84:37","symbolAliases":[{"foreign":{"id":17410,"name":"Checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"1029:11:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/interfaces/ITokenAuction.sol","file":"../../interfaces/ITokenAuction.sol","id":17413,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17570,"sourceUnit":19388,"src":"1105:67:37","symbolAliases":[{"foreign":{"id":17412,"name":"ITokenAuction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19387,"src":"1114:13:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol","file":"../../interfaces/IStargateDelegation.sol","id":17415,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17570,"sourceUnit":18401,"src":"1173:79:37","symbolAliases":[{"foreign":{"id":17414,"name":"IStargateDelegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18400,"src":"1182:19:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/interfaces/IStargate.sol","file":"../../interfaces/IStargate.sol","id":17417,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17570,"sourceUnit":18154,"src":"1253:59:37","symbolAliases":[{"foreign":{"id":17416,"name":"IStargate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18153,"src":"1262:9:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"DataTypes","contractDependencies":[],"contractKind":"library","documentation":{"id":17418,"nodeType":"StructuredDocumentation","src":"1314:145:37","text":"@title DataTypes\n @notice Library for the StargateNFT contract to store data structure definitions used across the contract and libraries"},"fullyImplemented":true,"id":17569,"linearizedBaseContracts":[17569],"name":"DataTypes","nameLocation":"1467:9:37","nodeType":"ContractDefinition","nodes":[{"global":false,"id":17422,"libraryName":{"id":17419,"name":"Checkpoints","nameLocations":["1487:11:37"],"nodeType":"IdentifierPath","referencedDeclaration":6421,"src":"1487:11:37"},"nodeType":"UsingForDirective","src":"1481:43:37","typeName":{"id":17421,"nodeType":"UserDefinedTypeName","pathNode":{"id":17420,"name":"Checkpoints.Trace208","nameLocations":["1503:11:37","1515:8:37"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"1503:20:37"},"referencedDeclaration":5383,"src":"1503:20:37","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}}},{"global":false,"id":17426,"libraryName":{"id":17423,"name":"EnumerableSet","nameLocations":["1533:13:37"],"nodeType":"IdentifierPath","referencedDeclaration":7034,"src":"1533:13:37"},"nodeType":"UsingForDirective","src":"1527:46:37","typeName":{"id":17425,"nodeType":"UserDefinedTypeName","pathNode":{"id":17424,"name":"EnumerableSet.UintSet","nameLocations":["1551:13:37","1565:7:37"],"nodeType":"IdentifierPath","referencedDeclaration":6904,"src":"1551:21:37"},"referencedDeclaration":6904,"src":"1551:21:37","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},{"canonicalName":"DataTypes.StargateNFTStorage","id":17488,"members":[{"constant":false,"id":17428,"mutability":"mutable","name":"vthoGenerationEndTimestamp_deprecated","nameLocation":"1616:37:37","nodeType":"VariableDeclaration","scope":17488,"src":"1609:44:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":17427,"name":"uint48","nodeType":"ElementaryTypeName","src":"1609:6:37","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":17430,"mutability":"mutable","name":"MAX_LEVEL_ID","nameLocation":"1807:12:37","nodeType":"VariableDeclaration","scope":17488,"src":"1801:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17429,"name":"uint8","nodeType":"ElementaryTypeName","src":"1801:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17433,"mutability":"mutable","name":"legacyNodes","nameLocation":"1859:11:37","nodeType":"VariableDeclaration","scope":17488,"src":"1845:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITokenAuction_$19387","typeString":"contract ITokenAuction"},"typeName":{"id":17432,"nodeType":"UserDefinedTypeName","pathNode":{"id":17431,"name":"ITokenAuction","nameLocations":["1845:13:37"],"nodeType":"IdentifierPath","referencedDeclaration":19387,"src":"1845:13:37"},"referencedDeclaration":19387,"src":"1845:13:37","typeDescriptions":{"typeIdentifier":"t_contract$_ITokenAuction_$19387","typeString":"contract ITokenAuction"}},"visibility":"internal"},{"constant":false,"id":17436,"mutability":"mutable","name":"stargateDelegation_deprecated","nameLocation":"1921:29:37","nodeType":"VariableDeclaration","scope":17488,"src":"1901:49:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateDelegation_$18400","typeString":"contract IStargateDelegation"},"typeName":{"id":17435,"nodeType":"UserDefinedTypeName","pathNode":{"id":17434,"name":"IStargateDelegation","nameLocations":["1901:19:37"],"nodeType":"IdentifierPath","referencedDeclaration":18400,"src":"1901:19:37"},"referencedDeclaration":18400,"src":"1901:19:37","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateDelegation_$18400","typeString":"contract IStargateDelegation"}},"visibility":"internal"},{"constant":false,"id":17439,"mutability":"mutable","name":"vthoToken","nameLocation":"2021:9:37","nodeType":"VariableDeclaration","scope":17488,"src":"2014:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1516","typeString":"contract IERC20"},"typeName":{"id":17438,"nodeType":"UserDefinedTypeName","pathNode":{"id":17437,"name":"IERC20","nameLocations":["2014:6:37"],"nodeType":"IdentifierPath","referencedDeclaration":1516,"src":"2014:6:37"},"referencedDeclaration":1516,"src":"2014:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1516","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17441,"mutability":"mutable","name":"currentTokenId","nameLocation":"2067:14:37","nodeType":"VariableDeclaration","scope":17488,"src":"2059:22:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17440,"name":"uint256","nodeType":"ElementaryTypeName","src":"2059:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17443,"mutability":"mutable","name":"baseTokenURI","nameLocation":"2130:12:37","nodeType":"VariableDeclaration","scope":17488,"src":"2123:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":17442,"name":"string","nodeType":"ElementaryTypeName","src":"2123:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17448,"mutability":"mutable","name":"levels","nameLocation":"2215:6:37","nodeType":"VariableDeclaration","scope":17488,"src":"2183:38:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_struct$_Level_$17528_storage_$","typeString":"mapping(uint8 => struct DataTypes.Level)"},"typeName":{"id":17447,"keyName":"levelId","keyNameLocation":"2197:7:37","keyType":{"id":17444,"name":"uint8","nodeType":"ElementaryTypeName","src":"2191:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Mapping","src":"2183:31:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_struct$_Level_$17528_storage_$","typeString":"mapping(uint8 => struct DataTypes.Level)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17446,"nodeType":"UserDefinedTypeName","pathNode":{"id":17445,"name":"Level","nameLocations":["2208:5:37"],"nodeType":"IdentifierPath","referencedDeclaration":17528,"src":"2208:5:37"},"referencedDeclaration":17528,"src":"2208:5:37","typeDescriptions":{"typeIdentifier":"t_struct$_Level_$17528_storage_ptr","typeString":"struct DataTypes.Level"}}},"visibility":"internal"},{"constant":false,"id":17453,"mutability":"mutable","name":"circulatingSupply","nameLocation":"2342:17:37","nodeType":"VariableDeclaration","scope":17488,"src":"2295:64:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(uint8 => struct Checkpoints.Trace208)"},"typeName":{"id":17452,"keyName":"levelId","keyNameLocation":"2309:7:37","keyType":{"id":17449,"name":"uint8","nodeType":"ElementaryTypeName","src":"2303:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Mapping","src":"2295:46:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(uint8 => struct Checkpoints.Trace208)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17451,"nodeType":"UserDefinedTypeName","pathNode":{"id":17450,"name":"Checkpoints.Trace208","nameLocations":["2320:11:37","2332:8:37"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"2320:20:37"},"referencedDeclaration":5383,"src":"2320:20:37","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}}},"visibility":"internal"},{"constant":false,"id":17457,"mutability":"mutable","name":"cap","nameLocation":"2465:3:37","nodeType":"VariableDeclaration","scope":17488,"src":"2432:36:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint32_$","typeString":"mapping(uint8 => uint32)"},"typeName":{"id":17456,"keyName":"levelId","keyNameLocation":"2446:7:37","keyType":{"id":17454,"name":"uint8","nodeType":"ElementaryTypeName","src":"2440:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Mapping","src":"2432:32:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint32_$","typeString":"mapping(uint8 => uint32)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17455,"name":"uint32","nodeType":"ElementaryTypeName","src":"2457:6:37","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}},"visibility":"internal"},{"constant":false,"id":17462,"mutability":"mutable","name":"tokens","nameLocation":"2575:6:37","nodeType":"VariableDeclaration","scope":17488,"src":"2541:40:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Token_$17547_storage_$","typeString":"mapping(uint256 => struct DataTypes.Token)"},"typeName":{"id":17461,"keyName":"tokenId","keyNameLocation":"2557:7:37","keyType":{"id":17458,"name":"uint256","nodeType":"ElementaryTypeName","src":"2549:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2541:33:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Token_$17547_storage_$","typeString":"mapping(uint256 => struct DataTypes.Token)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17460,"nodeType":"UserDefinedTypeName","pathNode":{"id":17459,"name":"Token","nameLocations":["2568:5:37"],"nodeType":"IdentifierPath","referencedDeclaration":17547,"src":"2568:5:37"},"referencedDeclaration":17547,"src":"2568:5:37","typeDescriptions":{"typeIdentifier":"t_struct$_Token_$17547_storage_ptr","typeString":"struct DataTypes.Token"}}},"visibility":"internal"},{"constant":false,"id":17466,"mutability":"mutable","name":"maturityPeriodEndBlock","nameLocation":"2667:22:37","nodeType":"VariableDeclaration","scope":17488,"src":"2632:57:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint64_$","typeString":"mapping(uint256 => uint64)"},"typeName":{"id":17465,"keyName":"tokenId","keyNameLocation":"2648:7:37","keyType":{"id":17463,"name":"uint256","nodeType":"ElementaryTypeName","src":"2640:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2632:34:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint64_$","typeString":"mapping(uint256 => uint64)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17464,"name":"uint64","nodeType":"ElementaryTypeName","src":"2659:6:37","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}},"visibility":"internal"},{"constant":false,"id":17471,"mutability":"mutable","name":"whitelistEntries_deprecated","nameLocation":"2775:27:37","nodeType":"VariableDeclaration","scope":17488,"src":"2740:62:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_WhitelistEntry_$17552_storage_$","typeString":"mapping(address => struct DataTypes.WhitelistEntry)"},"typeName":{"id":17470,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":17467,"name":"address","nodeType":"ElementaryTypeName","src":"2748:7:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2740:34:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_WhitelistEntry_$17552_storage_$","typeString":"mapping(address => struct DataTypes.WhitelistEntry)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17469,"nodeType":"UserDefinedTypeName","pathNode":{"id":17468,"name":"WhitelistEntry","nameLocations":["2759:14:37"],"nodeType":"IdentifierPath","referencedDeclaration":17552,"src":"2759:14:37"},"referencedDeclaration":17552,"src":"2759:14:37","typeDescriptions":{"typeIdentifier":"t_struct$_WhitelistEntry_$17552_storage_ptr","typeString":"struct DataTypes.WhitelistEntry"}}},"visibility":"internal"},{"constant":false,"id":17474,"mutability":"mutable","name":"stargate","nameLocation":"2924:8:37","nodeType":"VariableDeclaration","scope":17488,"src":"2914:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStargate_$18153","typeString":"contract IStargate"},"typeName":{"id":17473,"nodeType":"UserDefinedTypeName","pathNode":{"id":17472,"name":"IStargate","nameLocations":["2914:9:37"],"nodeType":"IdentifierPath","referencedDeclaration":18153,"src":"2914:9:37"},"referencedDeclaration":18153,"src":"2914:9:37","typeDescriptions":{"typeIdentifier":"t_contract$_IStargate_$18153","typeString":"contract IStargate"}},"visibility":"internal"},{"constant":false,"id":17479,"mutability":"mutable","name":"managerToTokenIds","nameLocation":"3010:17:37","nodeType":"VariableDeclaration","scope":17488,"src":"2968:59:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6904_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"typeName":{"id":17478,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":17475,"name":"address","nodeType":"ElementaryTypeName","src":"2976:7:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2968:41:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UintSet_$6904_storage_$","typeString":"mapping(address => struct EnumerableSet.UintSet)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17477,"nodeType":"UserDefinedTypeName","pathNode":{"id":17476,"name":"EnumerableSet.UintSet","nameLocations":["2987:13:37","3001:7:37"],"nodeType":"IdentifierPath","referencedDeclaration":6904,"src":"2987:21:37"},"referencedDeclaration":6904,"src":"2987:21:37","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$6904_storage_ptr","typeString":"struct EnumerableSet.UintSet"}}},"visibility":"internal"},{"constant":false,"id":17483,"mutability":"mutable","name":"tokenIdToManager","nameLocation":"3097:16:37","nodeType":"VariableDeclaration","scope":17488,"src":"3069:44:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":17482,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":17480,"name":"uint256","nodeType":"ElementaryTypeName","src":"3077:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3069:27:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17481,"name":"address","nodeType":"ElementaryTypeName","src":"3088:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"constant":false,"id":17487,"mutability":"mutable","name":"boostPricePerBlock","nameLocation":"3188:18:37","nodeType":"VariableDeclaration","scope":17488,"src":"3154:52:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"},"typeName":{"id":17486,"keyName":"levelId","keyNameLocation":"3168:7:37","keyType":{"id":17484,"name":"uint8","nodeType":"ElementaryTypeName","src":"3162:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Mapping","src":"3154:33:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":17485,"name":"uint256","nodeType":"ElementaryTypeName","src":"3179:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"StargateNFTStorage","nameLocation":"1584:18:37","nodeType":"StructDefinition","scope":17569,"src":"1577:1675:37","visibility":"public"},{"canonicalName":"DataTypes.StargateNFTInitParams","id":17515,"members":[{"constant":false,"id":17490,"mutability":"mutable","name":"tokenCollectionName","nameLocation":"3298:19:37","nodeType":"VariableDeclaration","scope":17515,"src":"3291:26:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":17489,"name":"string","nodeType":"ElementaryTypeName","src":"3291:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17492,"mutability":"mutable","name":"tokenCollectionSymbol","nameLocation":"3362:21:37","nodeType":"VariableDeclaration","scope":17515,"src":"3355:28:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":17491,"name":"string","nodeType":"ElementaryTypeName","src":"3355:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17494,"mutability":"mutable","name":"baseTokenURI","nameLocation":"3430:12:37","nodeType":"VariableDeclaration","scope":17515,"src":"3423:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":17493,"name":"string","nodeType":"ElementaryTypeName","src":"3423:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17496,"mutability":"mutable","name":"admin","nameLocation":"3491:5:37","nodeType":"VariableDeclaration","scope":17515,"src":"3483:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17495,"name":"address","nodeType":"ElementaryTypeName","src":"3483:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17498,"mutability":"mutable","name":"upgrader","nameLocation":"3551:8:37","nodeType":"VariableDeclaration","scope":17515,"src":"3543:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17497,"name":"address","nodeType":"ElementaryTypeName","src":"3543:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17500,"mutability":"mutable","name":"pauser","nameLocation":"3609:6:37","nodeType":"VariableDeclaration","scope":17515,"src":"3601:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17499,"name":"address","nodeType":"ElementaryTypeName","src":"3601:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17502,"mutability":"mutable","name":"levelOperator","nameLocation":"3663:13:37","nodeType":"VariableDeclaration","scope":17515,"src":"3655:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17501,"name":"address","nodeType":"ElementaryTypeName","src":"3655:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17504,"mutability":"mutable","name":"legacyNodes","nameLocation":"3732:11:37","nodeType":"VariableDeclaration","scope":17515,"src":"3724:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17503,"name":"address","nodeType":"ElementaryTypeName","src":"3724:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17506,"mutability":"mutable","name":"stargateDelegation","nameLocation":"3804:18:37","nodeType":"VariableDeclaration","scope":17515,"src":"3796:26:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17505,"name":"address","nodeType":"ElementaryTypeName","src":"3796:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17508,"mutability":"mutable","name":"vthoToken","nameLocation":"3883:9:37","nodeType":"VariableDeclaration","scope":17515,"src":"3875:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17507,"name":"address","nodeType":"ElementaryTypeName","src":"3875:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17510,"mutability":"mutable","name":"legacyLastTokenId","nameLocation":"3944:17:37","nodeType":"VariableDeclaration","scope":17515,"src":"3936:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17509,"name":"uint256","nodeType":"ElementaryTypeName","src":"3936:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17514,"mutability":"mutable","name":"levelsAndSupplies","nameLocation":"4072:17:37","nodeType":"VariableDeclaration","scope":17515,"src":"4055:34:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_LevelAndSupply_$17536_storage_$dyn_storage_ptr","typeString":"struct DataTypes.LevelAndSupply[]"},"typeName":{"baseType":{"id":17512,"nodeType":"UserDefinedTypeName","pathNode":{"id":17511,"name":"LevelAndSupply","nameLocations":["4055:14:37"],"nodeType":"IdentifierPath","referencedDeclaration":17536,"src":"4055:14:37"},"referencedDeclaration":17536,"src":"4055:14:37","typeDescriptions":{"typeIdentifier":"t_struct$_LevelAndSupply_$17536_storage_ptr","typeString":"struct DataTypes.LevelAndSupply"}},"id":17513,"nodeType":"ArrayTypeName","src":"4055:16:37","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_LevelAndSupply_$17536_storage_$dyn_storage_ptr","typeString":"struct DataTypes.LevelAndSupply[]"}},"visibility":"internal"}],"name":"StargateNFTInitParams","nameLocation":"3263:21:37","nodeType":"StructDefinition","scope":17569,"src":"3256:875:37","visibility":"public"},{"canonicalName":"DataTypes.Level","id":17528,"members":[{"constant":false,"id":17517,"mutability":"mutable","name":"name","nameLocation":"4161:4:37","nodeType":"VariableDeclaration","scope":17528,"src":"4154:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":17516,"name":"string","nodeType":"ElementaryTypeName","src":"4154:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17519,"mutability":"mutable","name":"isX","nameLocation":"4226:3:37","nodeType":"VariableDeclaration","scope":17528,"src":"4221:8:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17518,"name":"bool","nodeType":"ElementaryTypeName","src":"4221:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17521,"mutability":"mutable","name":"id","nameLocation":"4278:2:37","nodeType":"VariableDeclaration","scope":17528,"src":"4272:8:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17520,"name":"uint8","nodeType":"ElementaryTypeName","src":"4272:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17523,"mutability":"mutable","name":"maturityBlocks","nameLocation":"4370:14:37","nodeType":"VariableDeclaration","scope":17528,"src":"4363:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":17522,"name":"uint64","nodeType":"ElementaryTypeName","src":"4363:6:37","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":17525,"mutability":"mutable","name":"scaledRewardFactor","nameLocation":"4426:18:37","nodeType":"VariableDeclaration","scope":17528,"src":"4419:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":17524,"name":"uint64","nodeType":"ElementaryTypeName","src":"4419:6:37","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":17527,"mutability":"mutable","name":"vetAmountRequiredToStake","nameLocation":"4532:24:37","nodeType":"VariableDeclaration","scope":17528,"src":"4524:32:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17526,"name":"uint256","nodeType":"ElementaryTypeName","src":"4524:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Level","nameLocation":"4142:5:37","nodeType":"StructDefinition","scope":17569,"src":"4135:461:37","visibility":"public"},{"canonicalName":"DataTypes.LevelAndSupply","id":17536,"members":[{"constant":false,"id":17531,"mutability":"mutable","name":"level","nameLocation":"4634:5:37","nodeType":"VariableDeclaration","scope":17536,"src":"4628:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Level_$17528_storage_ptr","typeString":"struct DataTypes.Level"},"typeName":{"id":17530,"nodeType":"UserDefinedTypeName","pathNode":{"id":17529,"name":"Level","nameLocations":["4628:5:37"],"nodeType":"IdentifierPath","referencedDeclaration":17528,"src":"4628:5:37"},"referencedDeclaration":17528,"src":"4628:5:37","typeDescriptions":{"typeIdentifier":"t_struct$_Level_$17528_storage_ptr","typeString":"struct DataTypes.Level"}},"visibility":"internal"},{"constant":false,"id":17533,"mutability":"mutable","name":"circulatingSupply","nameLocation":"4670:17:37","nodeType":"VariableDeclaration","scope":17536,"src":"4662:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":17532,"name":"uint208","nodeType":"ElementaryTypeName","src":"4662:7:37","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"},{"constant":false,"id":17535,"mutability":"mutable","name":"cap","nameLocation":"4730:3:37","nodeType":"VariableDeclaration","scope":17536,"src":"4723:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17534,"name":"uint32","nodeType":"ElementaryTypeName","src":"4723:6:37","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"name":"LevelAndSupply","nameLocation":"4607:14:37","nodeType":"StructDefinition","scope":17569,"src":"4600:160:37","visibility":"public"},{"canonicalName":"DataTypes.Token","id":17547,"members":[{"constant":false,"id":17538,"mutability":"mutable","name":"tokenId","nameLocation":"4791:7:37","nodeType":"VariableDeclaration","scope":17547,"src":"4783:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17537,"name":"uint256","nodeType":"ElementaryTypeName","src":"4783:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17540,"mutability":"mutable","name":"levelId","nameLocation":"4810:7:37","nodeType":"VariableDeclaration","scope":17547,"src":"4804:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17539,"name":"uint8","nodeType":"ElementaryTypeName","src":"4804:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17542,"mutability":"mutable","name":"mintedAtBlock","nameLocation":"4830:13:37","nodeType":"VariableDeclaration","scope":17547,"src":"4823:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":17541,"name":"uint64","nodeType":"ElementaryTypeName","src":"4823:6:37","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":17544,"mutability":"mutable","name":"vetAmountStaked","nameLocation":"4857:15:37","nodeType":"VariableDeclaration","scope":17547,"src":"4849:23:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17543,"name":"uint256","nodeType":"ElementaryTypeName","src":"4849:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17546,"mutability":"mutable","name":"lastVetGeneratedVthoClaimTimestamp_deprecated","nameLocation":"4885:45:37","nodeType":"VariableDeclaration","scope":17547,"src":"4878:52:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":17545,"name":"uint48","nodeType":"ElementaryTypeName","src":"4878:6:37","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"Token","nameLocation":"4771:5:37","nodeType":"StructDefinition","scope":17569,"src":"4764:311:37","visibility":"public"},{"canonicalName":"DataTypes.WhitelistEntry","id":17552,"members":[{"constant":false,"id":17549,"mutability":"mutable","name":"tokenId","nameLocation":"5115:7:37","nodeType":"VariableDeclaration","scope":17552,"src":"5107:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17548,"name":"uint256","nodeType":"ElementaryTypeName","src":"5107:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17551,"mutability":"mutable","name":"levelId","nameLocation":"5134:7:37","nodeType":"VariableDeclaration","scope":17552,"src":"5128:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17550,"name":"uint8","nodeType":"ElementaryTypeName","src":"5128:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"WhitelistEntry","nameLocation":"5086:14:37","nodeType":"StructDefinition","scope":17569,"src":"5079:67:37","visibility":"public"},{"canonicalName":"DataTypes.WhitelistEntryInit","id":17559,"members":[{"constant":false,"id":17554,"mutability":"mutable","name":"owner","nameLocation":"5190:5:37","nodeType":"VariableDeclaration","scope":17559,"src":"5182:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17553,"name":"address","nodeType":"ElementaryTypeName","src":"5182:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17556,"mutability":"mutable","name":"tokenId","nameLocation":"5209:7:37","nodeType":"VariableDeclaration","scope":17559,"src":"5201:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17555,"name":"uint256","nodeType":"ElementaryTypeName","src":"5201:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17558,"mutability":"mutable","name":"levelId","nameLocation":"5228:7:37","nodeType":"VariableDeclaration","scope":17559,"src":"5222:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17557,"name":"uint8","nodeType":"ElementaryTypeName","src":"5222:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"WhitelistEntryInit","nameLocation":"5157:18:37","nodeType":"StructDefinition","scope":17569,"src":"5150:90:37","visibility":"public"},{"canonicalName":"DataTypes.TokenOverview","id":17568,"members":[{"constant":false,"id":17561,"mutability":"mutable","name":"id","nameLocation":"5279:2:37","nodeType":"VariableDeclaration","scope":17568,"src":"5271:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17560,"name":"uint256","nodeType":"ElementaryTypeName","src":"5271:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17563,"mutability":"mutable","name":"owner","nameLocation":"5295:5:37","nodeType":"VariableDeclaration","scope":17568,"src":"5287:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17562,"name":"address","nodeType":"ElementaryTypeName","src":"5287:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17565,"mutability":"mutable","name":"manager","nameLocation":"5314:7:37","nodeType":"VariableDeclaration","scope":17568,"src":"5306:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17564,"name":"address","nodeType":"ElementaryTypeName","src":"5306:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17567,"mutability":"mutable","name":"levelId","nameLocation":"5333:7:37","nodeType":"VariableDeclaration","scope":17568,"src":"5327:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17566,"name":"uint8","nodeType":"ElementaryTypeName","src":"5327:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"TokenOverview","nameLocation":"5251:13:37","nodeType":"StructDefinition","scope":17569,"src":"5244:101:37","visibility":"public"}],"scope":17570,"src":"1459:3888:37","usedErrors":[],"usedEvents":[]}],"src":"833:4515:37"},"id":37},"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol":{"ast":{"absolutePath":"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol","exportedSymbols":{"DataTypes":[17569],"INodeManagementV3":[17839],"VechainNodesDataTypes":[17403]},"id":17840,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":17571,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"33:23:38"},{"absolutePath":"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol","file":"../../NodeManagement/libraries/VechainNodesDataTypes.sol","id":17573,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17840,"sourceUnit":17404,"src":"58:97:38","symbolAliases":[{"foreign":{"id":17572,"name":"VechainNodesDataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17403,"src":"67:21:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol","file":"../../StargateNFT/libraries/DataTypes.sol","id":17575,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17840,"sourceUnit":17570,"src":"156:70:38","symbolAliases":[{"foreign":{"id":17574,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17569,"src":"165:9:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"INodeManagementV3","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":17839,"linearizedBaseContracts":[17839],"name":"INodeManagementV3","nameLocation":"238:17:38","nodeType":"ContractDefinition","nodes":[{"canonicalName":"INodeManagementV3.NodeSource","id":17579,"members":[{"id":17576,"name":"Node","nameLocation":"282:4:38","nodeType":"EnumValue","src":"282:4:38"},{"id":17577,"name":"VeChainNodes","nameLocation":"292:12:38","nodeType":"EnumValue","src":"292:12:38"},{"id":17578,"name":"StargateNFT","nameLocation":"310:11:38","nodeType":"EnumValue","src":"310:11:38"}],"name":"NodeSource","nameLocation":"265:10:38","nodeType":"EnumDefinition","src":"260:65:38"},{"canonicalName":"INodeManagementV3.NodeInfo","id":17596,"members":[{"constant":false,"id":17581,"mutability":"mutable","name":"nodeId","nameLocation":"417:6:38","nodeType":"VariableDeclaration","scope":17596,"src":"409:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17580,"name":"uint256","nodeType":"ElementaryTypeName","src":"409:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17583,"mutability":"mutable","name":"nodeLevel","nameLocation":"435:9:38","nodeType":"VariableDeclaration","scope":17596,"src":"429:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17582,"name":"uint8","nodeType":"ElementaryTypeName","src":"429:5:38","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17585,"mutability":"mutable","name":"xNodeOwner","nameLocation":"458:10:38","nodeType":"VariableDeclaration","scope":17596,"src":"450:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17584,"name":"address","nodeType":"ElementaryTypeName","src":"450:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17587,"mutability":"mutable","name":"isXNodeHolder","nameLocation":"479:13:38","nodeType":"VariableDeclaration","scope":17596,"src":"474:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17586,"name":"bool","nodeType":"ElementaryTypeName","src":"474:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17589,"mutability":"mutable","name":"isXNodeDelegated","nameLocation":"503:16:38","nodeType":"VariableDeclaration","scope":17596,"src":"498:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17588,"name":"bool","nodeType":"ElementaryTypeName","src":"498:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17591,"mutability":"mutable","name":"isXNodeDelegator","nameLocation":"530:16:38","nodeType":"VariableDeclaration","scope":17596,"src":"525:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17590,"name":"bool","nodeType":"ElementaryTypeName","src":"525:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17593,"mutability":"mutable","name":"isXNodeDelegatee","nameLocation":"557:16:38","nodeType":"VariableDeclaration","scope":17596,"src":"552:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17592,"name":"bool","nodeType":"ElementaryTypeName","src":"552:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17595,"mutability":"mutable","name":"delegatee","nameLocation":"587:9:38","nodeType":"VariableDeclaration","scope":17596,"src":"579:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17594,"name":"address","nodeType":"ElementaryTypeName","src":"579:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"NodeInfo","nameLocation":"394:8:38","nodeType":"StructDefinition","scope":17839,"src":"387:214:38","visibility":"public"},{"documentation":{"id":17597,"nodeType":"StructuredDocumentation","src":"605:76:38","text":" @notice Error indicating that the caller does not own a node."},"errorSelector":"fec8382d","id":17599,"name":"NodeManagementNonNodeHolder","nameLocation":"690:27:38","nodeType":"ErrorDefinition","parameters":{"id":17598,"nodeType":"ParameterList","parameters":[],"src":"717:2:38"},"src":"684:36:38"},{"documentation":{"id":17600,"nodeType":"StructuredDocumentation","src":"724:81:38","text":" @notice Error indicating that the node is not currently delegated."},"errorSelector":"dfdadbf3","id":17602,"name":"NodeManagementNodeNotDelegated","nameLocation":"814:30:38","nodeType":"ErrorDefinition","parameters":{"id":17601,"nodeType":"ParameterList","parameters":[],"src":"844:2:38"},"src":"808:39:38"},{"documentation":{"id":17603,"nodeType":"StructuredDocumentation","src":"851:89:38","text":" @notice Error indicating that an address is being set to the zero address."},"errorSelector":"b772cd5b","id":17605,"name":"NodeManagementZeroAddress","nameLocation":"949:25:38","nodeType":"ErrorDefinition","parameters":{"id":17604,"nodeType":"ParameterList","parameters":[],"src":"974:2:38"},"src":"943:34:38"},{"documentation":{"id":17606,"nodeType":"StructuredDocumentation","src":"981:89:38","text":" @notice Error indicating that an address is being set to the zero address."},"errorSelector":"eb6f110e","id":17608,"name":"NodeManagementSelfDelegation","nameLocation":"1079:28:38","nodeType":"ErrorDefinition","parameters":{"id":17607,"nodeType":"ParameterList","parameters":[],"src":"1107:2:38"},"src":"1073:37:38"},{"documentation":{"id":17609,"nodeType":"StructuredDocumentation","src":"1114:216:38","text":" @notice Error indicating that the node is already delegated to another user.\n @param nodeId The ID of the node that is already delegated.\n @param delegatee The address of the current delegatee."},"errorSelector":"03dcf91e","id":17615,"name":"NodeManagementNodeAlreadyDelegated","nameLocation":"1339:34:38","nodeType":"ErrorDefinition","parameters":{"id":17614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17611,"mutability":"mutable","name":"nodeId","nameLocation":"1382:6:38","nodeType":"VariableDeclaration","scope":17615,"src":"1374:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17610,"name":"uint256","nodeType":"ElementaryTypeName","src":"1374:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17613,"mutability":"mutable","name":"delegatee","nameLocation":"1398:9:38","nodeType":"VariableDeclaration","scope":17615,"src":"1390:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17612,"name":"address","nodeType":"ElementaryTypeName","src":"1390:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1373:35:38"},"src":"1333:76:38"},{"documentation":{"id":17616,"nodeType":"StructuredDocumentation","src":"1413:142:38","text":" @notice Error indicating that the user does not own the node.\n @param nodeId The ID of the node that the user does not own."},"errorSelector":"7759d448","id":17620,"name":"NodeManagementNotNodeOwner","nameLocation":"1564:26:38","nodeType":"ErrorDefinition","parameters":{"id":17619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17618,"mutability":"mutable","name":"nodeId","nameLocation":"1599:6:38","nodeType":"VariableDeclaration","scope":17620,"src":"1591:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17617,"name":"uint256","nodeType":"ElementaryTypeName","src":"1591:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1590:16:38"},"src":"1558:49:38"},{"documentation":{"id":17621,"nodeType":"StructuredDocumentation","src":"1611:148:38","text":" @notice Error indicating that the user does not manage the node.\n @param nodeId The ID of the node that the user does not manage."},"errorSelector":"677d7b01","id":17625,"name":"NodeManagementNotNodeOwnerOrManager","nameLocation":"1768:35:38","nodeType":"ErrorDefinition","parameters":{"id":17624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17623,"mutability":"mutable","name":"nodeId","nameLocation":"1812:6:38","nodeType":"VariableDeclaration","scope":17625,"src":"1804:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17622,"name":"uint256","nodeType":"ElementaryTypeName","src":"1804:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1803:16:38"},"src":"1762:58:38"},{"anonymous":false,"documentation":{"id":17626,"nodeType":"StructuredDocumentation","src":"1824:403:38","text":" @notice Event emitted when a node is delegated or the delegation is removed.\n @param nodeId The ID of the node being delegated or having its delegation removed.\n @param delegatee The address to which the node is delegated or from which the delegation is removed.\n @param delegated A boolean indicating whether the node is delegated (true) or the delegation is removed (false)."},"eventSelector":"9d779bef74377ebed4cc811ab6a0971e9f183847056487e78a11882694d53cec","id":17634,"name":"NodeDelegated","nameLocation":"2236:13:38","nodeType":"EventDefinition","parameters":{"id":17633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17628,"indexed":true,"mutability":"mutable","name":"nodeId","nameLocation":"2266:6:38","nodeType":"VariableDeclaration","scope":17634,"src":"2250:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17627,"name":"uint256","nodeType":"ElementaryTypeName","src":"2250:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17630,"indexed":true,"mutability":"mutable","name":"delegatee","nameLocation":"2290:9:38","nodeType":"VariableDeclaration","scope":17634,"src":"2274:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17629,"name":"address","nodeType":"ElementaryTypeName","src":"2274:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17632,"indexed":false,"mutability":"mutable","name":"delegated","nameLocation":"2306:9:38","nodeType":"VariableDeclaration","scope":17634,"src":"2301:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17631,"name":"bool","nodeType":"ElementaryTypeName","src":"2301:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2249:67:38"},"src":"2230:87:38"},{"anonymous":false,"documentation":{"id":17635,"nodeType":"StructuredDocumentation","src":"2321:82:38","text":"  @dev Emit when the vechain node contract address is set or updated"},"eventSelector":"74dd84f988c93e13e3e1c4bc4661d03c04b202314e983cf17537bfe04b86fdf2","id":17641,"name":"VechainNodeContractSet","nameLocation":"2412:22:38","nodeType":"EventDefinition","parameters":{"id":17640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17637,"indexed":false,"mutability":"mutable","name":"oldContractAddress","nameLocation":"2443:18:38","nodeType":"VariableDeclaration","scope":17641,"src":"2435:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17636,"name":"address","nodeType":"ElementaryTypeName","src":"2435:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17639,"indexed":false,"mutability":"mutable","name":"newContractAddress","nameLocation":"2471:18:38","nodeType":"VariableDeclaration","scope":17641,"src":"2463:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17638,"name":"address","nodeType":"ElementaryTypeName","src":"2463:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2434:56:38"},"src":"2406:85:38"},{"anonymous":false,"documentation":{"id":17642,"nodeType":"StructuredDocumentation","src":"2495:82:38","text":"  @dev Emit when the stargate NFT contract address is set or updated"},"eventSelector":"2b41eef7a45e73aa079672c7e7e24f5556631f6d0b821b1dd1d7e05470a67245","id":17648,"name":"StargateNftSet","nameLocation":"2586:14:38","nodeType":"EventDefinition","parameters":{"id":17647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17644,"indexed":false,"mutability":"mutable","name":"oldContractAddress","nameLocation":"2609:18:38","nodeType":"VariableDeclaration","scope":17648,"src":"2601:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17643,"name":"address","nodeType":"ElementaryTypeName","src":"2601:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17646,"indexed":false,"mutability":"mutable","name":"newContractAddress","nameLocation":"2637:18:38","nodeType":"VariableDeclaration","scope":17648,"src":"2629:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17645,"name":"address","nodeType":"ElementaryTypeName","src":"2629:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2600:56:38"},"src":"2580:77:38"},{"documentation":{"id":17649,"nodeType":"StructuredDocumentation","src":"2661:68:38","text":" @notice Error indicating that a node ID is not valid."},"errorSelector":"d50d8900","id":17651,"name":"NodeManagementInvalidNodeId","nameLocation":"2738:27:38","nodeType":"ErrorDefinition","parameters":{"id":17650,"nodeType":"ParameterList","parameters":[],"src":"2765:2:38"},"src":"2732:36:38"},{"documentation":{"id":17652,"nodeType":"StructuredDocumentation","src":"2772:330:38","text":" @notice Initialize the contract with the specified VeChain Nodes contract, admin, and upgrader addresses.\n @param vechainNodesContract The address of the VeChain Nodes contract.\n @param admin The address to be granted the default admin role.\n @param upgrader The address to be granted the upgrader role."},"functionSelector":"c0c53b8b","id":17661,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"3114:10:38","nodeType":"FunctionDefinition","parameters":{"id":17659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17654,"mutability":"mutable","name":"vechainNodesContract","nameLocation":"3133:20:38","nodeType":"VariableDeclaration","scope":17661,"src":"3125:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17653,"name":"address","nodeType":"ElementaryTypeName","src":"3125:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17656,"mutability":"mutable","name":"admin","nameLocation":"3163:5:38","nodeType":"VariableDeclaration","scope":17661,"src":"3155:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17655,"name":"address","nodeType":"ElementaryTypeName","src":"3155:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17658,"mutability":"mutable","name":"upgrader","nameLocation":"3178:8:38","nodeType":"VariableDeclaration","scope":17661,"src":"3170:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17657,"name":"address","nodeType":"ElementaryTypeName","src":"3170:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3124:63:38"},"returnParameters":{"id":17660,"nodeType":"ParameterList","parameters":[],"src":"3196:0:38"},"scope":17839,"src":"3105:92:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17662,"nodeType":"StructuredDocumentation","src":"3201:149:38","text":" @notice Set the address of the VeChain Nodes contract.\n @param vechainNodesContract The new address of the VeChain Nodes contract."},"functionSelector":"0df9dff8","id":17667,"implemented":false,"kind":"function","modifiers":[],"name":"setVechainNodesContract","nameLocation":"3362:23:38","nodeType":"FunctionDefinition","parameters":{"id":17665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17664,"mutability":"mutable","name":"vechainNodesContract","nameLocation":"3394:20:38","nodeType":"VariableDeclaration","scope":17667,"src":"3386:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17663,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3385:30:38"},"returnParameters":{"id":17666,"nodeType":"ParameterList","parameters":[],"src":"3424:0:38"},"scope":17839,"src":"3353:72:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17668,"nodeType":"StructuredDocumentation","src":"3429:138:38","text":" @notice Set the address of the Stargate NFT contract.\n @param stargateNft The new address of the Stargate NFT contract."},"functionSelector":"b9349c90","id":17673,"implemented":false,"kind":"function","modifiers":[],"name":"setStargateNft","nameLocation":"3579:14:38","nodeType":"FunctionDefinition","parameters":{"id":17671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17670,"mutability":"mutable","name":"stargateNft","nameLocation":"3602:11:38","nodeType":"VariableDeclaration","scope":17673,"src":"3594:19:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17669,"name":"address","nodeType":"ElementaryTypeName","src":"3594:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3593:21:38"},"returnParameters":{"id":17672,"nodeType":"ParameterList","parameters":[],"src":"3623:0:38"},"scope":17839,"src":"3570:54:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17674,"nodeType":"StructuredDocumentation","src":"3628:168:38","text":" @notice Delegate a node to another address.\n @param delegatee The address to delegate the node to.\n @param nodeId The ID of the node to delegate."},"functionSelector":"c79bb94b","id":17681,"implemented":false,"kind":"function","modifiers":[],"name":"delegateNode","nameLocation":"3808:12:38","nodeType":"FunctionDefinition","parameters":{"id":17679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17676,"mutability":"mutable","name":"delegatee","nameLocation":"3829:9:38","nodeType":"VariableDeclaration","scope":17681,"src":"3821:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17675,"name":"address","nodeType":"ElementaryTypeName","src":"3821:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17678,"mutability":"mutable","name":"nodeId","nameLocation":"3848:6:38","nodeType":"VariableDeclaration","scope":17681,"src":"3840:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17677,"name":"uint256","nodeType":"ElementaryTypeName","src":"3840:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3820:35:38"},"returnParameters":{"id":17680,"nodeType":"ParameterList","parameters":[],"src":"3864:0:38"},"scope":17839,"src":"3799:66:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17682,"nodeType":"StructuredDocumentation","src":"3869:124:38","text":" @notice Remove the delegation of a node.\n @param nodeId The ID of the node to remove the delegation from."},"functionSelector":"61302213","id":17687,"implemented":false,"kind":"function","modifiers":[],"name":"removeNodeDelegation","nameLocation":"4005:20:38","nodeType":"FunctionDefinition","parameters":{"id":17685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17684,"mutability":"mutable","name":"nodeId","nameLocation":"4034:6:38","nodeType":"VariableDeclaration","scope":17687,"src":"4026:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17683,"name":"uint256","nodeType":"ElementaryTypeName","src":"4026:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4025:16:38"},"returnParameters":{"id":17686,"nodeType":"ParameterList","parameters":[],"src":"4050:0:38"},"scope":17839,"src":"3996:55:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17688,"nodeType":"StructuredDocumentation","src":"4055:224:38","text":" @notice Retrieve the node ID associated with a user, either through direct ownership or delegation.\n @param user The address of the user to check.\n @return uint256 The node ID associated with the user."},"functionSelector":"2e4e2531","id":17696,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeIds","nameLocation":"4291:10:38","nodeType":"FunctionDefinition","parameters":{"id":17691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17690,"mutability":"mutable","name":"user","nameLocation":"4310:4:38","nodeType":"VariableDeclaration","scope":17696,"src":"4302:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17689,"name":"address","nodeType":"ElementaryTypeName","src":"4302:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4301:14:38"},"returnParameters":{"id":17695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17696,"src":"4339:16:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17692,"name":"uint256","nodeType":"ElementaryTypeName","src":"4339:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17693,"nodeType":"ArrayTypeName","src":"4339:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4338:18:38"},"scope":17839,"src":"4282:75:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17697,"nodeType":"StructuredDocumentation","src":"4361:288:38","text":" @notice Retrieves the address of the user managing the node ID endorsement either through ownership or delegation.\n @param nodeId The ID of the node for which the manager address is being retrieved.\n @return address The address of the manager of the specified node."},"functionSelector":"9e2c2f3e","id":17704,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeManager","nameLocation":"4661:14:38","nodeType":"FunctionDefinition","parameters":{"id":17700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17699,"mutability":"mutable","name":"nodeId","nameLocation":"4684:6:38","nodeType":"VariableDeclaration","scope":17704,"src":"4676:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17698,"name":"uint256","nodeType":"ElementaryTypeName","src":"4676:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4675:16:38"},"returnParameters":{"id":17703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17704,"src":"4715:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17701,"name":"address","nodeType":"ElementaryTypeName","src":"4715:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4714:9:38"},"scope":17839,"src":"4652:72:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17705,"nodeType":"StructuredDocumentation","src":"4728:228:38","text":" @notice Retrieves the address of the true owner of a node.\n @param nodeId The ID of the node for which the owner address is being retrieved.\n @return address The address of the owner of the specified node."},"functionSelector":"5d3c373f","id":17712,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeOwner","nameLocation":"4968:12:38","nodeType":"FunctionDefinition","parameters":{"id":17708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17707,"mutability":"mutable","name":"nodeId","nameLocation":"4989:6:38","nodeType":"VariableDeclaration","scope":17712,"src":"4981:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17706,"name":"uint256","nodeType":"ElementaryTypeName","src":"4981:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4980:16:38"},"returnParameters":{"id":17711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17712,"src":"5020:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17709,"name":"address","nodeType":"ElementaryTypeName","src":"5020:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5019:9:38"},"scope":17839,"src":"4959:70:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17713,"nodeType":"StructuredDocumentation","src":"5033:176:38","text":" @notice Retrieves the node IDs delegated to a user.\n @param user The address of the user to check.\n @return uint256[] The node IDs delegated to the user."},"functionSelector":"766b2a60","id":17721,"implemented":false,"kind":"function","modifiers":[],"name":"getNodesDelegatedTo","nameLocation":"5221:19:38","nodeType":"FunctionDefinition","parameters":{"id":17716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17715,"mutability":"mutable","name":"user","nameLocation":"5249:4:38","nodeType":"VariableDeclaration","scope":17721,"src":"5241:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17714,"name":"address","nodeType":"ElementaryTypeName","src":"5241:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5240:14:38"},"returnParameters":{"id":17720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17721,"src":"5278:16:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17717,"name":"uint256","nodeType":"ElementaryTypeName","src":"5278:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17718,"nodeType":"ArrayTypeName","src":"5278:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5277:18:38"},"scope":17839,"src":"5212:84:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17722,"nodeType":"StructuredDocumentation","src":"5300:285:38","text":" @notice Check if a user is holding a specific node ID either directly or through delegation.\n @param user The address of the user to check.\n @param nodeId The node ID to check for.\n @return bool True if the user is holding the node ID and it is a valid node."},"functionSelector":"3258cc2f","id":17731,"implemented":false,"kind":"function","modifiers":[],"name":"isNodeManager","nameLocation":"5597:13:38","nodeType":"FunctionDefinition","parameters":{"id":17727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17724,"mutability":"mutable","name":"user","nameLocation":"5619:4:38","nodeType":"VariableDeclaration","scope":17731,"src":"5611:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17723,"name":"address","nodeType":"ElementaryTypeName","src":"5611:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17726,"mutability":"mutable","name":"nodeId","nameLocation":"5633:6:38","nodeType":"VariableDeclaration","scope":17731,"src":"5625:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17725,"name":"uint256","nodeType":"ElementaryTypeName","src":"5625:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5610:30:38"},"returnParameters":{"id":17730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17731,"src":"5664:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17728,"name":"bool","nodeType":"ElementaryTypeName","src":"5664:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5663:6:38"},"scope":17839,"src":"5588:82:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17732,"nodeType":"StructuredDocumentation","src":"5674:146:38","text":" @notice Check if a node is delegated.\n @param nodeId The node ID to check for.\n @return bool True if the node is delegated."},"functionSelector":"53fff87c","id":17739,"implemented":false,"kind":"function","modifiers":[],"name":"isNodeDelegated","nameLocation":"5832:15:38","nodeType":"FunctionDefinition","parameters":{"id":17735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17734,"mutability":"mutable","name":"nodeId","nameLocation":"5856:6:38","nodeType":"VariableDeclaration","scope":17739,"src":"5848:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17733,"name":"uint256","nodeType":"ElementaryTypeName","src":"5848:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5847:16:38"},"returnParameters":{"id":17738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17739,"src":"5887:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17736,"name":"bool","nodeType":"ElementaryTypeName","src":"5887:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5886:6:38"},"scope":17839,"src":"5823:70:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17740,"nodeType":"StructuredDocumentation","src":"5897:156:38","text":" @notice Check if a user is a delegator.\n @param user The address of the user to check.\n @return bool True if the user is a delegator."},"functionSelector":"4f444d25","id":17747,"implemented":false,"kind":"function","modifiers":[],"name":"isNodeDelegator","nameLocation":"6065:15:38","nodeType":"FunctionDefinition","parameters":{"id":17743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17742,"mutability":"mutable","name":"user","nameLocation":"6089:4:38","nodeType":"VariableDeclaration","scope":17747,"src":"6081:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17741,"name":"address","nodeType":"ElementaryTypeName","src":"6081:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6080:14:38"},"returnParameters":{"id":17746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17745,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17747,"src":"6118:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17744,"name":"bool","nodeType":"ElementaryTypeName","src":"6118:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6117:6:38"},"scope":17839,"src":"6056:68:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17748,"nodeType":"StructuredDocumentation","src":"6128:200:38","text":" @notice Check if a user is a node holder (either directly or through delegation).\n @param user The address of the user to check.\n @return bool True if the user is a node holder."},"functionSelector":"beba8408","id":17755,"implemented":false,"kind":"function","modifiers":[],"name":"isNodeHolder","nameLocation":"6340:12:38","nodeType":"FunctionDefinition","parameters":{"id":17751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17750,"mutability":"mutable","name":"user","nameLocation":"6361:4:38","nodeType":"VariableDeclaration","scope":17755,"src":"6353:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17749,"name":"address","nodeType":"ElementaryTypeName","src":"6353:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6352:14:38"},"returnParameters":{"id":17754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17755,"src":"6390:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17752,"name":"bool","nodeType":"ElementaryTypeName","src":"6390:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6389:6:38"},"scope":17839,"src":"6331:65:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17756,"nodeType":"StructuredDocumentation","src":"6400:186:38","text":" @notice Check if a user directly owns a node (not delegated).\n @param user The address of the user to check.\n @return uint256 The ID of the owned node (0 if none)."},"functionSelector":"97a4f3c4","id":17763,"implemented":false,"kind":"function","modifiers":[],"name":"getDirectNodeOwnership","nameLocation":"6598:22:38","nodeType":"FunctionDefinition","parameters":{"id":17759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17758,"mutability":"mutable","name":"user","nameLocation":"6629:4:38","nodeType":"VariableDeclaration","scope":17763,"src":"6621:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17757,"name":"address","nodeType":"ElementaryTypeName","src":"6621:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6620:14:38"},"returnParameters":{"id":17762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17763,"src":"6658:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17760,"name":"uint256","nodeType":"ElementaryTypeName","src":"6658:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6657:9:38"},"scope":17839,"src":"6589:78:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17764,"nodeType":"StructuredDocumentation","src":"6671:237:38","text":" @notice Retrieves the node IDs directly owned by a user.\n @param user The address of the user to check.\n @return uint256[] The node IDs directly owned by the user. If no nodes are owned, an empty array is returned."},"functionSelector":"0470bfcc","id":17772,"implemented":false,"kind":"function","modifiers":[],"name":"getDirectNodesOwnership","nameLocation":"6920:23:38","nodeType":"FunctionDefinition","parameters":{"id":17767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17766,"mutability":"mutable","name":"user","nameLocation":"6952:4:38","nodeType":"VariableDeclaration","scope":17772,"src":"6944:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17765,"name":"address","nodeType":"ElementaryTypeName","src":"6944:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6943:14:38"},"returnParameters":{"id":17771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17772,"src":"6981:16:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17768,"name":"uint256","nodeType":"ElementaryTypeName","src":"6981:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17769,"nodeType":"ArrayTypeName","src":"6981:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6980:18:38"},"scope":17839,"src":"6911:88:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17773,"nodeType":"StructuredDocumentation","src":"7003:254:38","text":" @notice Checks if a user is the direct owner of a node.\n @param user The address of the user to check.\n @param nodeId The ID of the node to check.\n @return bool True if the user is the direct owner of the node, false otherwise."},"functionSelector":"3b276ecc","id":17782,"implemented":false,"kind":"function","modifiers":[],"name":"isDirectNodeOwner","nameLocation":"7269:17:38","nodeType":"FunctionDefinition","parameters":{"id":17778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17775,"mutability":"mutable","name":"user","nameLocation":"7295:4:38","nodeType":"VariableDeclaration","scope":17782,"src":"7287:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17774,"name":"address","nodeType":"ElementaryTypeName","src":"7287:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17777,"mutability":"mutable","name":"nodeId","nameLocation":"7309:6:38","nodeType":"VariableDeclaration","scope":17782,"src":"7301:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17776,"name":"uint256","nodeType":"ElementaryTypeName","src":"7301:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7286:30:38"},"returnParameters":{"id":17781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17782,"src":"7340:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17779,"name":"bool","nodeType":"ElementaryTypeName","src":"7340:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7339:6:38"},"scope":17839,"src":"7260:86:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17783,"nodeType":"StructuredDocumentation","src":"7350:185:38","text":" @notice Retrieves the node level of a given node ID.\n @param nodeId The token ID of the endorsing node.\n @return levelId The node level of the specified token ID."},"functionSelector":"1ceae42f","id":17790,"implemented":false,"kind":"function","modifiers":[],"name":"getNodeLevel","nameLocation":"7547:12:38","nodeType":"FunctionDefinition","parameters":{"id":17786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17785,"mutability":"mutable","name":"nodeId","nameLocation":"7568:6:38","nodeType":"VariableDeclaration","scope":17790,"src":"7560:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17784,"name":"uint256","nodeType":"ElementaryTypeName","src":"7560:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7559:16:38"},"returnParameters":{"id":17789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17788,"mutability":"mutable","name":"levelId","nameLocation":"7605:7:38","nodeType":"VariableDeclaration","scope":17790,"src":"7599:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17787,"name":"uint8","nodeType":"ElementaryTypeName","src":"7599:5:38","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"7598:15:38"},"scope":17839,"src":"7538:76:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17791,"nodeType":"StructuredDocumentation","src":"7618:202:38","text":" @notice Retrieves the node level of a user's managed node.\n @param user The address of the user managing the node.\n @return uint8[] The node level of the node managed by the user."},"functionSelector":"d466d80b","id":17799,"implemented":false,"kind":"function","modifiers":[],"name":"getUsersNodeLevels","nameLocation":"7832:18:38","nodeType":"FunctionDefinition","parameters":{"id":17794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17793,"mutability":"mutable","name":"user","nameLocation":"7859:4:38","nodeType":"VariableDeclaration","scope":17799,"src":"7851:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17792,"name":"address","nodeType":"ElementaryTypeName","src":"7851:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7850:14:38"},"returnParameters":{"id":17798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17799,"src":"7888:14:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17795,"name":"uint8","nodeType":"ElementaryTypeName","src":"7888:5:38","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17796,"nodeType":"ArrayTypeName","src":"7888:7:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"7887:16:38"},"scope":17839,"src":"7823:81:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17800,"nodeType":"StructuredDocumentation","src":"7908:175:38","text":" @notice Checks if a node is a legacy node.\n @param nodeId The ID of the node to check.\n @return bool True if the node is a legacy node, false otherwise."},"functionSelector":"b721e8e0","id":17807,"implemented":false,"kind":"function","modifiers":[],"name":"isLegacyNode","nameLocation":"8095:12:38","nodeType":"FunctionDefinition","parameters":{"id":17803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17802,"mutability":"mutable","name":"nodeId","nameLocation":"8116:6:38","nodeType":"VariableDeclaration","scope":17807,"src":"8108:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17801,"name":"uint256","nodeType":"ElementaryTypeName","src":"8108:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8107:16:38"},"returnParameters":{"id":17806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17805,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17807,"src":"8147:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17804,"name":"bool","nodeType":"ElementaryTypeName","src":"8147:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8146:6:38"},"scope":17839,"src":"8086:67:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17808,"nodeType":"StructuredDocumentation","src":"8157:258:38","text":" @notice Check if a node exists in the VeChainNodes contract or the StargateNFT contract\n @param nodeId The ID of the node to check.\n @return bool True if the node exists, false otherwise.\n @return NodeSource The source of the node."},"functionSelector":"4f558e79","id":17818,"implemented":false,"kind":"function","modifiers":[],"name":"exists","nameLocation":"8427:6:38","nodeType":"FunctionDefinition","parameters":{"id":17811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17810,"mutability":"mutable","name":"nodeId","nameLocation":"8442:6:38","nodeType":"VariableDeclaration","scope":17818,"src":"8434:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17809,"name":"uint256","nodeType":"ElementaryTypeName","src":"8434:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8433:16:38"},"returnParameters":{"id":17817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17813,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17818,"src":"8473:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17812,"name":"bool","nodeType":"ElementaryTypeName","src":"8473:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17818,"src":"8479:32:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_NodeSource_$17402","typeString":"enum VechainNodesDataTypes.NodeSource"},"typeName":{"id":17815,"nodeType":"UserDefinedTypeName","pathNode":{"id":17814,"name":"VechainNodesDataTypes.NodeSource","nameLocations":["8479:21:38","8501:10:38"],"nodeType":"IdentifierPath","referencedDeclaration":17402,"src":"8479:32:38"},"referencedDeclaration":17402,"src":"8479:32:38","typeDescriptions":{"typeIdentifier":"t_enum$_NodeSource_$17402","typeString":"enum VechainNodesDataTypes.NodeSource"}},"visibility":"internal"}],"src":"8472:40:38"},"scope":17839,"src":"8418:95:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17819,"nodeType":"StructuredDocumentation","src":"8517:168:38","text":" @notice Retrieves the node IDs owned by a user.\n @param user The address of the user to check.\n @return uint256[] The node IDs owned by the user."},"functionSelector":"2130fe23","id":17828,"implemented":false,"kind":"function","modifiers":[],"name":"getUserNodes","nameLocation":"8697:12:38","nodeType":"FunctionDefinition","parameters":{"id":17822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17821,"mutability":"mutable","name":"user","nameLocation":"8718:4:38","nodeType":"VariableDeclaration","scope":17828,"src":"8710:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17820,"name":"address","nodeType":"ElementaryTypeName","src":"8710:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8709:14:38"},"returnParameters":{"id":17827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17828,"src":"8747:17:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_NodeInfo_$17596_memory_ptr_$dyn_memory_ptr","typeString":"struct INodeManagementV3.NodeInfo[]"},"typeName":{"baseType":{"id":17824,"nodeType":"UserDefinedTypeName","pathNode":{"id":17823,"name":"NodeInfo","nameLocations":["8747:8:38"],"nodeType":"IdentifierPath","referencedDeclaration":17596,"src":"8747:8:38"},"referencedDeclaration":17596,"src":"8747:8:38","typeDescriptions":{"typeIdentifier":"t_struct$_NodeInfo_$17596_storage_ptr","typeString":"struct INodeManagementV3.NodeInfo"}},"id":17825,"nodeType":"ArrayTypeName","src":"8747:10:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_NodeInfo_$17596_storage_$dyn_storage_ptr","typeString":"struct INodeManagementV3.NodeInfo[]"}},"visibility":"internal"}],"src":"8746:19:38"},"scope":17839,"src":"8688:78:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":17829,"nodeType":"StructuredDocumentation","src":"8770:168:38","text":" @notice Retrieves the node IDs owned by a user.\n @param user The address of the user to check.\n @return uint256[] The node IDs owned by the user."},"functionSelector":"a7c928cc","id":17838,"implemented":false,"kind":"function","modifiers":[],"name":"getUserStargateNFTsInfo","nameLocation":"8950:23:38","nodeType":"FunctionDefinition","parameters":{"id":17832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17831,"mutability":"mutable","name":"user","nameLocation":"8982:4:38","nodeType":"VariableDeclaration","scope":17838,"src":"8974:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17830,"name":"address","nodeType":"ElementaryTypeName","src":"8974:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8973:14:38"},"returnParameters":{"id":17837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17836,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17838,"src":"9011:24:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr","typeString":"struct DataTypes.Token[]"},"typeName":{"baseType":{"id":17834,"nodeType":"UserDefinedTypeName","pathNode":{"id":17833,"name":"DataTypes.Token","nameLocations":["9011:9:38","9021:5:38"],"nodeType":"IdentifierPath","referencedDeclaration":17547,"src":"9011:15:38"},"referencedDeclaration":17547,"src":"9011:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_Token_$17547_storage_ptr","typeString":"struct DataTypes.Token"}},"id":17835,"nodeType":"ArrayTypeName","src":"9011:17:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_storage_$dyn_storage_ptr","typeString":"struct DataTypes.Token[]"}},"visibility":"internal"}],"src":"9010:26:38"},"scope":17839,"src":"8941:96:38","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":17840,"src":"228:8811:38","usedErrors":[17599,17602,17605,17608,17615,17620,17625,17651],"usedEvents":[17634,17641,17648]}],"src":"33:9007:38"},"id":38},"contracts/mocks/Stargate/interfaces/IStargate.sol":{"ast":{"absolutePath":"contracts/mocks/Stargate/interfaces/IStargate.sol","exportedSymbols":{"IStargate":[18153]},"id":18154,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":17841,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:39"},{"abstract":false,"baseContracts":[],"canonicalName":"IStargate","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":18153,"linearizedBaseContracts":[18153],"name":"IStargate","nameLocation":"67:9:39","nodeType":"ContractDefinition","nodes":[{"errorSelector":"ea93ab6d","id":17845,"name":"UnauthorizedUser","nameLocation":"131:16:39","nodeType":"ErrorDefinition","parameters":{"id":17844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17843,"mutability":"mutable","name":"user","nameLocation":"156:4:39","nodeType":"VariableDeclaration","scope":17845,"src":"148:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17842,"name":"address","nodeType":"ElementaryTypeName","src":"148:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"147:14:39"},"src":"125:37:39"},{"errorSelector":"6f7a29e2","id":17847,"name":"DelegationExitAlreadyRequested","nameLocation":"173:30:39","nodeType":"ErrorDefinition","parameters":{"id":17846,"nodeType":"ParameterList","parameters":[],"src":"203:2:39"},"src":"167:39:39"},{"errorSelector":"d5a996d1","id":17854,"name":"InvalidDelegationStatus","nameLocation":"217:23:39","nodeType":"ErrorDefinition","parameters":{"id":17853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17849,"mutability":"mutable","name":"tokenId","nameLocation":"249:7:39","nodeType":"VariableDeclaration","scope":17854,"src":"241:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17848,"name":"uint256","nodeType":"ElementaryTypeName","src":"241:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17852,"mutability":"mutable","name":"status","nameLocation":"275:6:39","nodeType":"VariableDeclaration","scope":17854,"src":"258:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_DelegationStatus_$17980","typeString":"enum IStargate.DelegationStatus"},"typeName":{"id":17851,"nodeType":"UserDefinedTypeName","pathNode":{"id":17850,"name":"DelegationStatus","nameLocations":["258:16:39"],"nodeType":"IdentifierPath","referencedDeclaration":17980,"src":"258:16:39"},"referencedDeclaration":17980,"src":"258:16:39","typeDescriptions":{"typeIdentifier":"t_enum$_DelegationStatus_$17980","typeString":"enum IStargate.DelegationStatus"}},"visibility":"internal"}],"src":"240:42:39"},"src":"211:72:39"},{"errorSelector":"58a04cf8","id":17858,"name":"DelegationNotFound","nameLocation":"294:18:39","nodeType":"ErrorDefinition","parameters":{"id":17857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17856,"mutability":"mutable","name":"tokenId","nameLocation":"321:7:39","nodeType":"VariableDeclaration","scope":17858,"src":"313:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17855,"name":"uint256","nodeType":"ElementaryTypeName","src":"313:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"312:17:39"},"src":"288:42:39"},{"errorSelector":"4b0c8742","id":17862,"name":"TokenUnderMaturityPeriod","nameLocation":"341:24:39","nodeType":"ErrorDefinition","parameters":{"id":17861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17860,"mutability":"mutable","name":"tokenId","nameLocation":"374:7:39","nodeType":"VariableDeclaration","scope":17862,"src":"366:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17859,"name":"uint256","nodeType":"ElementaryTypeName","src":"366:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"365:17:39"},"src":"335:48:39"},{"errorSelector":"925d6b18","id":17866,"name":"InvalidToken","nameLocation":"394:12:39","nodeType":"ErrorDefinition","parameters":{"id":17865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17864,"mutability":"mutable","name":"tokenId","nameLocation":"415:7:39","nodeType":"VariableDeclaration","scope":17866,"src":"407:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17863,"name":"uint256","nodeType":"ElementaryTypeName","src":"407:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"406:17:39"},"src":"388:36:39"},{"errorSelector":"2b46d4d2","id":17870,"name":"ValidatorNotActiveOrQueued","nameLocation":"435:26:39","nodeType":"ErrorDefinition","parameters":{"id":17869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17868,"mutability":"mutable","name":"validator","nameLocation":"470:9:39","nodeType":"VariableDeclaration","scope":17870,"src":"462:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17867,"name":"address","nodeType":"ElementaryTypeName","src":"462:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"461:19:39"},"src":"429:52:39"},{"errorSelector":"31bbcc6f","id":17874,"name":"TokenAlreadyDelegated","nameLocation":"492:21:39","nodeType":"ErrorDefinition","parameters":{"id":17873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17872,"mutability":"mutable","name":"tokenId","nameLocation":"522:7:39","nodeType":"VariableDeclaration","scope":17874,"src":"514:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17871,"name":"uint256","nodeType":"ElementaryTypeName","src":"514:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"513:17:39"},"src":"486:45:39"},{"errorSelector":"80c6edb1","id":17876,"name":"OnlyStargateNFTAndProtocolStaker","nameLocation":"542:32:39","nodeType":"ErrorDefinition","parameters":{"id":17875,"nodeType":"ParameterList","parameters":[],"src":"574:2:39"},"src":"536:41:39"},{"errorSelector":"7676b397","id":17878,"name":"InvalidInitializationParams","nameLocation":"588:27:39","nodeType":"ErrorDefinition","parameters":{"id":17877,"nodeType":"ParameterList","parameters":[],"src":"615:2:39"},"src":"582:36:39"},{"errorSelector":"6b78e9ed","id":17886,"name":"VetAmountMismatch","nameLocation":"629:17:39","nodeType":"ErrorDefinition","parameters":{"id":17885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17880,"mutability":"mutable","name":"levelId","nameLocation":"653:7:39","nodeType":"VariableDeclaration","scope":17886,"src":"647:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17879,"name":"uint8","nodeType":"ElementaryTypeName","src":"647:5:39","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17882,"mutability":"mutable","name":"required","nameLocation":"670:8:39","nodeType":"VariableDeclaration","scope":17886,"src":"662:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17881,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17884,"mutability":"mutable","name":"provided","nameLocation":"688:8:39","nodeType":"VariableDeclaration","scope":17886,"src":"680:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17883,"name":"uint256","nodeType":"ElementaryTypeName","src":"680:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"646:51:39"},"src":"623:75:39"},{"errorSelector":"ed59364e","id":17892,"name":"VetTransferFailed","nameLocation":"709:17:39","nodeType":"ErrorDefinition","parameters":{"id":17891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17888,"mutability":"mutable","name":"receiver","nameLocation":"735:8:39","nodeType":"VariableDeclaration","scope":17892,"src":"727:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17887,"name":"address","nodeType":"ElementaryTypeName","src":"727:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17890,"mutability":"mutable","name":"amount","nameLocation":"753:6:39","nodeType":"VariableDeclaration","scope":17892,"src":"745:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17889,"name":"uint256","nodeType":"ElementaryTypeName","src":"745:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"726:34:39"},"src":"703:58:39"},{"errorSelector":"b7ddd88b","id":17898,"name":"InsufficientContractBalance","nameLocation":"772:27:39","nodeType":"ErrorDefinition","parameters":{"id":17897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17894,"mutability":"mutable","name":"contractBalance","nameLocation":"808:15:39","nodeType":"VariableDeclaration","scope":17898,"src":"800:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17893,"name":"uint256","nodeType":"ElementaryTypeName","src":"800:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17896,"mutability":"mutable","name":"tokenAmount","nameLocation":"833:11:39","nodeType":"VariableDeclaration","scope":17898,"src":"825:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17895,"name":"uint256","nodeType":"ElementaryTypeName","src":"825:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"799:46:39"},"src":"766:80:39"},{"errorSelector":"462cd83f","id":17900,"name":"MaxClaimablePeriodsExceeded","nameLocation":"857:27:39","nodeType":"ErrorDefinition","parameters":{"id":17899,"nodeType":"ParameterList","parameters":[],"src":"884:2:39"},"src":"851:36:39"},{"errorSelector":"874e74df","id":17902,"name":"InvalidMaxClaimablePeriods","nameLocation":"898:26:39","nodeType":"ErrorDefinition","parameters":{"id":17901,"nodeType":"ParameterList","parameters":[],"src":"924:2:39"},"src":"892:35:39"},{"anonymous":false,"documentation":{"id":17903,"nodeType":"StructuredDocumentation","src":"975:407:39","text":"@notice Emitted when a delegation is initiated\n @param tokenId The ID of the token that was delegated\n @param validator The validator that was delegated to\n @param delegationId The ID of the delegation\n @param amount The amount of VET delegated\n @param levelId The level ID of the token\n @param probabilityMultiplier The probability multiplier of the delegation"},"eventSelector":"a0286778706a77850b9dd59b02210d97bb93f749fdde710fa08088f5a6bb9626","id":17917,"name":"DelegationInitiated","nameLocation":"1393:19:39","nodeType":"EventDefinition","parameters":{"id":17916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17905,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"1438:7:39","nodeType":"VariableDeclaration","scope":17917,"src":"1422:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17904,"name":"uint256","nodeType":"ElementaryTypeName","src":"1422:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17907,"indexed":true,"mutability":"mutable","name":"validator","nameLocation":"1471:9:39","nodeType":"VariableDeclaration","scope":17917,"src":"1455:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17906,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17909,"indexed":true,"mutability":"mutable","name":"delegationId","nameLocation":"1506:12:39","nodeType":"VariableDeclaration","scope":17917,"src":"1490:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17908,"name":"uint256","nodeType":"ElementaryTypeName","src":"1490:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17911,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1536:6:39","nodeType":"VariableDeclaration","scope":17917,"src":"1528:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17910,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17913,"indexed":false,"mutability":"mutable","name":"levelId","nameLocation":"1558:7:39","nodeType":"VariableDeclaration","scope":17917,"src":"1552:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17912,"name":"uint8","nodeType":"ElementaryTypeName","src":"1552:5:39","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17915,"indexed":false,"mutability":"mutable","name":"probabilityMultiplier","nameLocation":"1581:21:39","nodeType":"VariableDeclaration","scope":17917,"src":"1575:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17914,"name":"uint8","nodeType":"ElementaryTypeName","src":"1575:5:39","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1412:196:39"},"src":"1387:222:39"},{"anonymous":false,"documentation":{"id":17918,"nodeType":"StructuredDocumentation","src":"1615:474:39","text":"@notice Emitted when a delegation exit is requested\n @dev When the delegation is pending, exit is immediate and this event is emitted\n @param tokenId The ID of the token that was delegated\n @param validator The validator that was delegated to\n @param delegationId The ID of the delegation\n @param exitBlock The block at which the delegation exit will be processed,\n in case the delegation is pending it will be the current block"},"eventSelector":"12f4dc5b5d4c737ec034e6ccc4dc7dfd5a8e64278712100d7fab8bb99c850a2e","id":17928,"name":"DelegationExitRequested","nameLocation":"2100:23:39","nodeType":"EventDefinition","parameters":{"id":17927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17920,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"2149:7:39","nodeType":"VariableDeclaration","scope":17928,"src":"2133:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17919,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17922,"indexed":true,"mutability":"mutable","name":"validator","nameLocation":"2182:9:39","nodeType":"VariableDeclaration","scope":17928,"src":"2166:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17921,"name":"address","nodeType":"ElementaryTypeName","src":"2166:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17924,"indexed":true,"mutability":"mutable","name":"delegationId","nameLocation":"2217:12:39","nodeType":"VariableDeclaration","scope":17928,"src":"2201:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17923,"name":"uint256","nodeType":"ElementaryTypeName","src":"2201:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17926,"indexed":false,"mutability":"mutable","name":"exitBlock","nameLocation":"2246:9:39","nodeType":"VariableDeclaration","scope":17928,"src":"2239:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":17925,"name":"uint48","nodeType":"ElementaryTypeName","src":"2239:6:39","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2123:138:39"},"src":"2094:168:39"},{"anonymous":false,"documentation":{"id":17929,"nodeType":"StructuredDocumentation","src":"2268:574:39","text":"@notice Emitted when a delegation is withdrawn\n @dev This is emitted when the delegation is withdrawn, either because the user requested to exit\n or because the delegation is called with a new validator or if requestDelegationExit is called\n the delegation is still pending.\n @param tokenId The ID of the token that was delegated\n @param validator The validator that was delegated to\n @param delegationId The ID of the delegation\n @param amount The amount of VET withdrawn\n @param levelId The level ID of the token"},"eventSelector":"52cf95d4800dbd9d79fecf9c78327e2f578c08091413b6d49037953c7a06fa35","id":17941,"name":"DelegationWithdrawn","nameLocation":"2853:19:39","nodeType":"EventDefinition","parameters":{"id":17940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17931,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"2898:7:39","nodeType":"VariableDeclaration","scope":17941,"src":"2882:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17930,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17933,"indexed":true,"mutability":"mutable","name":"validator","nameLocation":"2931:9:39","nodeType":"VariableDeclaration","scope":17941,"src":"2915:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17932,"name":"address","nodeType":"ElementaryTypeName","src":"2915:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17935,"indexed":true,"mutability":"mutable","name":"delegationId","nameLocation":"2966:12:39","nodeType":"VariableDeclaration","scope":17941,"src":"2950:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17934,"name":"uint256","nodeType":"ElementaryTypeName","src":"2950:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17937,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2996:6:39","nodeType":"VariableDeclaration","scope":17941,"src":"2988:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17936,"name":"uint256","nodeType":"ElementaryTypeName","src":"2988:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17939,"indexed":false,"mutability":"mutable","name":"levelId","nameLocation":"3018:7:39","nodeType":"VariableDeclaration","scope":17941,"src":"3012:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17938,"name":"uint8","nodeType":"ElementaryTypeName","src":"3012:5:39","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2872:159:39"},"src":"2847:185:39"},{"anonymous":false,"documentation":{"id":17942,"nodeType":"StructuredDocumentation","src":"3038:471:39","text":"@notice Emitted when rewards are claimed\n @param receiver The address that claimed the rewards\n @param tokenId The ID of the token that claimed the rewards\n @param delegationId The ID of the delegation that claimed the rewards\n @param amount The amount of rewards claimed\n @param firstClaimedPeriod The first period that the rewards were claimed for\n @param lastClaimedPeriod The last period that the rewards were claimed for"},"eventSelector":"f4cde2b5a31835b3dac5ba586238b7160063a46803ccbf2322db0933efe694ed","id":17956,"name":"DelegationRewardsClaimed","nameLocation":"3520:24:39","nodeType":"EventDefinition","parameters":{"id":17955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17944,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"3570:8:39","nodeType":"VariableDeclaration","scope":17956,"src":"3554:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17943,"name":"address","nodeType":"ElementaryTypeName","src":"3554:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17946,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3604:7:39","nodeType":"VariableDeclaration","scope":17956,"src":"3588:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17945,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17948,"indexed":true,"mutability":"mutable","name":"delegationId","nameLocation":"3637:12:39","nodeType":"VariableDeclaration","scope":17956,"src":"3621:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17947,"name":"uint256","nodeType":"ElementaryTypeName","src":"3621:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17950,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3667:6:39","nodeType":"VariableDeclaration","scope":17956,"src":"3659:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17949,"name":"uint256","nodeType":"ElementaryTypeName","src":"3659:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17952,"indexed":false,"mutability":"mutable","name":"firstClaimedPeriod","nameLocation":"3690:18:39","nodeType":"VariableDeclaration","scope":17956,"src":"3683:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17951,"name":"uint32","nodeType":"ElementaryTypeName","src":"3683:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":17954,"indexed":false,"mutability":"mutable","name":"lastClaimedPeriod","nameLocation":"3725:17:39","nodeType":"VariableDeclaration","scope":17956,"src":"3718:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17953,"name":"uint32","nodeType":"ElementaryTypeName","src":"3718:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"3544:204:39"},"src":"3514:235:39"},{"canonicalName":"IStargate.Delegation","id":17974,"members":[{"constant":false,"id":17958,"mutability":"mutable","name":"delegationId","nameLocation":"3837:12:39","nodeType":"VariableDeclaration","scope":17974,"src":"3829:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17957,"name":"uint256","nodeType":"ElementaryTypeName","src":"3829:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17960,"mutability":"mutable","name":"validator","nameLocation":"3945:9:39","nodeType":"VariableDeclaration","scope":17974,"src":"3937:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17959,"name":"address","nodeType":"ElementaryTypeName","src":"3937:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17962,"mutability":"mutable","name":"stake","nameLocation":"3997:5:39","nodeType":"VariableDeclaration","scope":17974,"src":"3989:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17961,"name":"uint256","nodeType":"ElementaryTypeName","src":"3989:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17964,"mutability":"mutable","name":"probabilityMultiplier","nameLocation":"4109:21:39","nodeType":"VariableDeclaration","scope":17974,"src":"4103:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17963,"name":"uint8","nodeType":"ElementaryTypeName","src":"4103:5:39","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17966,"mutability":"mutable","name":"startPeriod","nameLocation":"4264:11:39","nodeType":"VariableDeclaration","scope":17974,"src":"4257:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17965,"name":"uint32","nodeType":"ElementaryTypeName","src":"4257:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":17968,"mutability":"mutable","name":"endPeriod","nameLocation":"4340:9:39","nodeType":"VariableDeclaration","scope":17974,"src":"4333:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":17967,"name":"uint32","nodeType":"ElementaryTypeName","src":"4333:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":17970,"mutability":"mutable","name":"isLocked","nameLocation":"4444:8:39","nodeType":"VariableDeclaration","scope":17974,"src":"4439:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17969,"name":"bool","nodeType":"ElementaryTypeName","src":"4439:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17973,"mutability":"mutable","name":"status","nameLocation":"4601:6:39","nodeType":"VariableDeclaration","scope":17974,"src":"4584:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_DelegationStatus_$17980","typeString":"enum IStargate.DelegationStatus"},"typeName":{"id":17972,"nodeType":"UserDefinedTypeName","pathNode":{"id":17971,"name":"DelegationStatus","nameLocations":["4584:16:39"],"nodeType":"IdentifierPath","referencedDeclaration":17980,"src":"4584:16:39"},"referencedDeclaration":17980,"src":"4584:16:39","typeDescriptions":{"typeIdentifier":"t_enum$_DelegationStatus_$17980","typeString":"enum IStargate.DelegationStatus"}},"visibility":"internal"}],"name":"Delegation","nameLocation":"3808:10:39","nodeType":"StructDefinition","scope":18153,"src":"3801:813:39","visibility":"public"},{"canonicalName":"IStargate.DelegationStatus","documentation":{"id":17975,"nodeType":"StructuredDocumentation","src":"4620:610:39","text":"@notice The status of a delegation returned by the StargateStaker contract\n @dev NONE: the delegation id is not valid, or user never delegated\n @dev PENDING: the user has selected a validator and staked the VET, but is waiting for the next period to start or for the validator to be become active\n @dev ACTIVE: the user is accumulating rewards; if the user requests to exit the delegation the status remains ACTIVE\n @dev EXITED: the user has exited the delegation or the validator exited and forced the user to exit or the user exited a pending delegation and the stake is now 0"},"id":17980,"members":[{"id":17976,"name":"NONE","nameLocation":"5267:4:39","nodeType":"EnumValue","src":"5267:4:39"},{"id":17977,"name":"PENDING","nameLocation":"5281:7:39","nodeType":"EnumValue","src":"5281:7:39"},{"id":17978,"name":"ACTIVE","nameLocation":"5298:6:39","nodeType":"EnumValue","src":"5298:6:39"},{"id":17979,"name":"EXITED","nameLocation":"5314:6:39","nodeType":"EnumValue","src":"5314:6:39"}],"name":"DelegationStatus","nameLocation":"5240:16:39","nodeType":"EnumDefinition","src":"5235:91:39"},{"documentation":{"id":17981,"nodeType":"StructuredDocumentation","src":"5376:162:39","text":"@notice Pauses the StargateNFT contract\n @dev Only the DEFAULT_ADMIN_ROLE can call this function\n @dev Pausing the contract will prevent minting"},"functionSelector":"8456cb59","id":17984,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"5552:5:39","nodeType":"FunctionDefinition","parameters":{"id":17982,"nodeType":"ParameterList","parameters":[],"src":"5557:2:39"},"returnParameters":{"id":17983,"nodeType":"ParameterList","parameters":[],"src":"5568:0:39"},"scope":18153,"src":"5543:26:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17985,"nodeType":"StructuredDocumentation","src":"5575:109:39","text":"@notice Unpauses the StargateNFT contract\n @dev Only the DEFAULT_ADMIN_ROLE can call this function"},"functionSelector":"3f4ba83a","id":17988,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"5698:7:39","nodeType":"FunctionDefinition","parameters":{"id":17986,"nodeType":"ParameterList","parameters":[],"src":"5705:2:39"},"returnParameters":{"id":17987,"nodeType":"ParameterList","parameters":[],"src":"5716:0:39"},"scope":18153,"src":"5689:28:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17989,"nodeType":"StructuredDocumentation","src":"5766:164:39","text":"@notice Stakes VET and mints an NFT\n @param _levelId The ID of the token level to mint, VET as msg.value\n @return tokenId The ID of the minted NFT"},"functionSelector":"604f2177","id":17996,"implemented":false,"kind":"function","modifiers":[],"name":"stake","nameLocation":"5944:5:39","nodeType":"FunctionDefinition","parameters":{"id":17992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17991,"mutability":"mutable","name":"_levelId","nameLocation":"5956:8:39","nodeType":"VariableDeclaration","scope":17996,"src":"5950:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17990,"name":"uint8","nodeType":"ElementaryTypeName","src":"5950:5:39","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5949:16:39"},"returnParameters":{"id":17995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17994,"mutability":"mutable","name":"tokenId","nameLocation":"6000:7:39","nodeType":"VariableDeclaration","scope":17996,"src":"5992:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17993,"name":"uint256","nodeType":"ElementaryTypeName","src":"5992:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5991:17:39"},"scope":18153,"src":"5935:74:39","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":17997,"nodeType":"StructuredDocumentation","src":"6015:288:39","text":"@notice Unstakes a token from the Stargate contract, will return the VET to the user and burn the NFT\n for token to be unstaked, its delegation status must not be ACTIVE\n @param _tokenId The ID of the token to unstake\n @dev Emits a {IStargate.TokenUnstaked} event"},"functionSelector":"2e17de78","id":18002,"implemented":false,"kind":"function","modifiers":[],"name":"unstake","nameLocation":"6317:7:39","nodeType":"FunctionDefinition","parameters":{"id":18000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17999,"mutability":"mutable","name":"_tokenId","nameLocation":"6333:8:39","nodeType":"VariableDeclaration","scope":18002,"src":"6325:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17998,"name":"uint256","nodeType":"ElementaryTypeName","src":"6325:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6324:18:39"},"returnParameters":{"id":18001,"nodeType":"ParameterList","parameters":[],"src":"6351:0:39"},"scope":18153,"src":"6308:44:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18003,"nodeType":"StructuredDocumentation","src":"6405:1184:39","text":"@notice Delegates the token to the validator to increase its probability of being selected as\n a validator and accumulate rewards for each mined block.\n The amount of rewards depends on the effective stake compared to the total effective stake of the validator.\n The delegation is not active until the start of the next period of the validator. In the meantime, the user\n can change the validator by calling this function again, cancel the delegation or unstaking the token.\n Once the delegation is active, the user can request to exit the delegation by calling requestDelegationExit.\n The token will remain delegated until the end of the validator period end block.\n This contract will need to move the VET associated to the token from the StargateNFT contract and deposit\n it in the protocol staking contract.\n If the token was previously delegated, the VET will be moved from the protocol staking contract to this contract\n again and then moved back to the protocol staking contract.\n @param _tokenId - the token ID to delegate\n @param _validator - the validator to delegate to"},"functionSelector":"08bbb824","id":18010,"implemented":false,"kind":"function","modifiers":[],"name":"delegate","nameLocation":"7603:8:39","nodeType":"FunctionDefinition","parameters":{"id":18008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18005,"mutability":"mutable","name":"_tokenId","nameLocation":"7620:8:39","nodeType":"VariableDeclaration","scope":18010,"src":"7612:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18004,"name":"uint256","nodeType":"ElementaryTypeName","src":"7612:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18007,"mutability":"mutable","name":"_validator","nameLocation":"7638:10:39","nodeType":"VariableDeclaration","scope":18010,"src":"7630:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18006,"name":"address","nodeType":"ElementaryTypeName","src":"7630:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7611:38:39"},"returnParameters":{"id":18009,"nodeType":"ParameterList","parameters":[],"src":"7658:0:39"},"scope":18153,"src":"7594:65:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18011,"nodeType":"StructuredDocumentation","src":"7665:237:39","text":"@notice Stakes VET and mints an NFT, and delegates it\n @param _levelId The ID of the token level to mint, VET as msg.value\n @param _validator The validator to delegate to\n @return tokenId The ID of the minted NFT"},"functionSelector":"15fa1bdf","id":18020,"implemented":false,"kind":"function","modifiers":[],"name":"stakeAndDelegate","nameLocation":"7916:16:39","nodeType":"FunctionDefinition","parameters":{"id":18016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18013,"mutability":"mutable","name":"_levelId","nameLocation":"7948:8:39","nodeType":"VariableDeclaration","scope":18020,"src":"7942:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18012,"name":"uint8","nodeType":"ElementaryTypeName","src":"7942:5:39","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18015,"mutability":"mutable","name":"_validator","nameLocation":"7974:10:39","nodeType":"VariableDeclaration","scope":18020,"src":"7966:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18014,"name":"address","nodeType":"ElementaryTypeName","src":"7966:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7932:58:39"},"returnParameters":{"id":18019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18018,"mutability":"mutable","name":"tokenId","nameLocation":"8025:7:39","nodeType":"VariableDeclaration","scope":18020,"src":"8017:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18017,"name":"uint256","nodeType":"ElementaryTypeName","src":"8017:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8016:17:39"},"scope":18153,"src":"7907:127:39","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":18021,"nodeType":"StructuredDocumentation","src":"8040:202:39","text":"@notice Migrates a token from the legacy nodes contract to StargateNFT, and delegates it\n @param _tokenId The ID of the token to migrate\n @param _validator The validator to delegate to"},"functionSelector":"584a983f","id":18028,"implemented":false,"kind":"function","modifiers":[],"name":"migrateAndDelegate","nameLocation":"8256:18:39","nodeType":"FunctionDefinition","parameters":{"id":18026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18023,"mutability":"mutable","name":"_tokenId","nameLocation":"8283:8:39","nodeType":"VariableDeclaration","scope":18028,"src":"8275:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18022,"name":"uint256","nodeType":"ElementaryTypeName","src":"8275:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18025,"mutability":"mutable","name":"_validator","nameLocation":"8301:10:39","nodeType":"VariableDeclaration","scope":18028,"src":"8293:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18024,"name":"address","nodeType":"ElementaryTypeName","src":"8293:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8274:38:39"},"returnParameters":{"id":18027,"nodeType":"ParameterList","parameters":[],"src":"8329:0:39"},"scope":18153,"src":"8247:83:39","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":18029,"nodeType":"StructuredDocumentation","src":"8336:695:39","text":"@notice Requests a delegation exit by signalling the exit to the protocol staking contract.\n If the delegation is active, the user will need to wait for then end of the period to actually exit, if instead\n the delegation is pending the user will exit immediatly.\n Once the request to exit is signalled, the user cannot undo it and cannot request to exit again.\n @dev Exiting a pending delegation, differs from exiting an active delegation.\n In the first case, it is enough to withdraw the VET from the protocol, in the second case\n we will signal to the protocol to exit the delegation.\n @param _tokenId - the token ID to request the exit for"},"functionSelector":"69e79b7d","id":18034,"implemented":false,"kind":"function","modifiers":[],"name":"requestDelegationExit","nameLocation":"9045:21:39","nodeType":"FunctionDefinition","parameters":{"id":18032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18031,"mutability":"mutable","name":"_tokenId","nameLocation":"9075:8:39","nodeType":"VariableDeclaration","scope":18034,"src":"9067:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18030,"name":"uint256","nodeType":"ElementaryTypeName","src":"9067:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9066:18:39"},"returnParameters":{"id":18033,"nodeType":"ParameterList","parameters":[],"src":"9093:0:39"},"scope":18153,"src":"9036:58:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18035,"nodeType":"StructuredDocumentation","src":"9100:240:39","text":"@notice Returns the details of the delegation of a token\n @dev If the token does not have any delegation, it will return a set of default values\n @param _tokenId - the token ID\n @return The details of the delegation"},"functionSelector":"eabfa044","id":18043,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegationDetails","nameLocation":"9354:20:39","nodeType":"FunctionDefinition","parameters":{"id":18038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18037,"mutability":"mutable","name":"_tokenId","nameLocation":"9383:8:39","nodeType":"VariableDeclaration","scope":18043,"src":"9375:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18036,"name":"uint256","nodeType":"ElementaryTypeName","src":"9375:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9374:18:39"},"returnParameters":{"id":18042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18043,"src":"9416:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Delegation_$17974_memory_ptr","typeString":"struct IStargate.Delegation"},"typeName":{"id":18040,"nodeType":"UserDefinedTypeName","pathNode":{"id":18039,"name":"Delegation","nameLocations":["9416:10:39"],"nodeType":"IdentifierPath","referencedDeclaration":17974,"src":"9416:10:39"},"referencedDeclaration":17974,"src":"9416:10:39","typeDescriptions":{"typeIdentifier":"t_struct$_Delegation_$17974_storage_ptr","typeString":"struct IStargate.Delegation"}},"visibility":"internal"}],"src":"9415:19:39"},"scope":18153,"src":"9345:90:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18044,"nodeType":"StructuredDocumentation","src":"9441:166:39","text":"@notice Will fetch the latest delegation of a token and will return its status\n @param _tokenId - the token ID\n @return The status of the delegation"},"functionSelector":"f4655cd1","id":18052,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegationStatus","nameLocation":"9621:19:39","nodeType":"FunctionDefinition","parameters":{"id":18047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18046,"mutability":"mutable","name":"_tokenId","nameLocation":"9649:8:39","nodeType":"VariableDeclaration","scope":18052,"src":"9641:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18045,"name":"uint256","nodeType":"ElementaryTypeName","src":"9641:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9640:18:39"},"returnParameters":{"id":18051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18052,"src":"9682:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_DelegationStatus_$17980","typeString":"enum IStargate.DelegationStatus"},"typeName":{"id":18049,"nodeType":"UserDefinedTypeName","pathNode":{"id":18048,"name":"DelegationStatus","nameLocations":["9682:16:39"],"nodeType":"IdentifierPath","referencedDeclaration":17980,"src":"9682:16:39"},"referencedDeclaration":17980,"src":"9682:16:39","typeDescriptions":{"typeIdentifier":"t_enum$_DelegationStatus_$17980","typeString":"enum IStargate.DelegationStatus"}},"visibility":"internal"}],"src":"9681:18:39"},"scope":18153,"src":"9612:88:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18053,"nodeType":"StructuredDocumentation","src":"9706:159:39","text":"@notice Will return the latest delegation id of a token (regardless of its status)\n @param _tokenId - the token ID\n @return The delegation id"},"functionSelector":"07a9bbbb","id":18060,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegationIdOfToken","nameLocation":"9879:22:39","nodeType":"FunctionDefinition","parameters":{"id":18056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18055,"mutability":"mutable","name":"_tokenId","nameLocation":"9910:8:39","nodeType":"VariableDeclaration","scope":18060,"src":"9902:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18054,"name":"uint256","nodeType":"ElementaryTypeName","src":"9902:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9901:18:39"},"returnParameters":{"id":18059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18058,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18060,"src":"9943:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18057,"name":"uint256","nodeType":"ElementaryTypeName","src":"9943:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9942:9:39"},"scope":18153,"src":"9870:82:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18061,"nodeType":"StructuredDocumentation","src":"9958:288:39","text":"@notice Will return true if the user has requested to exit the latest delegation (regardless of its status)\n @dev This will return true even if the delegation is EXITED\n @param _tokenId - the token ID\n @return True if the user has requested to exit the delegation"},"functionSelector":"71569e2f","id":18068,"implemented":false,"kind":"function","modifiers":[],"name":"hasRequestedExit","nameLocation":"10260:16:39","nodeType":"FunctionDefinition","parameters":{"id":18064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18063,"mutability":"mutable","name":"_tokenId","nameLocation":"10285:8:39","nodeType":"VariableDeclaration","scope":18068,"src":"10277:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18062,"name":"uint256","nodeType":"ElementaryTypeName","src":"10277:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10276:18:39"},"returnParameters":{"id":18067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18068,"src":"10318:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18065,"name":"bool","nodeType":"ElementaryTypeName","src":"10318:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10317:6:39"},"scope":18153,"src":"10251:73:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18069,"nodeType":"StructuredDocumentation","src":"10330:285:39","text":"@notice Returns the total effective stake of the delegators of a validator in a specific period\n @param _validator - the validator address\n @param _period - the period to check\n @return The total effective stake of the delegators of the validator in the period"},"functionSelector":"f2d804ef","id":18078,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegatorsEffectiveStake","nameLocation":"10629:27:39","nodeType":"FunctionDefinition","parameters":{"id":18074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18071,"mutability":"mutable","name":"_validator","nameLocation":"10674:10:39","nodeType":"VariableDeclaration","scope":18078,"src":"10666:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18070,"name":"address","nodeType":"ElementaryTypeName","src":"10666:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18073,"mutability":"mutable","name":"_period","nameLocation":"10701:7:39","nodeType":"VariableDeclaration","scope":18078,"src":"10694:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18072,"name":"uint32","nodeType":"ElementaryTypeName","src":"10694:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"10656:58:39"},"returnParameters":{"id":18077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18076,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18078,"src":"10738:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18075,"name":"uint256","nodeType":"ElementaryTypeName","src":"10738:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10737:9:39"},"scope":18153,"src":"10620:127:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18079,"nodeType":"StructuredDocumentation","src":"10753:345:39","text":"@notice Returns the effective stake of a token\n @dev The effective stake is the amount of VET that is staked by the token multiplied\n by the reward multiplier of the level, and is used to calculate the share of the delegator in the period.\n @param _tokenId - the token ID\n @return The effective stake of the token"},"functionSelector":"0f20d6f8","id":18086,"implemented":false,"kind":"function","modifiers":[],"name":"getEffectiveStake","nameLocation":"11112:17:39","nodeType":"FunctionDefinition","parameters":{"id":18082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18081,"mutability":"mutable","name":"_tokenId","nameLocation":"11138:8:39","nodeType":"VariableDeclaration","scope":18086,"src":"11130:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18080,"name":"uint256","nodeType":"ElementaryTypeName","src":"11130:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11129:18:39"},"returnParameters":{"id":18085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18086,"src":"11171:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18083,"name":"uint256","nodeType":"ElementaryTypeName","src":"11171:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11170:9:39"},"scope":18153,"src":"11103:77:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18087,"nodeType":"StructuredDocumentation","src":"11229:222:39","text":"@notice Claims all the rewards for a token\n @dev This function will claim the rewards for each period between the last\n claimed period and the last claimable period.\n @param _tokenId - the token ID"},"functionSelector":"0962ef79","id":18092,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewards","nameLocation":"11465:12:39","nodeType":"FunctionDefinition","parameters":{"id":18090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18089,"mutability":"mutable","name":"_tokenId","nameLocation":"11486:8:39","nodeType":"VariableDeclaration","scope":18092,"src":"11478:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18088,"name":"uint256","nodeType":"ElementaryTypeName","src":"11478:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11477:18:39"},"returnParameters":{"id":18091,"nodeType":"ParameterList","parameters":[],"src":"11504:0:39"},"scope":18153,"src":"11456:49:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18093,"nodeType":"StructuredDocumentation","src":"11511:309:39","text":"@notice Returns the claimable rewards for a token for batch 0 (first 832 periods)\n @dev This is the sum of the claimable rewards for each period between the last claimed period and the last claimable period.\n @param _tokenId - the token ID\n @return The claimable rewards for the token"},"functionSelector":"9835fc7e","id":18100,"implemented":false,"kind":"function","modifiers":[],"name":"claimableRewards","nameLocation":"11834:16:39","nodeType":"FunctionDefinition","parameters":{"id":18096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18095,"mutability":"mutable","name":"_tokenId","nameLocation":"11859:8:39","nodeType":"VariableDeclaration","scope":18100,"src":"11851:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18094,"name":"uint256","nodeType":"ElementaryTypeName","src":"11851:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11850:18:39"},"returnParameters":{"id":18099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18100,"src":"11892:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18097,"name":"uint256","nodeType":"ElementaryTypeName","src":"11892:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11891:9:39"},"scope":18153,"src":"11825:76:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18101,"nodeType":"StructuredDocumentation","src":"11907:341:39","text":"@notice Returns the claimable rewards for a token for a specific batch\n @dev This is the sum of the claimable rewards for each period between the last claimed period and the last claimable period.\n @param _tokenId - the token ID\n @param _batch - the batch to check\n @return The claimable rewards for the token"},"functionSelector":"e2735134","id":18110,"implemented":false,"kind":"function","modifiers":[],"name":"claimableRewards","nameLocation":"12262:16:39","nodeType":"FunctionDefinition","parameters":{"id":18106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18103,"mutability":"mutable","name":"_tokenId","nameLocation":"12287:8:39","nodeType":"VariableDeclaration","scope":18110,"src":"12279:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18102,"name":"uint256","nodeType":"ElementaryTypeName","src":"12279:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18105,"mutability":"mutable","name":"_batch","nameLocation":"12304:6:39","nodeType":"VariableDeclaration","scope":18110,"src":"12297:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18104,"name":"uint32","nodeType":"ElementaryTypeName","src":"12297:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"12278:33:39"},"returnParameters":{"id":18109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18110,"src":"12335:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18107,"name":"uint256","nodeType":"ElementaryTypeName","src":"12335:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12334:9:39"},"scope":18153,"src":"12253:91:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18111,"nodeType":"StructuredDocumentation","src":"12350:308:39","text":"@notice Returns the locked rewards for a token\n @dev When the delegation is active, the rewards rewards of the current period are locked\n and cannot be claimed until the next period. This function retur\n @param _tokenId - the token ID\n @return The locked rewards for the token"},"functionSelector":"c728b740","id":18118,"implemented":false,"kind":"function","modifiers":[],"name":"lockedRewards","nameLocation":"12672:13:39","nodeType":"FunctionDefinition","parameters":{"id":18114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18113,"mutability":"mutable","name":"_tokenId","nameLocation":"12694:8:39","nodeType":"VariableDeclaration","scope":18118,"src":"12686:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18112,"name":"uint256","nodeType":"ElementaryTypeName","src":"12686:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12685:18:39"},"returnParameters":{"id":18117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18118,"src":"12727:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18115,"name":"uint256","nodeType":"ElementaryTypeName","src":"12727:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12726:9:39"},"scope":18153,"src":"12663:73:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18119,"nodeType":"StructuredDocumentation","src":"12742:266:39","text":"@notice Returns the latestClaimedPeriod and the endPeriod of the latest delegation of a token\n @param _tokenId - the token ID\n @return lastClaimedPeriod - the latest claimed period\n @return endPeriod - the end period of the latest delegation"},"functionSelector":"f040812e","id":18128,"implemented":false,"kind":"function","modifiers":[],"name":"claimableDelegationPeriods","nameLocation":"13022:26:39","nodeType":"FunctionDefinition","parameters":{"id":18122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18121,"mutability":"mutable","name":"_tokenId","nameLocation":"13057:8:39","nodeType":"VariableDeclaration","scope":18128,"src":"13049:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18120,"name":"uint256","nodeType":"ElementaryTypeName","src":"13049:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13048:18:39"},"returnParameters":{"id":18127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18128,"src":"13090:6:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18123,"name":"uint32","nodeType":"ElementaryTypeName","src":"13090:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":18126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18128,"src":"13098:6:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18125,"name":"uint32","nodeType":"ElementaryTypeName","src":"13098:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"13089:16:39"},"scope":18153,"src":"13013:93:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18129,"nodeType":"StructuredDocumentation","src":"13167:87:39","text":"@notice Returns the max claimable periods\n @return The max claimable periods"},"functionSelector":"b0d76cad","id":18134,"implemented":false,"kind":"function","modifiers":[],"name":"getMaxClaimablePeriods","nameLocation":"13268:22:39","nodeType":"FunctionDefinition","parameters":{"id":18130,"nodeType":"ParameterList","parameters":[],"src":"13290:2:39"},"returnParameters":{"id":18133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18134,"src":"13316:6:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18131,"name":"uint32","nodeType":"ElementaryTypeName","src":"13316:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"13315:8:39"},"scope":18153,"src":"13259:65:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18135,"nodeType":"StructuredDocumentation","src":"13330:106:39","text":"@notice Sets the max claimable periods\n @param _maxClaimablePeriods - the max claimable periods"},"functionSelector":"9af02d9d","id":18140,"implemented":false,"kind":"function","modifiers":[],"name":"setMaxClaimablePeriods","nameLocation":"13450:22:39","nodeType":"FunctionDefinition","parameters":{"id":18138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18137,"mutability":"mutable","name":"_maxClaimablePeriods","nameLocation":"13480:20:39","nodeType":"VariableDeclaration","scope":18140,"src":"13473:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18136,"name":"uint32","nodeType":"ElementaryTypeName","src":"13473:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"13472:29:39"},"returnParameters":{"id":18139,"nodeType":"ParameterList","parameters":[],"src":"13510:0:39"},"scope":18153,"src":"13441:70:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18141,"nodeType":"StructuredDocumentation","src":"13558:119:39","text":"@notice Returns the current clock\n @dev Call CLOCK_MODE() to know if the clock is in timestamp or block mode"},"functionSelector":"91ddadf4","id":18146,"implemented":false,"kind":"function","modifiers":[],"name":"clock","nameLocation":"13691:5:39","nodeType":"FunctionDefinition","parameters":{"id":18142,"nodeType":"ParameterList","parameters":[],"src":"13696:2:39"},"returnParameters":{"id":18145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18144,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18146,"src":"13722:6:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":18143,"name":"uint48","nodeType":"ElementaryTypeName","src":"13722:6:39","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"13721:8:39"},"scope":18153,"src":"13682:48:39","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18147,"nodeType":"StructuredDocumentation","src":"13736:86:39","text":"@notice Returns the clock mode\n @dev Call clock() to know the current clock"},"functionSelector":"4bf5d7e9","id":18152,"implemented":false,"kind":"function","modifiers":[],"name":"CLOCK_MODE","nameLocation":"13836:10:39","nodeType":"FunctionDefinition","parameters":{"id":18148,"nodeType":"ParameterList","parameters":[],"src":"13846:2:39"},"returnParameters":{"id":18151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18152,"src":"13872:13:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18149,"name":"string","nodeType":"ElementaryTypeName","src":"13872:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13871:15:39"},"scope":18153,"src":"13827:60:39","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":18154,"src":"57:13832:39","usedErrors":[17845,17847,17854,17858,17862,17866,17870,17874,17876,17878,17886,17892,17898,17900,17902],"usedEvents":[17917,17928,17941,17956]}],"src":"32:13858:39"},"id":39},"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol":{"ast":{"absolutePath":"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol","exportedSymbols":{"IStargateDelegation":[18400]},"id":18401,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":18155,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:40"},{"abstract":false,"baseContracts":[],"canonicalName":"IStargateDelegation","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":18400,"linearizedBaseContracts":[18400],"name":"IStargateDelegation","nameLocation":"67:19:40","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":18156,"nodeType":"StructuredDocumentation","src":"124:75:40","text":"@notice Error thrown when a user is not authorized to perform an action"},"errorSelector":"ea93ab6d","id":18160,"name":"UnauthorizedUser","nameLocation":"210:16:40","nodeType":"ErrorDefinition","parameters":{"id":18159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18158,"mutability":"mutable","name":"user","nameLocation":"235:4:40","nodeType":"VariableDeclaration","scope":18160,"src":"227:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18157,"name":"address","nodeType":"ElementaryTypeName","src":"227:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"226:14:40"},"src":"204:37:40"},{"documentation":{"id":18161,"nodeType":"StructuredDocumentation","src":"246:65:40","text":"@notice Error thrown when an NFT is under the maturity period"},"errorSelector":"a11ec53c","id":18165,"name":"NFTUnderMaturityPeriod","nameLocation":"322:22:40","nodeType":"ErrorDefinition","parameters":{"id":18164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18163,"mutability":"mutable","name":"tokenId","nameLocation":"353:7:40","nodeType":"VariableDeclaration","scope":18165,"src":"345:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18162,"name":"uint256","nodeType":"ElementaryTypeName","src":"345:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"344:17:40"},"src":"316:46:40"},{"documentation":{"id":18166,"nodeType":"StructuredDocumentation","src":"367:57:40","text":"@notice Error thrown when an NFT is already delegated"},"errorSelector":"b61ba74c","id":18170,"name":"NFTAlreadyDelegated","nameLocation":"435:19:40","nodeType":"ErrorDefinition","parameters":{"id":18169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18168,"mutability":"mutable","name":"tokenId","nameLocation":"463:7:40","nodeType":"VariableDeclaration","scope":18170,"src":"455:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18167,"name":"uint256","nodeType":"ElementaryTypeName","src":"455:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"454:17:40"},"src":"429:43:40"},{"documentation":{"id":18171,"nodeType":"StructuredDocumentation","src":"477:53:40","text":"@notice Error thrown when an NFT is not delegated"},"errorSelector":"c0343708","id":18175,"name":"NFTNotDelegated","nameLocation":"541:15:40","nodeType":"ErrorDefinition","parameters":{"id":18174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18173,"mutability":"mutable","name":"tokenId","nameLocation":"565:7:40","nodeType":"VariableDeclaration","scope":18175,"src":"557:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18172,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"556:17:40"},"src":"535:39:40"},{"documentation":{"id":18176,"nodeType":"StructuredDocumentation","src":"579:59:40","text":"@notice Error thrown when there are no rewards to claim"},"errorSelector":"0801beb0","id":18180,"name":"NoRewardsToClaim","nameLocation":"649:16:40","nodeType":"ErrorDefinition","parameters":{"id":18179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18178,"mutability":"mutable","name":"tokenId","nameLocation":"674:7:40","nodeType":"VariableDeclaration","scope":18180,"src":"666:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18177,"name":"uint256","nodeType":"ElementaryTypeName","src":"666:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"665:17:40"},"src":"643:40:40"},{"documentation":{"id":18181,"nodeType":"StructuredDocumentation","src":"688:60:40","text":"@notice Error thrown when an address is the zero address"},"errorSelector":"e622e040","id":18183,"name":"AddressCannotBeZero","nameLocation":"759:19:40","nodeType":"ErrorDefinition","parameters":{"id":18182,"nodeType":"ParameterList","parameters":[],"src":"778:2:40"},"src":"753:28:40"},{"documentation":{"id":18184,"nodeType":"StructuredDocumentation","src":"786:78:40","text":"@notice Error thrown when a vtho reward per block per NFT level is invalid"},"errorSelector":"43c8cd96","id":18190,"name":"InvalidVthoRewardPerBlock","nameLocation":"875:25:40","nodeType":"ErrorDefinition","parameters":{"id":18189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18186,"mutability":"mutable","name":"level","nameLocation":"909:5:40","nodeType":"VariableDeclaration","scope":18190,"src":"901:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18185,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18188,"mutability":"mutable","name":"value","nameLocation":"924:5:40","nodeType":"VariableDeclaration","scope":18190,"src":"916:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18187,"name":"uint256","nodeType":"ElementaryTypeName","src":"916:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"900:30:40"},"src":"869:62:40"},{"documentation":{"id":18191,"nodeType":"StructuredDocumentation","src":"936:60:40","text":"@notice Error thrown when a delegation period is invalid"},"errorSelector":"bf5bfca5","id":18193,"name":"InvalidDelegationPeriod","nameLocation":"1007:23:40","nodeType":"ErrorDefinition","parameters":{"id":18192,"nodeType":"ParameterList","parameters":[],"src":"1030:2:40"},"src":"1001:32:40"},{"documentation":{"id":18194,"nodeType":"StructuredDocumentation","src":"1038:47:40","text":"@notice Error thrown when an array is empty"},"errorSelector":"61c10e1c","id":18196,"name":"ArrayCannotBeEmpty","nameLocation":"1096:18:40","nodeType":"ErrorDefinition","parameters":{"id":18195,"nodeType":"ParameterList","parameters":[],"src":"1114:2:40"},"src":"1090:27:40"},{"documentation":{"id":18197,"nodeType":"StructuredDocumentation","src":"1122:53:40","text":"@notice Error thrown when an NFT level is invalid"},"errorSelector":"ba531933","id":18203,"name":"InvalidNFTLevel","nameLocation":"1186:15:40","nodeType":"ErrorDefinition","parameters":{"id":18202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18199,"mutability":"mutable","name":"tokenId","nameLocation":"1210:7:40","nodeType":"VariableDeclaration","scope":18203,"src":"1202:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18198,"name":"uint256","nodeType":"ElementaryTypeName","src":"1202:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18201,"mutability":"mutable","name":"level","nameLocation":"1227:5:40","nodeType":"VariableDeclaration","scope":18203,"src":"1219:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18200,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1201:32:40"},"src":"1180:54:40"},{"documentation":{"id":18204,"nodeType":"StructuredDocumentation","src":"1239:82:40","text":"@notice Error thrown when there is insufficient VTHO balance for rewards claim"},"errorSelector":"ae4b5673","id":18210,"name":"InsufficientVthoBalanceForRewardsClaim","nameLocation":"1332:38:40","nodeType":"ErrorDefinition","parameters":{"id":18209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18206,"mutability":"mutable","name":"balance","nameLocation":"1379:7:40","nodeType":"VariableDeclaration","scope":18210,"src":"1371:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18205,"name":"uint256","nodeType":"ElementaryTypeName","src":"1371:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18208,"mutability":"mutable","name":"required","nameLocation":"1396:8:40","nodeType":"VariableDeclaration","scope":18210,"src":"1388:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18207,"name":"uint256","nodeType":"ElementaryTypeName","src":"1388:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1370:35:40"},"src":"1326:80:40"},{"documentation":{"id":18211,"nodeType":"StructuredDocumentation","src":"1411:51:40","text":"@notice Error thrown when a VTHO transfer fails"},"errorSelector":"d2e360a3","id":18217,"name":"VthoTransferFailed","nameLocation":"1473:18:40","nodeType":"ErrorDefinition","parameters":{"id":18216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18213,"mutability":"mutable","name":"recipient","nameLocation":"1500:9:40","nodeType":"VariableDeclaration","scope":18217,"src":"1492:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18212,"name":"address","nodeType":"ElementaryTypeName","src":"1492:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18215,"mutability":"mutable","name":"amount","nameLocation":"1519:6:40","nodeType":"VariableDeclaration","scope":18217,"src":"1511:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18214,"name":"uint256","nodeType":"ElementaryTypeName","src":"1511:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1491:35:40"},"src":"1467:60:40"},{"documentation":{"id":18218,"nodeType":"StructuredDocumentation","src":"1532:67:40","text":"@notice Error thrown when the rewards accumulation period ended"},"errorSelector":"37bd1772","id":18220,"name":"RewardsAccumulationPeriodEnded","nameLocation":"1610:30:40","nodeType":"ErrorDefinition","parameters":{"id":18219,"nodeType":"ParameterList","parameters":[],"src":"1640:2:40"},"src":"1604:39:40"},{"documentation":{"id":18221,"nodeType":"StructuredDocumentation","src":"1648:77:40","text":"@notice Error thrown when the user requests to exit delegation repeatedly"},"errorSelector":"6f7a29e2","id":18223,"name":"DelegationExitAlreadyRequested","nameLocation":"1736:30:40","nodeType":"ErrorDefinition","parameters":{"id":18222,"nodeType":"ParameterList","parameters":[],"src":"1766:2:40"},"src":"1730:39:40"},{"documentation":{"id":18224,"nodeType":"StructuredDocumentation","src":"1774:64:40","text":"@notice Error thrown when there are no lost rewards to claim"},"errorSelector":"6e605fff","id":18230,"name":"NoLostRewardsToClaim","nameLocation":"1849:20:40","nodeType":"ErrorDefinition","parameters":{"id":18229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18226,"mutability":"mutable","name":"owner","nameLocation":"1878:5:40","nodeType":"VariableDeclaration","scope":18230,"src":"1870:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18225,"name":"address","nodeType":"ElementaryTypeName","src":"1870:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18228,"mutability":"mutable","name":"tokenId","nameLocation":"1893:7:40","nodeType":"VariableDeclaration","scope":18230,"src":"1885:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18227,"name":"uint256","nodeType":"ElementaryTypeName","src":"1885:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1869:32:40"},"src":"1843:59:40"},{"anonymous":false,"documentation":{"id":18231,"nodeType":"StructuredDocumentation","src":"1939:65:40","text":"@notice Event emitted when a delegation simulation is started"},"eventSelector":"8c474be8f4aa05d9d3dd7a9a7e2398f084970227d3151860ff5efc1b5ec3ef92","id":18243,"name":"DelegationSimulationStarted","nameLocation":"2015:27:40","nodeType":"EventDefinition","parameters":{"id":18242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18233,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"2068:7:40","nodeType":"VariableDeclaration","scope":18243,"src":"2052:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18232,"name":"uint256","nodeType":"ElementaryTypeName","src":"2052:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18235,"indexed":true,"mutability":"mutable","name":"delegator","nameLocation":"2101:9:40","nodeType":"VariableDeclaration","scope":18243,"src":"2085:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18234,"name":"address","nodeType":"ElementaryTypeName","src":"2085:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18237,"indexed":false,"mutability":"mutable","name":"rewardsAccumulationStartBlock","nameLocation":"2128:29:40","nodeType":"VariableDeclaration","scope":18243,"src":"2120:37:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18236,"name":"uint256","nodeType":"ElementaryTypeName","src":"2120:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18239,"indexed":true,"mutability":"mutable","name":"isDelegationForever","nameLocation":"2180:19:40","nodeType":"VariableDeclaration","scope":18243,"src":"2167:32:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18238,"name":"bool","nodeType":"ElementaryTypeName","src":"2167:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":18241,"indexed":false,"mutability":"mutable","name":"caller","nameLocation":"2217:6:40","nodeType":"VariableDeclaration","scope":18243,"src":"2209:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18240,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2042:187:40"},"src":"2009:221:40"},{"anonymous":false,"documentation":{"id":18244,"nodeType":"StructuredDocumentation","src":"2235:61:40","text":"@notice Event emitted when a delegation exit is requested"},"eventSelector":"a9c4810ca742dbbe9265a83bf95c6bd92653ff80948f8fb013d94abce87528ad","id":18250,"name":"DelegationExitRequested","nameLocation":"2307:23:40","nodeType":"EventDefinition","parameters":{"id":18249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18246,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"2347:7:40","nodeType":"VariableDeclaration","scope":18250,"src":"2331:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18245,"name":"uint256","nodeType":"ElementaryTypeName","src":"2331:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18248,"indexed":false,"mutability":"mutable","name":"delegationEndBlock","nameLocation":"2364:18:40","nodeType":"VariableDeclaration","scope":18250,"src":"2356:26:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18247,"name":"uint256","nodeType":"ElementaryTypeName","src":"2356:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2330:53:40"},"src":"2301:83:40"},{"anonymous":false,"documentation":{"id":18251,"nodeType":"StructuredDocumentation","src":"2389:63:40","text":"@notice Event emitted when a delegation rewards are claimed"},"eventSelector":"e4fea81930180a28bed643ad84b5c70b47a7f780388053588df3b32a5d3ac2e6","id":18261,"name":"DelegationRewardsClaimed","nameLocation":"2463:24:40","nodeType":"EventDefinition","parameters":{"id":18260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18253,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"2513:7:40","nodeType":"VariableDeclaration","scope":18261,"src":"2497:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18252,"name":"uint256","nodeType":"ElementaryTypeName","src":"2497:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18255,"indexed":false,"mutability":"mutable","name":"rewards","nameLocation":"2538:7:40","nodeType":"VariableDeclaration","scope":18261,"src":"2530:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18254,"name":"uint256","nodeType":"ElementaryTypeName","src":"2530:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18257,"indexed":true,"mutability":"mutable","name":"claimer","nameLocation":"2571:7:40","nodeType":"VariableDeclaration","scope":18261,"src":"2555:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18256,"name":"address","nodeType":"ElementaryTypeName","src":"2555:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18259,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"2604:9:40","nodeType":"VariableDeclaration","scope":18261,"src":"2588:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18258,"name":"address","nodeType":"ElementaryTypeName","src":"2588:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2487:132:40"},"src":"2457:163:40"},{"anonymous":false,"documentation":{"id":18262,"nodeType":"StructuredDocumentation","src":"2625:72:40","text":"@notice Event emitted when the rewards accumulation end block is set"},"eventSelector":"5f2e3a40647c8856b414700c638b0de43e923591bfa6727a42d02d6893708be7","id":18266,"name":"RewardsAccumulationEndBlockSet","nameLocation":"2708:30:40","nodeType":"EventDefinition","parameters":{"id":18265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18264,"indexed":false,"mutability":"mutable","name":"rewardsAccumulationEndBlock","nameLocation":"2747:27:40","nodeType":"VariableDeclaration","scope":18266,"src":"2739:35:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18263,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2738:37:40"},"src":"2702:74:40"},{"anonymous":false,"documentation":{"id":18267,"nodeType":"StructuredDocumentation","src":"2781:53:40","text":"@notice Event emitted when lost rewards are added"},"eventSelector":"214b0dec028e510bdb41a3d507b75306efdc8ac735c7e5db498a5eb8e4d3b263","id":18275,"name":"LostRewardsAdded","nameLocation":"2845:16:40","nodeType":"EventDefinition","parameters":{"id":18274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18269,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"2878:5:40","nodeType":"VariableDeclaration","scope":18275,"src":"2862:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18268,"name":"address","nodeType":"ElementaryTypeName","src":"2862:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18271,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"2901:7:40","nodeType":"VariableDeclaration","scope":18275,"src":"2885:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18270,"name":"uint256","nodeType":"ElementaryTypeName","src":"2885:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18273,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2918:6:40","nodeType":"VariableDeclaration","scope":18275,"src":"2910:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18272,"name":"uint256","nodeType":"ElementaryTypeName","src":"2910:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2861:64:40"},"src":"2839:87:40"},{"anonymous":false,"documentation":{"id":18276,"nodeType":"StructuredDocumentation","src":"2931:55:40","text":"@notice Event emitted when lost rewards are removed"},"eventSelector":"12e6f6fd735d5f5552f050f21f0bb6e778513f31190ee7173dc48a713c3c5dd0","id":18284,"name":"LostRewardsRemoved","nameLocation":"2997:18:40","nodeType":"EventDefinition","parameters":{"id":18283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18278,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"3032:5:40","nodeType":"VariableDeclaration","scope":18284,"src":"3016:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18277,"name":"address","nodeType":"ElementaryTypeName","src":"3016:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18280,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3055:7:40","nodeType":"VariableDeclaration","scope":18284,"src":"3039:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18279,"name":"uint256","nodeType":"ElementaryTypeName","src":"3039:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18282,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3072:6:40","nodeType":"VariableDeclaration","scope":18284,"src":"3064:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18281,"name":"uint256","nodeType":"ElementaryTypeName","src":"3064:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3015:64:40"},"src":"2991:89:40"},{"anonymous":false,"documentation":{"id":18285,"nodeType":"StructuredDocumentation","src":"3085:55:40","text":"@notice Event emitted when lost rewards are claimed"},"eventSelector":"77953bc894590294256cdac3803da37df5c2ec3ee31e6411685ac5de39415ebb","id":18295,"name":"LostRewardsClaimed","nameLocation":"3151:18:40","nodeType":"EventDefinition","parameters":{"id":18294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18287,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"3195:5:40","nodeType":"VariableDeclaration","scope":18295,"src":"3179:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18286,"name":"address","nodeType":"ElementaryTypeName","src":"3179:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18289,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"3226:7:40","nodeType":"VariableDeclaration","scope":18295,"src":"3210:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18288,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18291,"indexed":true,"mutability":"mutable","name":"claimer","nameLocation":"3259:7:40","nodeType":"VariableDeclaration","scope":18295,"src":"3243:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18290,"name":"address","nodeType":"ElementaryTypeName","src":"3243:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18293,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3284:6:40","nodeType":"VariableDeclaration","scope":18295,"src":"3276:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18292,"name":"uint256","nodeType":"ElementaryTypeName","src":"3276:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3169:127:40"},"src":"3145:152:40"},{"functionSelector":"54fd4d50","id":18300,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"3347:7:40","nodeType":"FunctionDefinition","parameters":{"id":18296,"nodeType":"ParameterList","parameters":[],"src":"3354:2:40"},"returnParameters":{"id":18299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18300,"src":"3380:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18297,"name":"uint256","nodeType":"ElementaryTypeName","src":"3380:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3379:9:40"},"scope":18400,"src":"3338:51:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"91ddadf4","id":18305,"implemented":false,"kind":"function","modifiers":[],"name":"clock","nameLocation":"3404:5:40","nodeType":"FunctionDefinition","parameters":{"id":18301,"nodeType":"ParameterList","parameters":[],"src":"3409:2:40"},"returnParameters":{"id":18304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18305,"src":"3435:6:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":18302,"name":"uint48","nodeType":"ElementaryTypeName","src":"3435:6:40","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3434:8:40"},"scope":18400,"src":"3395:48:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4bf5d7e9","id":18310,"implemented":false,"kind":"function","modifiers":[],"name":"CLOCK_MODE","nameLocation":"3458:10:40","nodeType":"FunctionDefinition","parameters":{"id":18306,"nodeType":"ParameterList","parameters":[],"src":"3468:2:40"},"returnParameters":{"id":18309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18308,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18310,"src":"3494:13:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18307,"name":"string","nodeType":"ElementaryTypeName","src":"3494:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3493:15:40"},"scope":18400,"src":"3449:60:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3207555d","id":18317,"implemented":false,"kind":"function","modifiers":[],"name":"delegate","nameLocation":"3524:8:40","nodeType":"FunctionDefinition","parameters":{"id":18315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18312,"mutability":"mutable","name":"_tokenId","nameLocation":"3541:8:40","nodeType":"VariableDeclaration","scope":18317,"src":"3533:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18311,"name":"uint256","nodeType":"ElementaryTypeName","src":"3533:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18314,"mutability":"mutable","name":"_delegateForever","nameLocation":"3556:16:40","nodeType":"VariableDeclaration","scope":18317,"src":"3551:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18313,"name":"bool","nodeType":"ElementaryTypeName","src":"3551:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3532:41:40"},"returnParameters":{"id":18316,"nodeType":"ParameterList","parameters":[],"src":"3582:0:40"},"scope":18400,"src":"3515:68:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"69e79b7d","id":18322,"implemented":false,"kind":"function","modifiers":[],"name":"requestDelegationExit","nameLocation":"3598:21:40","nodeType":"FunctionDefinition","parameters":{"id":18320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18319,"mutability":"mutable","name":"_tokenId","nameLocation":"3628:8:40","nodeType":"VariableDeclaration","scope":18322,"src":"3620:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18318,"name":"uint256","nodeType":"ElementaryTypeName","src":"3620:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3619:18:40"},"returnParameters":{"id":18321,"nodeType":"ParameterList","parameters":[],"src":"3646:0:40"},"scope":18400,"src":"3589:58:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0962ef79","id":18327,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewards","nameLocation":"3662:12:40","nodeType":"FunctionDefinition","parameters":{"id":18325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18324,"mutability":"mutable","name":"_tokenId","nameLocation":"3683:8:40","nodeType":"VariableDeclaration","scope":18327,"src":"3675:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18323,"name":"uint256","nodeType":"ElementaryTypeName","src":"3675:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3674:18:40"},"returnParameters":{"id":18326,"nodeType":"ParameterList","parameters":[],"src":"3701:0:40"},"scope":18400,"src":"3653:49:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9835fc7e","id":18334,"implemented":false,"kind":"function","modifiers":[],"name":"claimableRewards","nameLocation":"3717:16:40","nodeType":"FunctionDefinition","parameters":{"id":18330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18329,"mutability":"mutable","name":"_tokenId","nameLocation":"3742:8:40","nodeType":"VariableDeclaration","scope":18334,"src":"3734:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18328,"name":"uint256","nodeType":"ElementaryTypeName","src":"3734:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3733:18:40"},"returnParameters":{"id":18333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18334,"src":"3775:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18331,"name":"uint256","nodeType":"ElementaryTypeName","src":"3775:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3774:9:40"},"scope":18400,"src":"3708:76:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9bc4fd6e","id":18341,"implemented":false,"kind":"function","modifiers":[],"name":"accumulatedRewards","nameLocation":"3799:18:40","nodeType":"FunctionDefinition","parameters":{"id":18337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18336,"mutability":"mutable","name":"_tokenId","nameLocation":"3826:8:40","nodeType":"VariableDeclaration","scope":18341,"src":"3818:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18335,"name":"uint256","nodeType":"ElementaryTypeName","src":"3818:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3817:18:40"},"returnParameters":{"id":18340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18341,"src":"3859:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18338,"name":"uint256","nodeType":"ElementaryTypeName","src":"3859:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3858:9:40"},"scope":18400,"src":"3790:78:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"83c04aa2","id":18348,"implemented":false,"kind":"function","modifiers":[],"name":"isDelegationActive","nameLocation":"3883:18:40","nodeType":"FunctionDefinition","parameters":{"id":18344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18343,"mutability":"mutable","name":"_tokenId","nameLocation":"3910:8:40","nodeType":"VariableDeclaration","scope":18348,"src":"3902:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18342,"name":"uint256","nodeType":"ElementaryTypeName","src":"3902:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3901:18:40"},"returnParameters":{"id":18347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18348,"src":"3943:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18345,"name":"bool","nodeType":"ElementaryTypeName","src":"3943:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3942:6:40"},"scope":18400,"src":"3874:75:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dc4dfd46","id":18355,"implemented":false,"kind":"function","modifiers":[],"name":"getVthoRewardPerBlock","nameLocation":"3964:21:40","nodeType":"FunctionDefinition","parameters":{"id":18351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18350,"mutability":"mutable","name":"_level","nameLocation":"3994:6:40","nodeType":"VariableDeclaration","scope":18355,"src":"3986:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18349,"name":"uint256","nodeType":"ElementaryTypeName","src":"3986:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3985:16:40"},"returnParameters":{"id":18354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18355,"src":"4025:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18352,"name":"uint256","nodeType":"ElementaryTypeName","src":"4025:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4024:9:40"},"scope":18400,"src":"3955:79:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ebf1fe14","id":18360,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegationPeriod","nameLocation":"4049:19:40","nodeType":"FunctionDefinition","parameters":{"id":18356,"nodeType":"ParameterList","parameters":[],"src":"4068:2:40"},"returnParameters":{"id":18359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18360,"src":"4094:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18357,"name":"uint256","nodeType":"ElementaryTypeName","src":"4094:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4093:9:40"},"scope":18400,"src":"4040:63:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a38e3941","id":18365,"implemented":false,"kind":"function","modifiers":[],"name":"getRewardsAccumulationEndBlock","nameLocation":"4118:30:40","nodeType":"FunctionDefinition","parameters":{"id":18361,"nodeType":"ParameterList","parameters":[],"src":"4148:2:40"},"returnParameters":{"id":18364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18365,"src":"4174:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18362,"name":"uint256","nodeType":"ElementaryTypeName","src":"4174:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4173:9:40"},"scope":18400,"src":"4109:74:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5be826c5","id":18372,"implemented":false,"kind":"function","modifiers":[],"name":"getRewardsAccumulationStartBlock","nameLocation":"4198:32:40","nodeType":"FunctionDefinition","parameters":{"id":18368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18367,"mutability":"mutable","name":"_tokenId","nameLocation":"4239:8:40","nodeType":"VariableDeclaration","scope":18372,"src":"4231:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18366,"name":"uint256","nodeType":"ElementaryTypeName","src":"4231:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4230:18:40"},"returnParameters":{"id":18371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18370,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18372,"src":"4272:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18369,"name":"uint256","nodeType":"ElementaryTypeName","src":"4272:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4271:9:40"},"scope":18400,"src":"4189:92:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a2a96ed4","id":18379,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegationEndBlock","nameLocation":"4296:21:40","nodeType":"FunctionDefinition","parameters":{"id":18375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18374,"mutability":"mutable","name":"_tokenId","nameLocation":"4326:8:40","nodeType":"VariableDeclaration","scope":18379,"src":"4318:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18373,"name":"uint256","nodeType":"ElementaryTypeName","src":"4318:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4317:18:40"},"returnParameters":{"id":18378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18377,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18379,"src":"4359:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18376,"name":"uint256","nodeType":"ElementaryTypeName","src":"4359:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4358:9:40"},"scope":18400,"src":"4287:81:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d57610d0","id":18386,"implemented":false,"kind":"function","modifiers":[],"name":"currentDelegationPeriodEndBlock","nameLocation":"4383:31:40","nodeType":"FunctionDefinition","parameters":{"id":18382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18381,"mutability":"mutable","name":"_tokenId","nameLocation":"4423:8:40","nodeType":"VariableDeclaration","scope":18386,"src":"4415:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18380,"name":"uint256","nodeType":"ElementaryTypeName","src":"4415:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4414:18:40"},"returnParameters":{"id":18385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18386,"src":"4456:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18383,"name":"uint256","nodeType":"ElementaryTypeName","src":"4456:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4455:9:40"},"scope":18400,"src":"4374:91:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"eabfa044","id":18399,"implemented":false,"kind":"function","modifiers":[],"name":"getDelegationDetails","nameLocation":"4480:20:40","nodeType":"FunctionDefinition","parameters":{"id":18389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18388,"mutability":"mutable","name":"_tokenId","nameLocation":"4518:8:40","nodeType":"VariableDeclaration","scope":18399,"src":"4510:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18387,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4500:32:40"},"returnParameters":{"id":18398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18391,"mutability":"mutable","name":"isDelegationActive","nameLocation":"4598:18:40","nodeType":"VariableDeclaration","scope":18399,"src":"4593:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18390,"name":"bool","nodeType":"ElementaryTypeName","src":"4593:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":18393,"mutability":"mutable","name":"claimableRewards","nameLocation":"4638:16:40","nodeType":"VariableDeclaration","scope":18399,"src":"4630:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18392,"name":"uint256","nodeType":"ElementaryTypeName","src":"4630:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18395,"mutability":"mutable","name":"rewardsAccumulationStartBlock","nameLocation":"4676:29:40","nodeType":"VariableDeclaration","scope":18399,"src":"4668:37:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18394,"name":"uint256","nodeType":"ElementaryTypeName","src":"4668:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18397,"mutability":"mutable","name":"delegationEndBlock","nameLocation":"4727:18:40","nodeType":"VariableDeclaration","scope":18399,"src":"4719:26:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18396,"name":"uint256","nodeType":"ElementaryTypeName","src":"4719:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4579:176:40"},"scope":18400,"src":"4471:285:40","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":18401,"src":"57:4701:40","usedErrors":[18160,18165,18170,18175,18180,18183,18190,18193,18196,18203,18210,18217,18220,18223,18230],"usedEvents":[18243,18250,18261,18266,18275,18284,18295]}],"src":"32:4727:40"},"id":40},"contracts/mocks/Stargate/interfaces/IStargateNFT.sol":{"ast":{"absolutePath":"contracts/mocks/Stargate/interfaces/IStargateNFT.sol","exportedSymbols":{"DataTypes":[17569],"IERC165":[2040],"IERC721":[1633],"IERC721Enumerable":[1665],"IStargateNFT":[18909],"ITokenAuction":[19387]},"id":18910,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":18402,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:41"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":18404,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18910,"sourceUnit":1634,"src":"57:75:41","symbolAliases":[{"foreign":{"id":18403,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1633,"src":"66:7:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","id":18406,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18910,"sourceUnit":1666,"src":"133:106:41","symbolAliases":[{"foreign":{"id":18405,"name":"IERC721Enumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1665,"src":"142:17:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":18408,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18910,"sourceUnit":2041,"src":"240:82:41","symbolAliases":[{"foreign":{"id":18407,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2040,"src":"249:7:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol","file":"../StargateNFT/libraries/DataTypes.sol","id":18410,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18910,"sourceUnit":17570,"src":"323:67:41","symbolAliases":[{"foreign":{"id":18409,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17569,"src":"332:9:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/interfaces/ITokenAuction.sol","file":"./ITokenAuction.sol","id":18412,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18910,"sourceUnit":19388,"src":"391:52:41","symbolAliases":[{"foreign":{"id":18411,"name":"ITokenAuction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19387,"src":"400:13:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18413,"name":"IERC165","nameLocations":["471:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":2040,"src":"471:7:41"},"id":18414,"nodeType":"InheritanceSpecifier","src":"471:7:41"},{"baseName":{"id":18415,"name":"IERC721","nameLocations":["480:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":1633,"src":"480:7:41"},"id":18416,"nodeType":"InheritanceSpecifier","src":"480:7:41"},{"baseName":{"id":18417,"name":"IERC721Enumerable","nameLocations":["489:17:41"],"nodeType":"IdentifierPath","referencedDeclaration":1665,"src":"489:17:41"},"id":18418,"nodeType":"InheritanceSpecifier","src":"489:17:41"}],"canonicalName":"IStargateNFT","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":18909,"linearizedBaseContracts":[18909,1665,1633,2040],"name":"IStargateNFT","nameLocation":"455:12:41","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":18419,"nodeType":"StructuredDocumentation","src":"569:411:41","text":" @notice Emitted when a token level is updated\n @param levelId The ID of the level that was updated\n @param name The new name of the level\n @param isX The new X status\n @param maturityBlocks The new maturity period in blocks\n @param scaledRewardFactor The new scaled reward multiplier\n @param vetAmountRequiredToStake The new VET amount required for staking"},"eventSelector":"f100d70d7533f8cc876180c07c9da3b2fb3dd79fbcd54884d6264774f6bd9a8b","id":18433,"name":"LevelUpdated","nameLocation":"991:12:41","nodeType":"EventDefinition","parameters":{"id":18432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18421,"indexed":true,"mutability":"mutable","name":"levelId","nameLocation":"1027:7:41","nodeType":"VariableDeclaration","scope":18433,"src":"1013:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18420,"name":"uint8","nodeType":"ElementaryTypeName","src":"1013:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18423,"indexed":false,"mutability":"mutable","name":"name","nameLocation":"1051:4:41","nodeType":"VariableDeclaration","scope":18433,"src":"1044:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18422,"name":"string","nodeType":"ElementaryTypeName","src":"1044:6:41","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18425,"indexed":false,"mutability":"mutable","name":"isX","nameLocation":"1070:3:41","nodeType":"VariableDeclaration","scope":18433,"src":"1065:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18424,"name":"bool","nodeType":"ElementaryTypeName","src":"1065:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":18427,"indexed":false,"mutability":"mutable","name":"maturityBlocks","nameLocation":"1090:14:41","nodeType":"VariableDeclaration","scope":18433,"src":"1083:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":18426,"name":"uint64","nodeType":"ElementaryTypeName","src":"1083:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":18429,"indexed":false,"mutability":"mutable","name":"scaledRewardFactor","nameLocation":"1121:18:41","nodeType":"VariableDeclaration","scope":18433,"src":"1114:25:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":18428,"name":"uint64","nodeType":"ElementaryTypeName","src":"1114:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":18431,"indexed":false,"mutability":"mutable","name":"vetAmountRequiredToStake","nameLocation":"1157:24:41","nodeType":"VariableDeclaration","scope":18433,"src":"1149:32:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18430,"name":"uint256","nodeType":"ElementaryTypeName","src":"1149:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1003:184:41"},"src":"985:203:41"},{"anonymous":false,"documentation":{"id":18434,"nodeType":"StructuredDocumentation","src":"1194:280:41","text":" @notice Emitted when the circulating supply of a token level is updated\n @param levelId The ID of the level supply that was updated\n @param oldCirculatingSupply The old circulating supply\n @param newCirculatingSupply The new circulating supply"},"eventSelector":"2d3ae9d6214117349be592e75147c4a63aa26af4abdf41364cab8409def6c55f","id":18442,"name":"LevelCirculatingSupplyUpdated","nameLocation":"1485:29:41","nodeType":"EventDefinition","parameters":{"id":18441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18436,"indexed":true,"mutability":"mutable","name":"levelId","nameLocation":"1538:7:41","nodeType":"VariableDeclaration","scope":18442,"src":"1524:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18435,"name":"uint8","nodeType":"ElementaryTypeName","src":"1524:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18438,"indexed":false,"mutability":"mutable","name":"oldCirculatingSupply","nameLocation":"1563:20:41","nodeType":"VariableDeclaration","scope":18442,"src":"1555:28:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":18437,"name":"uint208","nodeType":"ElementaryTypeName","src":"1555:7:41","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"},{"constant":false,"id":18440,"indexed":false,"mutability":"mutable","name":"newCirculatingSupply","nameLocation":"1601:20:41","nodeType":"VariableDeclaration","scope":18442,"src":"1593:28:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":18439,"name":"uint208","nodeType":"ElementaryTypeName","src":"1593:7:41","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"1514:113:41"},"src":"1479:149:41"},{"anonymous":false,"documentation":{"id":18443,"nodeType":"StructuredDocumentation","src":"1634:204:41","text":" @notice Emitted when the cap of a token level is updated\n @param levelId The ID of the level cap that was updated\n @param oldCap The old cap\n @param newCap The new cap"},"eventSelector":"a8fea641f11db999cf8191284c4fa96dc28a20a81368b7190b9fd772d2d2c153","id":18451,"name":"LevelCapUpdated","nameLocation":"1849:15:41","nodeType":"EventDefinition","parameters":{"id":18450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18445,"indexed":true,"mutability":"mutable","name":"levelId","nameLocation":"1879:7:41","nodeType":"VariableDeclaration","scope":18451,"src":"1865:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18444,"name":"uint8","nodeType":"ElementaryTypeName","src":"1865:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18447,"indexed":false,"mutability":"mutable","name":"oldCap","nameLocation":"1895:6:41","nodeType":"VariableDeclaration","scope":18451,"src":"1888:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18446,"name":"uint32","nodeType":"ElementaryTypeName","src":"1888:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":18449,"indexed":false,"mutability":"mutable","name":"newCap","nameLocation":"1910:6:41","nodeType":"VariableDeclaration","scope":18451,"src":"1903:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18448,"name":"uint32","nodeType":"ElementaryTypeName","src":"1903:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1864:53:41"},"src":"1843:75:41"},{"anonymous":false,"documentation":{"id":18452,"nodeType":"StructuredDocumentation","src":"1924:306:41","text":" @notice Emitted when the boost price per block of a token level is updated\n @param levelId The ID of the level boost price per block that was updated\n @param oldBoostPricePerBlock The old boost price per block\n @param newBoostPricePerBlock The new boost price per block"},"eventSelector":"87623ef67665e7508956ddb5ddaaafe677f92446bbe364db9e4c1289d6cdec4e","id":18460,"name":"LevelBoostPricePerBlockUpdated","nameLocation":"2241:30:41","nodeType":"EventDefinition","parameters":{"id":18459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18454,"indexed":true,"mutability":"mutable","name":"levelId","nameLocation":"2295:7:41","nodeType":"VariableDeclaration","scope":18460,"src":"2281:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18453,"name":"uint8","nodeType":"ElementaryTypeName","src":"2281:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18456,"indexed":false,"mutability":"mutable","name":"oldBoostPricePerBlock","nameLocation":"2320:21:41","nodeType":"VariableDeclaration","scope":18460,"src":"2312:29:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18455,"name":"uint256","nodeType":"ElementaryTypeName","src":"2312:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18458,"indexed":false,"mutability":"mutable","name":"newBoostPricePerBlock","nameLocation":"2359:21:41","nodeType":"VariableDeclaration","scope":18460,"src":"2351:29:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18457,"name":"uint256","nodeType":"ElementaryTypeName","src":"2351:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2271:115:41"},"src":"2235:152:41"},{"anonymous":false,"documentation":{"id":18461,"nodeType":"StructuredDocumentation","src":"2393:383:41","text":" @notice Emitted when an NFT is minted\n @param owner The address that owns the newly minted NFT\n @param levelId The level ID of the newly minted NFT\n @param migrated Whether the token was migrated from legacy nodes contract\n @param tokenId The ID of the newly minted NFT\n @param vetAmountStaked The amount of VET staked to mint the NFT"},"eventSelector":"77da7e47d62c495735ba6de40ed9f4f0cf78d6a35e8b7e61b87145f4c91ee0f7","id":18473,"name":"TokenMinted","nameLocation":"2787:11:41","nodeType":"EventDefinition","parameters":{"id":18472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18463,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"2824:5:41","nodeType":"VariableDeclaration","scope":18473,"src":"2808:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18462,"name":"address","nodeType":"ElementaryTypeName","src":"2808:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18465,"indexed":true,"mutability":"mutable","name":"levelId","nameLocation":"2853:7:41","nodeType":"VariableDeclaration","scope":18473,"src":"2839:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18464,"name":"uint8","nodeType":"ElementaryTypeName","src":"2839:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18467,"indexed":true,"mutability":"mutable","name":"migrated","nameLocation":"2883:8:41","nodeType":"VariableDeclaration","scope":18473,"src":"2870:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18466,"name":"bool","nodeType":"ElementaryTypeName","src":"2870:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":18469,"indexed":false,"mutability":"mutable","name":"tokenId","nameLocation":"2909:7:41","nodeType":"VariableDeclaration","scope":18473,"src":"2901:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18468,"name":"uint256","nodeType":"ElementaryTypeName","src":"2901:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18471,"indexed":false,"mutability":"mutable","name":"vetAmountStaked","nameLocation":"2934:15:41","nodeType":"VariableDeclaration","scope":18473,"src":"2926:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18470,"name":"uint256","nodeType":"ElementaryTypeName","src":"2926:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2798:157:41"},"src":"2781:175:41"},{"anonymous":false,"documentation":{"id":18474,"nodeType":"StructuredDocumentation","src":"2962:302:41","text":" @notice Emitted when an NFT is burned\n @param owner The address that owns the newly burned NFT\n @param levelId The level ID of the newly burned NFT\n @param tokenId The ID of the newly burned NFT\n @param vetAmountStaked The amount of VET staked to burn the NFT"},"eventSelector":"355103f9b8153e2d8052446029758fac8de69ef88551f67429b4873d21b2cd6c","id":18484,"name":"TokenBurned","nameLocation":"3275:11:41","nodeType":"EventDefinition","parameters":{"id":18483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18476,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"3312:5:41","nodeType":"VariableDeclaration","scope":18484,"src":"3296:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18475,"name":"address","nodeType":"ElementaryTypeName","src":"3296:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18478,"indexed":true,"mutability":"mutable","name":"levelId","nameLocation":"3341:7:41","nodeType":"VariableDeclaration","scope":18484,"src":"3327:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18477,"name":"uint8","nodeType":"ElementaryTypeName","src":"3327:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18480,"indexed":false,"mutability":"mutable","name":"tokenId","nameLocation":"3366:7:41","nodeType":"VariableDeclaration","scope":18484,"src":"3358:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18479,"name":"uint256","nodeType":"ElementaryTypeName","src":"3358:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18482,"indexed":false,"mutability":"mutable","name":"vetAmountStaked","nameLocation":"3391:15:41","nodeType":"VariableDeclaration","scope":18484,"src":"3383:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18481,"name":"uint256","nodeType":"ElementaryTypeName","src":"3383:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3286:126:41"},"src":"3269:144:41"},{"anonymous":false,"documentation":{"id":18485,"nodeType":"StructuredDocumentation","src":"3419:170:41","text":" @notice Emitted when the base URI for the token metadata is updated\n @param oldBaseURI The old base URI\n @param newBaseURI The new base URI"},"eventSelector":"309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1","id":18491,"name":"BaseURIUpdated","nameLocation":"3600:14:41","nodeType":"EventDefinition","parameters":{"id":18490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18487,"indexed":false,"mutability":"mutable","name":"oldBaseURI","nameLocation":"3622:10:41","nodeType":"VariableDeclaration","scope":18491,"src":"3615:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18486,"name":"string","nodeType":"ElementaryTypeName","src":"3615:6:41","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18489,"indexed":false,"mutability":"mutable","name":"newBaseURI","nameLocation":"3641:10:41","nodeType":"VariableDeclaration","scope":18491,"src":"3634:17:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18488,"name":"string","nodeType":"ElementaryTypeName","src":"3634:6:41","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3614:38:41"},"src":"3594:59:41"},{"anonymous":false,"documentation":{"id":18492,"nodeType":"StructuredDocumentation","src":"3659:123:41","text":" @notice Emitted when a whitelist entry is removed\n @param owner The address of the whitelist entry"},"eventSelector":"f5a17fc6cae0f780fd428d880fbc80162c6bc3fa0973463efcd4ee95067b382c","id":18496,"name":"WhitelistEntryRemoved","nameLocation":"3793:21:41","nodeType":"EventDefinition","parameters":{"id":18495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18494,"indexed":false,"mutability":"mutable","name":"owner","nameLocation":"3823:5:41","nodeType":"VariableDeclaration","scope":18496,"src":"3815:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18493,"name":"address","nodeType":"ElementaryTypeName","src":"3815:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3814:15:41"},"src":"3787:43:41"},{"anonymous":false,"documentation":{"id":18497,"nodeType":"StructuredDocumentation","src":"3836:166:41","text":" @notice Emitted when a token manager is added to a token\n @param tokenId The ID of the token\n @param manager The address of the manager"},"eventSelector":"4c34999c3933469b9ae5b27867157f18b49db2bab5549f03a1ee6145bc731e28","id":18503,"name":"TokenManagerAdded","nameLocation":"4013:17:41","nodeType":"EventDefinition","parameters":{"id":18502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18499,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"4047:7:41","nodeType":"VariableDeclaration","scope":18503,"src":"4031:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18498,"name":"uint256","nodeType":"ElementaryTypeName","src":"4031:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18501,"indexed":true,"mutability":"mutable","name":"manager","nameLocation":"4072:7:41","nodeType":"VariableDeclaration","scope":18503,"src":"4056:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18500,"name":"address","nodeType":"ElementaryTypeName","src":"4056:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4030:50:41"},"src":"4007:74:41"},{"anonymous":false,"documentation":{"id":18504,"nodeType":"StructuredDocumentation","src":"4087:170:41","text":" @notice Emitted when a token manager is removed from a token\n @param tokenId The ID of the token\n @param manager The address of the manager"},"eventSelector":"2dea8fdc0115667de4800362c74206112df0a3a139fa2c217218b27a5da20259","id":18510,"name":"TokenManagerRemoved","nameLocation":"4268:19:41","nodeType":"EventDefinition","parameters":{"id":18509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18506,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"4304:7:41","nodeType":"VariableDeclaration","scope":18510,"src":"4288:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18505,"name":"uint256","nodeType":"ElementaryTypeName","src":"4288:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18508,"indexed":true,"mutability":"mutable","name":"manager","nameLocation":"4329:7:41","nodeType":"VariableDeclaration","scope":18510,"src":"4313:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18507,"name":"address","nodeType":"ElementaryTypeName","src":"4313:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4287:50:41"},"src":"4262:76:41"},{"anonymous":false,"documentation":{"id":18511,"nodeType":"StructuredDocumentation","src":"4538:367:41","text":" @notice Emitted when VTHO rewards are claimed for a token\n @dev Not emitted anymore in V3, since we don't generate VTHO anymore\n @param owner The address that claimed the rewards\n @param tokenId The ID of the token for which rewards were claimed\n @param amount The amount of VTHO rewards claimed\n @dev Deprecated in V3"},"eventSelector":"fd607be866b63b8e815d2012454b3085c5d64f7c7a461ff7fd9c14a8860bf531","id":18519,"name":"BaseVTHORewardsClaimed","nameLocation":"4916:22:41","nodeType":"EventDefinition","parameters":{"id":18518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18513,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"4955:5:41","nodeType":"VariableDeclaration","scope":18519,"src":"4939:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18512,"name":"address","nodeType":"ElementaryTypeName","src":"4939:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18515,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"4978:7:41","nodeType":"VariableDeclaration","scope":18519,"src":"4962:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18514,"name":"uint256","nodeType":"ElementaryTypeName","src":"4962:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18517,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4995:6:41","nodeType":"VariableDeclaration","scope":18519,"src":"4987:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18516,"name":"uint256","nodeType":"ElementaryTypeName","src":"4987:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4938:64:41"},"src":"4910:93:41"},{"anonymous":false,"documentation":{"id":18520,"nodeType":"StructuredDocumentation","src":"5009:336:41","text":" @notice Emitted when the VTHO generation end timestamp is updated\n @dev Not emitted anymore in V3, since there is no need to set this value anymore\n @param oldVthoGenerationEndTimestamp The old VTHO generation end timestamp\n @param newVthoGenerationEndTimestamp The new VTHO generation end timestamp"},"eventSelector":"1b3d245cb52f4d9a4ae9f6bb387f728341fac7f6f39c3ef814628577545f722f","id":18526,"name":"VthoGenerationEndTimestampSet","nameLocation":"5356:29:41","nodeType":"EventDefinition","parameters":{"id":18525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18522,"indexed":false,"mutability":"mutable","name":"oldVthoGenerationEndTimestamp","nameLocation":"5402:29:41","nodeType":"VariableDeclaration","scope":18526,"src":"5395:36:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":18521,"name":"uint48","nodeType":"ElementaryTypeName","src":"5395:6:41","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":18524,"indexed":false,"mutability":"mutable","name":"newVthoGenerationEndTimestamp","nameLocation":"5448:29:41","nodeType":"VariableDeclaration","scope":18526,"src":"5441:36:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":18523,"name":"uint48","nodeType":"ElementaryTypeName","src":"5441:6:41","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"5385:98:41"},"src":"5350:134:41"},{"functionSelector":"54fd4d50","id":18531,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"5558:7:41","nodeType":"FunctionDefinition","parameters":{"id":18527,"nodeType":"ParameterList","parameters":[],"src":"5565:2:41"},"returnParameters":{"id":18530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18529,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18531,"src":"5591:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18528,"name":"uint256","nodeType":"ElementaryTypeName","src":"5591:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5590:9:41"},"scope":18909,"src":"5549:51:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18532,"nodeType":"StructuredDocumentation","src":"5641:274:41","text":"@notice Callback function to ERC721Upgradeable._safeMint, called by StargateNFTMinting.stake\n @dev Only the StargateNFT contract can call this function\n @param to - the address to mint the token to\n @param tokenId - the token ID of the token to mint"},"functionSelector":"7aee0158","id":18539,"implemented":false,"kind":"function","modifiers":[],"name":"_safeMintCallback","nameLocation":"5929:17:41","nodeType":"FunctionDefinition","parameters":{"id":18537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18534,"mutability":"mutable","name":"to","nameLocation":"5955:2:41","nodeType":"VariableDeclaration","scope":18539,"src":"5947:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18533,"name":"address","nodeType":"ElementaryTypeName","src":"5947:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18536,"mutability":"mutable","name":"tokenId","nameLocation":"5967:7:41","nodeType":"VariableDeclaration","scope":18539,"src":"5959:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18535,"name":"uint256","nodeType":"ElementaryTypeName","src":"5959:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5946:29:41"},"returnParameters":{"id":18538,"nodeType":"ParameterList","parameters":[],"src":"5984:0:41"},"scope":18909,"src":"5920:65:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18540,"nodeType":"StructuredDocumentation","src":"5991:219:41","text":"@notice Callback function to ERC721Upgradeable._burn, called by StargateNFTMinting.unstake\n @dev Only the StargateNFT contract can call this function\n @param tokenId - the token ID of the token to burn"},"functionSelector":"84e66840","id":18545,"implemented":false,"kind":"function","modifiers":[],"name":"_burnCallback","nameLocation":"6224:13:41","nodeType":"FunctionDefinition","parameters":{"id":18543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18542,"mutability":"mutable","name":"tokenId","nameLocation":"6246:7:41","nodeType":"VariableDeclaration","scope":18545,"src":"6238:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18541,"name":"uint256","nodeType":"ElementaryTypeName","src":"6238:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6237:17:41"},"returnParameters":{"id":18544,"nodeType":"ParameterList","parameters":[],"src":"6263:0:41"},"scope":18909,"src":"6215:49:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18546,"nodeType":"StructuredDocumentation","src":"6313:155:41","text":"@notice Pauses the StargateNFT contract\n @dev Only the PAUSER_ROLE can call this function\n @dev Pausing the contract will prevent minting"},"functionSelector":"8456cb59","id":18549,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"6482:5:41","nodeType":"FunctionDefinition","parameters":{"id":18547,"nodeType":"ParameterList","parameters":[],"src":"6487:2:41"},"returnParameters":{"id":18548,"nodeType":"ParameterList","parameters":[],"src":"6498:0:41"},"scope":18909,"src":"6473:26:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18550,"nodeType":"StructuredDocumentation","src":"6505:102:41","text":"@notice Unpauses the StargateNFT contract\n @dev Only the PAUSER_ROLE can call this function"},"functionSelector":"3f4ba83a","id":18553,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"6621:7:41","nodeType":"FunctionDefinition","parameters":{"id":18551,"nodeType":"ParameterList","parameters":[],"src":"6628:2:41"},"returnParameters":{"id":18552,"nodeType":"ParameterList","parameters":[],"src":"6639:0:41"},"scope":18909,"src":"6612:28:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18554,"nodeType":"StructuredDocumentation","src":"6687:432:41","text":"@notice Adds a new token level\n @param _levelAndSupply - The level and supply to add, see {DataTypes.LevelAndSupply}\n @dev Only the LEVEL_OPERATOR_ROLE can call this function\n Check the {Levels.addLevel} library function for more details\n Emits a {IStargateNFT.LevelUpdated} event\n Emits a {IStargateNFT.LevelCirculatingSupplyUpdated} event\n Emits a {IStargateNFT.LevelCapUpdated} event"},"functionSelector":"e2540d8a","id":18560,"implemented":false,"kind":"function","modifiers":[],"name":"addLevel","nameLocation":"7133:8:41","nodeType":"FunctionDefinition","parameters":{"id":18558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18557,"mutability":"mutable","name":"_levelAndSupply","nameLocation":"7174:15:41","nodeType":"VariableDeclaration","scope":18560,"src":"7142:47:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LevelAndSupply_$17536_memory_ptr","typeString":"struct DataTypes.LevelAndSupply"},"typeName":{"id":18556,"nodeType":"UserDefinedTypeName","pathNode":{"id":18555,"name":"DataTypes.LevelAndSupply","nameLocations":["7142:9:41","7152:14:41"],"nodeType":"IdentifierPath","referencedDeclaration":17536,"src":"7142:24:41"},"referencedDeclaration":17536,"src":"7142:24:41","typeDescriptions":{"typeIdentifier":"t_struct$_LevelAndSupply_$17536_storage_ptr","typeString":"struct DataTypes.LevelAndSupply"}},"visibility":"internal"}],"src":"7141:49:41"},"returnParameters":{"id":18559,"nodeType":"ParameterList","parameters":[],"src":"7199:0:41"},"scope":18909,"src":"7124:76:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18561,"nodeType":"StructuredDocumentation","src":"7206:114:41","text":"@notice Returns a list of all token level spec IDs\n @return levelIds - The list of token level spec IDs"},"functionSelector":"724b4fcf","id":18567,"implemented":false,"kind":"function","modifiers":[],"name":"getLevelIds","nameLocation":"7334:11:41","nodeType":"FunctionDefinition","parameters":{"id":18562,"nodeType":"ParameterList","parameters":[],"src":"7345:2:41"},"returnParameters":{"id":18566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18565,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18567,"src":"7371:14:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":18563,"name":"uint8","nodeType":"ElementaryTypeName","src":"7371:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":18564,"nodeType":"ArrayTypeName","src":"7371:7:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"7370:16:41"},"scope":18909,"src":"7325:62:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18568,"nodeType":"StructuredDocumentation","src":"7393:169:41","text":"@notice Returns a token level spec for a given level ID\n @param _levelId The ID of the token level spec to return\n @return Level - The token level spec"},"functionSelector":"6d779991","id":18576,"implemented":false,"kind":"function","modifiers":[],"name":"getLevel","nameLocation":"7576:8:41","nodeType":"FunctionDefinition","parameters":{"id":18571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18570,"mutability":"mutable","name":"_levelId","nameLocation":"7591:8:41","nodeType":"VariableDeclaration","scope":18576,"src":"7585:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18569,"name":"uint8","nodeType":"ElementaryTypeName","src":"7585:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"7584:16:41"},"returnParameters":{"id":18575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18574,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18576,"src":"7624:22:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Level_$17528_memory_ptr","typeString":"struct DataTypes.Level"},"typeName":{"id":18573,"nodeType":"UserDefinedTypeName","pathNode":{"id":18572,"name":"DataTypes.Level","nameLocations":["7624:9:41","7634:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":17528,"src":"7624:15:41"},"referencedDeclaration":17528,"src":"7624:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_Level_$17528_storage_ptr","typeString":"struct DataTypes.Level"}},"visibility":"internal"}],"src":"7623:24:41"},"scope":18909,"src":"7567:81:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18577,"nodeType":"StructuredDocumentation","src":"7654:106:41","text":"@notice Returns a list of all token level specs\n @return levels - The list of token level specs"},"functionSelector":"0c394a60","id":18584,"implemented":false,"kind":"function","modifiers":[],"name":"getLevels","nameLocation":"7774:9:41","nodeType":"FunctionDefinition","parameters":{"id":18578,"nodeType":"ParameterList","parameters":[],"src":"7783:2:41"},"returnParameters":{"id":18583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18584,"src":"7809:24:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Level_$17528_memory_ptr_$dyn_memory_ptr","typeString":"struct DataTypes.Level[]"},"typeName":{"baseType":{"id":18580,"nodeType":"UserDefinedTypeName","pathNode":{"id":18579,"name":"DataTypes.Level","nameLocations":["7809:9:41","7819:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":17528,"src":"7809:15:41"},"referencedDeclaration":17528,"src":"7809:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_Level_$17528_storage_ptr","typeString":"struct DataTypes.Level"}},"id":18581,"nodeType":"ArrayTypeName","src":"7809:17:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Level_$17528_storage_$dyn_storage_ptr","typeString":"struct DataTypes.Level[]"}},"visibility":"internal"}],"src":"7808:26:41"},"scope":18909,"src":"7765:70:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18585,"nodeType":"StructuredDocumentation","src":"7841:166:41","text":"@notice Returns the circulating supply for all levels\n @return circulatingSupplies An array of circulating supply values for all levels, sorted by level id"},"functionSelector":"29f7540b","id":18591,"implemented":false,"kind":"function","modifiers":[],"name":"getLevelsCirculatingSupplies","nameLocation":"8021:28:41","nodeType":"FunctionDefinition","parameters":{"id":18586,"nodeType":"ParameterList","parameters":[],"src":"8049:2:41"},"returnParameters":{"id":18590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18589,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18591,"src":"8075:16:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint208_$dyn_memory_ptr","typeString":"uint208[]"},"typeName":{"baseType":{"id":18587,"name":"uint208","nodeType":"ElementaryTypeName","src":"8075:7:41","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"id":18588,"nodeType":"ArrayTypeName","src":"8075:9:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint208_$dyn_storage_ptr","typeString":"uint208[]"}},"visibility":"internal"}],"src":"8074:18:41"},"scope":18909,"src":"8012:81:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18592,"nodeType":"StructuredDocumentation","src":"8099:264:41","text":"@notice Returns the circulating supply and cap for a given token level\n @param _levelId The ID of the token level to get supply data for\n @return circulating The circulating supply of the token level\n @return cap The cap of the token level"},"functionSelector":"0c0f1c84","id":18601,"implemented":false,"kind":"function","modifiers":[],"name":"getLevelSupply","nameLocation":"8377:14:41","nodeType":"FunctionDefinition","parameters":{"id":18595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18594,"mutability":"mutable","name":"_levelId","nameLocation":"8398:8:41","nodeType":"VariableDeclaration","scope":18601,"src":"8392:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18593,"name":"uint8","nodeType":"ElementaryTypeName","src":"8392:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"8391:16:41"},"returnParameters":{"id":18600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18597,"mutability":"mutable","name":"circulating","nameLocation":"8439:11:41","nodeType":"VariableDeclaration","scope":18601,"src":"8431:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":18596,"name":"uint208","nodeType":"ElementaryTypeName","src":"8431:7:41","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"},{"constant":false,"id":18599,"mutability":"mutable","name":"cap","nameLocation":"8459:3:41","nodeType":"VariableDeclaration","scope":18601,"src":"8452:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":18598,"name":"uint32","nodeType":"ElementaryTypeName","src":"8452:6:41","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8430:33:41"},"scope":18909,"src":"8368:96:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18602,"nodeType":"StructuredDocumentation","src":"8470:306:41","text":"@notice Returns the circulating supply for a given level at a specific block\n @param _levelId The ID of the level to get supply data for\n @param _blockNumber The block number to get the supply at\n @return circulatingSupply The circulating supply of the level at the specified block"},"functionSelector":"aef0c8ee","id":18611,"implemented":false,"kind":"function","modifiers":[],"name":"getCirculatingSupplyAtBlock","nameLocation":"8790:27:41","nodeType":"FunctionDefinition","parameters":{"id":18607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18604,"mutability":"mutable","name":"_levelId","nameLocation":"8833:8:41","nodeType":"VariableDeclaration","scope":18611,"src":"8827:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18603,"name":"uint8","nodeType":"ElementaryTypeName","src":"8827:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18606,"mutability":"mutable","name":"_blockNumber","nameLocation":"8858:12:41","nodeType":"VariableDeclaration","scope":18611,"src":"8851:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":18605,"name":"uint48","nodeType":"ElementaryTypeName","src":"8851:6:41","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8817:59:41"},"returnParameters":{"id":18610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18611,"src":"8900:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":18608,"name":"uint208","nodeType":"ElementaryTypeName","src":"8900:7:41","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"8899:9:41"},"scope":18909,"src":"8781:128:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18612,"nodeType":"StructuredDocumentation","src":"8915:251:41","text":"@notice Returns the circulating supply for all levels at a certain block\n @param _blockNumber The block number to get the supply at\n @return circulatingSupplies An array of circulating supply values for all levels, sorted by level id"},"functionSelector":"2c5811da","id":18620,"implemented":false,"kind":"function","modifiers":[],"name":"getLevelsCirculatingSuppliesAtBlock","nameLocation":"9180:35:41","nodeType":"FunctionDefinition","parameters":{"id":18615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18614,"mutability":"mutable","name":"_blockNumber","nameLocation":"9232:12:41","nodeType":"VariableDeclaration","scope":18620,"src":"9225:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":18613,"name":"uint48","nodeType":"ElementaryTypeName","src":"9225:6:41","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"9215:35:41"},"returnParameters":{"id":18619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18618,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18620,"src":"9274:16:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint208_$dyn_memory_ptr","typeString":"uint208[]"},"typeName":{"baseType":{"id":18616,"name":"uint208","nodeType":"ElementaryTypeName","src":"9274:7:41","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"id":18617,"nodeType":"ArrayTypeName","src":"9274:9:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint208_$dyn_storage_ptr","typeString":"uint208[]"}},"visibility":"internal"}],"src":"9273:18:41"},"scope":18909,"src":"9171:121:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18621,"nodeType":"StructuredDocumentation","src":"9347:185:41","text":"@notice Get the latest token id that was minted\n @dev Ids start from the total supply of the legacy contrat\n @return currentTokenId the latest token id that was minted"},"functionSelector":"56189236","id":18626,"implemented":false,"kind":"function","modifiers":[],"name":"getCurrentTokenId","nameLocation":"9546:17:41","nodeType":"FunctionDefinition","parameters":{"id":18622,"nodeType":"ParameterList","parameters":[],"src":"9563:2:41"},"returnParameters":{"id":18625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18624,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18626,"src":"9589:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18623,"name":"uint256","nodeType":"ElementaryTypeName","src":"9589:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9588:9:41"},"scope":18909,"src":"9537:61:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18627,"nodeType":"StructuredDocumentation","src":"9604:131:41","text":"@notice Returns a token for a given token ID\n @param _tokenId The ID of the token to get\n @return token The token"},"functionSelector":"e4b50cb8","id":18635,"implemented":false,"kind":"function","modifiers":[],"name":"getToken","nameLocation":"9749:8:41","nodeType":"FunctionDefinition","parameters":{"id":18630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18629,"mutability":"mutable","name":"_tokenId","nameLocation":"9766:8:41","nodeType":"VariableDeclaration","scope":18635,"src":"9758:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18628,"name":"uint256","nodeType":"ElementaryTypeName","src":"9758:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9757:18:41"},"returnParameters":{"id":18634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18635,"src":"9799:22:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Token_$17547_memory_ptr","typeString":"struct DataTypes.Token"},"typeName":{"id":18632,"nodeType":"UserDefinedTypeName","pathNode":{"id":18631,"name":"DataTypes.Token","nameLocations":["9799:9:41","9809:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":17547,"src":"9799:15:41"},"referencedDeclaration":17547,"src":"9799:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_Token_$17547_storage_ptr","typeString":"struct DataTypes.Token"}},"visibility":"internal"}],"src":"9798:24:41"},"scope":18909,"src":"9740:83:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18636,"nodeType":"StructuredDocumentation","src":"9829:149:41","text":"@notice Returns the level ID of a given token\n @param _tokenId - the token ID of the NFT\n @return levelId - the level ID of the NFT"},"functionSelector":"d011645c","id":18643,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenLevel","nameLocation":"9992:13:41","nodeType":"FunctionDefinition","parameters":{"id":18639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18638,"mutability":"mutable","name":"_tokenId","nameLocation":"10014:8:41","nodeType":"VariableDeclaration","scope":18643,"src":"10006:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18637,"name":"uint256","nodeType":"ElementaryTypeName","src":"10006:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10005:18:41"},"returnParameters":{"id":18642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18641,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18643,"src":"10047:5:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18640,"name":"uint8","nodeType":"ElementaryTypeName","src":"10047:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"10046:7:41"},"scope":18909,"src":"9983:71:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18644,"nodeType":"StructuredDocumentation","src":"10060:165:41","text":"@notice Returns the tokens owned by an address\n @param _owner The address to get tokens for\n @return tokens An array of tokens owned by the address"},"functionSelector":"ea66aeb3","id":18653,"implemented":false,"kind":"function","modifiers":[],"name":"tokensOwnedBy","nameLocation":"10239:13:41","nodeType":"FunctionDefinition","parameters":{"id":18647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18646,"mutability":"mutable","name":"_owner","nameLocation":"10261:6:41","nodeType":"VariableDeclaration","scope":18653,"src":"10253:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18645,"name":"address","nodeType":"ElementaryTypeName","src":"10253:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10252:16:41"},"returnParameters":{"id":18652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18651,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18653,"src":"10292:24:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr","typeString":"struct DataTypes.Token[]"},"typeName":{"baseType":{"id":18649,"nodeType":"UserDefinedTypeName","pathNode":{"id":18648,"name":"DataTypes.Token","nameLocations":["10292:9:41","10302:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":17547,"src":"10292:15:41"},"referencedDeclaration":17547,"src":"10292:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_Token_$17547_storage_ptr","typeString":"struct DataTypes.Token"}},"id":18650,"nodeType":"ArrayTypeName","src":"10292:17:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_storage_$dyn_storage_ptr","typeString":"struct DataTypes.Token[]"}},"visibility":"internal"}],"src":"10291:26:41"},"scope":18909,"src":"10230:88:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18654,"nodeType":"StructuredDocumentation","src":"10324:183:41","text":"@notice Returns the total VET staked by an address\n @param _owner The address to get total VET staked for\n @return totalVetStaked The total VET staked by the address"},"functionSelector":"a780f539","id":18661,"implemented":false,"kind":"function","modifiers":[],"name":"ownerTotalVetStaked","nameLocation":"10521:19:41","nodeType":"FunctionDefinition","parameters":{"id":18657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18656,"mutability":"mutable","name":"_owner","nameLocation":"10549:6:41","nodeType":"VariableDeclaration","scope":18661,"src":"10541:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18655,"name":"address","nodeType":"ElementaryTypeName","src":"10541:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10540:16:41"},"returnParameters":{"id":18660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18659,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18661,"src":"10580:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18658,"name":"uint256","nodeType":"ElementaryTypeName","src":"10580:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10579:9:41"},"scope":18909,"src":"10512:77:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18662,"nodeType":"StructuredDocumentation","src":"10595:172:41","text":"@notice Returns a list of token IDs for a given owner\n @param _owner The address of the owner to get token IDs for\n @return tokenIds The list of token IDs"},"functionSelector":"e764c7c4","id":18670,"implemented":false,"kind":"function","modifiers":[],"name":"idsOwnedBy","nameLocation":"10781:10:41","nodeType":"FunctionDefinition","parameters":{"id":18665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18664,"mutability":"mutable","name":"_owner","nameLocation":"10800:6:41","nodeType":"VariableDeclaration","scope":18670,"src":"10792:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18663,"name":"address","nodeType":"ElementaryTypeName","src":"10792:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10791:16:41"},"returnParameters":{"id":18669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18670,"src":"10831:16:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18666,"name":"uint256","nodeType":"ElementaryTypeName","src":"10831:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18667,"nodeType":"ArrayTypeName","src":"10831:9:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"10830:18:41"},"scope":18909,"src":"10772:77:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18671,"nodeType":"StructuredDocumentation","src":"10855:153:41","text":"@notice Returns true if a token exists\n @param _tokenId The ID of the token to check\n @return True if the token exists, false otherwise"},"functionSelector":"00923f9e","id":18678,"implemented":false,"kind":"function","modifiers":[],"name":"tokenExists","nameLocation":"11022:11:41","nodeType":"FunctionDefinition","parameters":{"id":18674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18673,"mutability":"mutable","name":"_tokenId","nameLocation":"11042:8:41","nodeType":"VariableDeclaration","scope":18678,"src":"11034:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18672,"name":"uint256","nodeType":"ElementaryTypeName","src":"11034:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11033:18:41"},"returnParameters":{"id":18677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18678,"src":"11075:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18675,"name":"bool","nodeType":"ElementaryTypeName","src":"11075:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11074:6:41"},"scope":18909,"src":"11013:68:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18679,"nodeType":"StructuredDocumentation","src":"11141:228:41","text":"@notice Boosts the maturity period of a token\n @dev This can only be called by the Stargate contract\n @param _tokenId The ID of the token to boost\n @dev Emits a {IStargateNFT.MaturityPeriodBoosted} event"},"functionSelector":"1b55d19e","id":18684,"implemented":false,"kind":"function","modifiers":[],"name":"boost","nameLocation":"11383:5:41","nodeType":"FunctionDefinition","parameters":{"id":18682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18681,"mutability":"mutable","name":"_tokenId","nameLocation":"11397:8:41","nodeType":"VariableDeclaration","scope":18684,"src":"11389:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18680,"name":"uint256","nodeType":"ElementaryTypeName","src":"11389:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11388:18:41"},"returnParameters":{"id":18683,"nodeType":"ParameterList","parameters":[],"src":"11415:0:41"},"scope":18909,"src":"11374:42:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18685,"nodeType":"StructuredDocumentation","src":"11422:228:41","text":"@notice Returns the amount of VTHO required to boost a token's maturity period\n @param _tokenId The ID of the token to boost\n @return boostAmount The amount of VTHO required to boost the token's maturity period"},"functionSelector":"13e09e96","id":18692,"implemented":false,"kind":"function","modifiers":[],"name":"boostAmount","nameLocation":"11664:11:41","nodeType":"FunctionDefinition","parameters":{"id":18688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18687,"mutability":"mutable","name":"_tokenId","nameLocation":"11684:8:41","nodeType":"VariableDeclaration","scope":18692,"src":"11676:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18686,"name":"uint256","nodeType":"ElementaryTypeName","src":"11676:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11675:18:41"},"returnParameters":{"id":18691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18690,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18692,"src":"11717:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18689,"name":"uint256","nodeType":"ElementaryTypeName","src":"11717:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11716:9:41"},"scope":18909,"src":"11655:71:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18693,"nodeType":"StructuredDocumentation","src":"11732:234:41","text":"@notice Returns the amount of VTHO required to boost a token's maturity period\n @param _levelId The level ID of the token to boost\n @return boostAmount The amount of VTHO required to boost the token's maturity period"},"functionSelector":"c1ea9258","id":18700,"implemented":false,"kind":"function","modifiers":[],"name":"boostAmountOfLevel","nameLocation":"11980:18:41","nodeType":"FunctionDefinition","parameters":{"id":18696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18695,"mutability":"mutable","name":"_levelId","nameLocation":"12005:8:41","nodeType":"VariableDeclaration","scope":18700,"src":"11999:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18694,"name":"uint8","nodeType":"ElementaryTypeName","src":"11999:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11998:16:41"},"returnParameters":{"id":18699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18698,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18700,"src":"12038:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18697,"name":"uint256","nodeType":"ElementaryTypeName","src":"12038:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12037:9:41"},"scope":18909,"src":"11971:76:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18701,"nodeType":"StructuredDocumentation","src":"12053:197:41","text":"@notice Returns the boost price per block for a given level\n @param _levelId The level ID of the token to boost\n @return boostPricePerBlock The boost price per block for the level"},"functionSelector":"a9fa6f58","id":18708,"implemented":false,"kind":"function","modifiers":[],"name":"boostPricePerBlock","nameLocation":"12264:18:41","nodeType":"FunctionDefinition","parameters":{"id":18704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18703,"mutability":"mutable","name":"_levelId","nameLocation":"12289:8:41","nodeType":"VariableDeclaration","scope":18708,"src":"12283:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18702,"name":"uint8","nodeType":"ElementaryTypeName","src":"12283:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"12282:16:41"},"returnParameters":{"id":18707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18706,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18708,"src":"12322:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18705,"name":"uint256","nodeType":"ElementaryTypeName","src":"12322:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12321:9:41"},"scope":18909,"src":"12255:76:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18709,"nodeType":"StructuredDocumentation","src":"12337:217:41","text":"@notice Returns the maturity period end block for a given token\n @param _tokenId The ID of the token to get maturity period end block for\n @return maturityPeriodEndBlock The maturity period end block"},"functionSelector":"a77ad11d","id":18716,"implemented":false,"kind":"function","modifiers":[],"name":"maturityPeriodEndBlock","nameLocation":"12568:22:41","nodeType":"FunctionDefinition","parameters":{"id":18712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18711,"mutability":"mutable","name":"_tokenId","nameLocation":"12599:8:41","nodeType":"VariableDeclaration","scope":18716,"src":"12591:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18710,"name":"uint256","nodeType":"ElementaryTypeName","src":"12591:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12590:18:41"},"returnParameters":{"id":18715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18714,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18716,"src":"12632:6:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":18713,"name":"uint64","nodeType":"ElementaryTypeName","src":"12632:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"12631:8:41"},"scope":18909,"src":"12559:81:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18717,"nodeType":"StructuredDocumentation","src":"12646:210:41","text":"@notice Returns true if a token is in the maturity period\n @param _tokenId The ID of the token to check\n @return isInMaturityPeriod True if the token is in the maturity period, false otherwise"},"functionSelector":"d621517e","id":18724,"implemented":false,"kind":"function","modifiers":[],"name":"isUnderMaturityPeriod","nameLocation":"12870:21:41","nodeType":"FunctionDefinition","parameters":{"id":18720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18719,"mutability":"mutable","name":"_tokenId","nameLocation":"12900:8:41","nodeType":"VariableDeclaration","scope":18724,"src":"12892:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18718,"name":"uint256","nodeType":"ElementaryTypeName","src":"12892:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12891:18:41"},"returnParameters":{"id":18723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18722,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18724,"src":"12933:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18721,"name":"bool","nodeType":"ElementaryTypeName","src":"12933:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12932:6:41"},"scope":18909,"src":"12861:78:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18725,"nodeType":"StructuredDocumentation","src":"13002:503:41","text":"@notice Adds a manager to a token\n @dev This manager can use the token for voting on VeVote\n or in B3TR but it cant calim rewards for themselves, transfer,\n delegate or unstake the token\n @dev If a token already has a manager, it will be removed and\n the new manager will be added\n @param _manager The address of the manager to add\n @param _tokenId The ID of the token to add the manager to\n @dev Emits a {IStargateNFT.TokenManagerAdded} event"},"functionSelector":"0c72580f","id":18732,"implemented":false,"kind":"function","modifiers":[],"name":"addTokenManager","nameLocation":"13519:15:41","nodeType":"FunctionDefinition","parameters":{"id":18730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18727,"mutability":"mutable","name":"_manager","nameLocation":"13543:8:41","nodeType":"VariableDeclaration","scope":18732,"src":"13535:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18726,"name":"address","nodeType":"ElementaryTypeName","src":"13535:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18729,"mutability":"mutable","name":"_tokenId","nameLocation":"13561:8:41","nodeType":"VariableDeclaration","scope":18732,"src":"13553:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18728,"name":"uint256","nodeType":"ElementaryTypeName","src":"13553:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13534:36:41"},"returnParameters":{"id":18731,"nodeType":"ParameterList","parameters":[],"src":"13579:0:41"},"scope":18909,"src":"13510:70:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18733,"nodeType":"StructuredDocumentation","src":"13586:419:41","text":"@notice Removes a manager from a token\n @dev This manager can no longer use the token for voting on VeVote\n or in B3TR but it can still claim rewards for themselves, transfer,\n delegate or unstake the token\n @dev If a token has no manager, it will revert\n @param _tokenId The ID of the token to remove the manager from\n @dev Emits a {IStargateNFT.TokenManagerRemoved} event"},"functionSelector":"d4dfed36","id":18738,"implemented":false,"kind":"function","modifiers":[],"name":"removeTokenManager","nameLocation":"14019:18:41","nodeType":"FunctionDefinition","parameters":{"id":18736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18735,"mutability":"mutable","name":"_tokenId","nameLocation":"14046:8:41","nodeType":"VariableDeclaration","scope":18738,"src":"14038:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18734,"name":"uint256","nodeType":"ElementaryTypeName","src":"14038:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14037:18:41"},"returnParameters":{"id":18737,"nodeType":"ParameterList","parameters":[],"src":"14064:0:41"},"scope":18909,"src":"14010:55:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18739,"nodeType":"StructuredDocumentation","src":"14071:242:41","text":"@notice Returns the manager of a token, if the token does not have a manager\n it will return the owner of the token\n @param _tokenId The ID of the token to get the manager for\n @return manager The manager of the token"},"functionSelector":"692b26ff","id":18746,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenManager","nameLocation":"14327:15:41","nodeType":"FunctionDefinition","parameters":{"id":18742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18741,"mutability":"mutable","name":"_tokenId","nameLocation":"14351:8:41","nodeType":"VariableDeclaration","scope":18746,"src":"14343:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18740,"name":"uint256","nodeType":"ElementaryTypeName","src":"14343:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14342:18:41"},"returnParameters":{"id":18745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18746,"src":"14384:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18743,"name":"address","nodeType":"ElementaryTypeName","src":"14384:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14383:9:41"},"scope":18909,"src":"14318:75:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18747,"nodeType":"StructuredDocumentation","src":"14399:356:41","text":"@notice Returns the list of:\n 1) Token ids managed by the user\n 2) Token ids owned by the user and not managed by someone else\n Token ids owned by the user, but managed by others, won't be returned\n @param _user The address of the user to get the tokens for\n @return tokenIds The list of token ids managed by the user"},"functionSelector":"afad8f5e","id":18755,"implemented":false,"kind":"function","modifiers":[],"name":"idsManagedBy","nameLocation":"14769:12:41","nodeType":"FunctionDefinition","parameters":{"id":18750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18749,"mutability":"mutable","name":"_user","nameLocation":"14790:5:41","nodeType":"VariableDeclaration","scope":18755,"src":"14782:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18748,"name":"address","nodeType":"ElementaryTypeName","src":"14782:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14781:15:41"},"returnParameters":{"id":18754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18755,"src":"14820:16:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18751,"name":"uint256","nodeType":"ElementaryTypeName","src":"14820:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18752,"nodeType":"ArrayTypeName","src":"14820:9:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14819:18:41"},"scope":18909,"src":"14760:78:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18756,"nodeType":"StructuredDocumentation","src":"14844:342:41","text":"@notice Returns the list of:\n 1) Tokens managed by the user\n 2) Tokens owned by the user and not managed by someone else\n Tokens owned by the user, but managed by others, won't be returned\n @param _user The address of the user to get the tokens for\n @return tokens The list of tokens managed by the user"},"functionSelector":"cd2c6efe","id":18765,"implemented":false,"kind":"function","modifiers":[],"name":"tokensManagedBy","nameLocation":"15200:15:41","nodeType":"FunctionDefinition","parameters":{"id":18759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18758,"mutability":"mutable","name":"_user","nameLocation":"15224:5:41","nodeType":"VariableDeclaration","scope":18765,"src":"15216:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18757,"name":"address","nodeType":"ElementaryTypeName","src":"15216:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15215:15:41"},"returnParameters":{"id":18764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18765,"src":"15254:24:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr","typeString":"struct DataTypes.Token[]"},"typeName":{"baseType":{"id":18761,"nodeType":"UserDefinedTypeName","pathNode":{"id":18760,"name":"DataTypes.Token","nameLocations":["15254:9:41","15264:5:41"],"nodeType":"IdentifierPath","referencedDeclaration":17547,"src":"15254:15:41"},"referencedDeclaration":17547,"src":"15254:15:41","typeDescriptions":{"typeIdentifier":"t_struct$_Token_$17547_storage_ptr","typeString":"struct DataTypes.Token"}},"id":18762,"nodeType":"ArrayTypeName","src":"15254:17:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_storage_$dyn_storage_ptr","typeString":"struct DataTypes.Token[]"}},"visibility":"internal"}],"src":"15253:26:41"},"scope":18909,"src":"15191:89:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18766,"nodeType":"StructuredDocumentation","src":"15286:248:41","text":"@notice Checks if an address is a manager of a token\n @param _manager The address of the manager to check\n @param _tokenId The ID of the token to check\n @return True if the address is a manager of the token, false otherwise"},"functionSelector":"32ebc612","id":18775,"implemented":false,"kind":"function","modifiers":[],"name":"isTokenManager","nameLocation":"15548:14:41","nodeType":"FunctionDefinition","parameters":{"id":18771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18768,"mutability":"mutable","name":"_manager","nameLocation":"15571:8:41","nodeType":"VariableDeclaration","scope":18775,"src":"15563:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18767,"name":"address","nodeType":"ElementaryTypeName","src":"15563:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18770,"mutability":"mutable","name":"_tokenId","nameLocation":"15589:8:41","nodeType":"VariableDeclaration","scope":18775,"src":"15581:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18769,"name":"uint256","nodeType":"ElementaryTypeName","src":"15581:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15562:36:41"},"returnParameters":{"id":18774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18775,"src":"15622:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18772,"name":"bool","nodeType":"ElementaryTypeName","src":"15622:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15621:6:41"},"scope":18909,"src":"15539:89:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18776,"nodeType":"StructuredDocumentation","src":"15634:181:41","text":"@notice Checks if a token is managed by the owner\n @param _tokenId The ID of the token to check\n @return True if the token is managed by the owner, false otherwise"},"functionSelector":"8419de89","id":18783,"implemented":false,"kind":"function","modifiers":[],"name":"isManagedByOwner","nameLocation":"15829:16:41","nodeType":"FunctionDefinition","parameters":{"id":18779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18778,"mutability":"mutable","name":"_tokenId","nameLocation":"15854:8:41","nodeType":"VariableDeclaration","scope":18783,"src":"15846:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18777,"name":"uint256","nodeType":"ElementaryTypeName","src":"15846:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15845:18:41"},"returnParameters":{"id":18782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18783,"src":"15887:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18780,"name":"bool","nodeType":"ElementaryTypeName","src":"15887:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15886:6:41"},"scope":18909,"src":"15820:73:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18784,"nodeType":"StructuredDocumentation","src":"15899:544:41","text":"@notice Function to get the overview of the tokens related to a user\n A token is related to a user if it is owned by the user or if it is managed by the user\n This includes:\n - Tokens owned by the user and managed by the user\n - Tokens owned by the user and not managed by the user\n - Tokens managed by the user and not owned by the user\n @param _user The address of the user to get the overview of the tokens\n @return DataTypes.TokenOverview[] The overview of the tokens related to the user"},"functionSelector":"05a03f50","id":18793,"implemented":false,"kind":"function","modifiers":[],"name":"tokensOverview","nameLocation":"16457:14:41","nodeType":"FunctionDefinition","parameters":{"id":18787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18786,"mutability":"mutable","name":"_user","nameLocation":"16480:5:41","nodeType":"VariableDeclaration","scope":18793,"src":"16472:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18785,"name":"address","nodeType":"ElementaryTypeName","src":"16472:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16471:15:41"},"returnParameters":{"id":18792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18793,"src":"16510:32:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenOverview_$17568_memory_ptr_$dyn_memory_ptr","typeString":"struct DataTypes.TokenOverview[]"},"typeName":{"baseType":{"id":18789,"nodeType":"UserDefinedTypeName","pathNode":{"id":18788,"name":"DataTypes.TokenOverview","nameLocations":["16510:9:41","16520:13:41"],"nodeType":"IdentifierPath","referencedDeclaration":17568,"src":"16510:23:41"},"referencedDeclaration":17568,"src":"16510:23:41","typeDescriptions":{"typeIdentifier":"t_struct$_TokenOverview_$17568_storage_ptr","typeString":"struct DataTypes.TokenOverview"}},"id":18790,"nodeType":"ArrayTypeName","src":"16510:25:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenOverview_$17568_storage_$dyn_storage_ptr","typeString":"struct DataTypes.TokenOverview[]"}},"visibility":"internal"}],"src":"16509:34:41"},"scope":18909,"src":"16448:96:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18794,"nodeType":"StructuredDocumentation","src":"16602:326:41","text":"@notice Sets the base URI for the token collection metadata\n @dev Only the MANAGER_ROLE can call this function\n @dev Metadata is hosted on IPFS, and the base URI is the base path to the collection metadata\n @param _baseTokenURI The new base URI\n @dev Emits a {IStargateNFT.BaseURIUpdated} event"},"functionSelector":"55f804b3","id":18799,"implemented":false,"kind":"function","modifiers":[],"name":"setBaseURI","nameLocation":"16942:10:41","nodeType":"FunctionDefinition","parameters":{"id":18797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18796,"mutability":"mutable","name":"_baseTokenURI","nameLocation":"16967:13:41","nodeType":"VariableDeclaration","scope":18799,"src":"16953:27:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18795,"name":"string","nodeType":"ElementaryTypeName","src":"16953:6:41","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"16952:29:41"},"returnParameters":{"id":18798,"nodeType":"ParameterList","parameters":[],"src":"16990:0:41"},"scope":18909,"src":"16933:58:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18800,"nodeType":"StructuredDocumentation","src":"16997:112:41","text":"@notice Returns the base URI for the token collection metadata\n @return baseURI - the base URI string"},"functionSelector":"6c0360eb","id":18805,"implemented":false,"kind":"function","modifiers":[],"name":"baseURI","nameLocation":"17123:7:41","nodeType":"FunctionDefinition","parameters":{"id":18801,"nodeType":"ParameterList","parameters":[],"src":"17130:2:41"},"returnParameters":{"id":18804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18805,"src":"17156:13:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18802,"name":"string","nodeType":"ElementaryTypeName","src":"17156:6:41","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17155:15:41"},"scope":18909,"src":"17114:57:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18806,"nodeType":"StructuredDocumentation","src":"17229:281:41","text":"@notice Mints a token from the StargateNFT contract\n @dev This can only be called by the Stargate contract\n @param _levelId The ID of the token level to mint\n @param _to The address to mint the token to\n @dev Emits a {IStargateNFT.TokenMinted} event"},"functionSelector":"7bf75f6c","id":18815,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"17524:4:41","nodeType":"FunctionDefinition","parameters":{"id":18811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18808,"mutability":"mutable","name":"_levelId","nameLocation":"17535:8:41","nodeType":"VariableDeclaration","scope":18815,"src":"17529:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18807,"name":"uint8","nodeType":"ElementaryTypeName","src":"17529:5:41","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18810,"mutability":"mutable","name":"_to","nameLocation":"17553:3:41","nodeType":"VariableDeclaration","scope":18815,"src":"17545:11:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18809,"name":"address","nodeType":"ElementaryTypeName","src":"17545:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17528:29:41"},"returnParameters":{"id":18814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18813,"mutability":"mutable","name":"tokenId","nameLocation":"17584:7:41","nodeType":"VariableDeclaration","scope":18815,"src":"17576:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18812,"name":"uint256","nodeType":"ElementaryTypeName","src":"17576:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17575:17:41"},"scope":18909,"src":"17515:78:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18816,"nodeType":"StructuredDocumentation","src":"17599:223:41","text":"@notice Burns a token from the StargateNFT contract\n @dev This can only be called by the Stargate contract\n @param _tokenId The ID of the token to burn\n @dev Emits a {IStargateNFT.TokenBurned} event"},"functionSelector":"42966c68","id":18821,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"17836:4:41","nodeType":"FunctionDefinition","parameters":{"id":18819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18818,"mutability":"mutable","name":"_tokenId","nameLocation":"17849:8:41","nodeType":"VariableDeclaration","scope":18821,"src":"17841:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18817,"name":"uint256","nodeType":"ElementaryTypeName","src":"17841:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17840:18:41"},"returnParameters":{"id":18820,"nodeType":"ParameterList","parameters":[],"src":"17867:0:41"},"scope":18909,"src":"17827:41:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18822,"nodeType":"StructuredDocumentation","src":"17874:375:41","text":"@notice Migrates a token from the legacy nodes contract to StargateNFT to the same owner address\n as the owner of the token in the legacy nodes contract\n @dev This can only be called by the Stargate contract\n @param _tokenId The ID of the token to migrate\n @dev Emits a {IStargateNFT.TokenMinted} event and a {IStargateNFT.TokenMigrated} event"},"functionSelector":"454b0608","id":18827,"implemented":false,"kind":"function","modifiers":[],"name":"migrate","nameLocation":"18263:7:41","nodeType":"FunctionDefinition","parameters":{"id":18825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18824,"mutability":"mutable","name":"_tokenId","nameLocation":"18279:8:41","nodeType":"VariableDeclaration","scope":18827,"src":"18271:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18823,"name":"uint256","nodeType":"ElementaryTypeName","src":"18271:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18270:18:41"},"returnParameters":{"id":18826,"nodeType":"ParameterList","parameters":[],"src":"18297:0:41"},"scope":18909,"src":"18254:44:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18828,"nodeType":"StructuredDocumentation","src":"18304:286:41","text":"@notice Boosts the maturity period of a token\n @dev This can only be called by the Stargate contract\n @param _sender The address to boost the token for\n @param _tokenId The ID of the token to boost\n @dev Emits a {IStargateNFT.MaturityPeriodBoosted} event"},"functionSelector":"996fa255","id":18835,"implemented":false,"kind":"function","modifiers":[],"name":"boostOnBehalfOf","nameLocation":"18604:15:41","nodeType":"FunctionDefinition","parameters":{"id":18833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18830,"mutability":"mutable","name":"_sender","nameLocation":"18628:7:41","nodeType":"VariableDeclaration","scope":18835,"src":"18620:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18829,"name":"address","nodeType":"ElementaryTypeName","src":"18620:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18832,"mutability":"mutable","name":"_tokenId","nameLocation":"18645:8:41","nodeType":"VariableDeclaration","scope":18835,"src":"18637:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18831,"name":"uint256","nodeType":"ElementaryTypeName","src":"18637:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18619:35:41"},"returnParameters":{"id":18834,"nodeType":"ParameterList","parameters":[],"src":"18663:0:41"},"scope":18909,"src":"18595:69:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18836,"nodeType":"StructuredDocumentation","src":"18670:105:41","text":"@notice Returns the address of the Stargate contract\n @return stargate - the Stargate contract"},"functionSelector":"736f9035","id":18841,"implemented":false,"kind":"function","modifiers":[],"name":"getStargate","nameLocation":"18789:11:41","nodeType":"FunctionDefinition","parameters":{"id":18837,"nodeType":"ParameterList","parameters":[],"src":"18800:2:41"},"returnParameters":{"id":18840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18841,"src":"18826:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18838,"name":"address","nodeType":"ElementaryTypeName","src":"18826:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18825:9:41"},"scope":18909,"src":"18780:55:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18842,"nodeType":"StructuredDocumentation","src":"18890:99:41","text":"@notice Returns the current block number\n @return blockNumber - the current block number"},"functionSelector":"91ddadf4","id":18847,"implemented":false,"kind":"function","modifiers":[],"name":"clock","nameLocation":"19003:5:41","nodeType":"FunctionDefinition","parameters":{"id":18843,"nodeType":"ParameterList","parameters":[],"src":"19008:2:41"},"returnParameters":{"id":18846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18847,"src":"19034:6:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":18844,"name":"uint48","nodeType":"ElementaryTypeName","src":"19034:6:41","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"19033:8:41"},"scope":18909,"src":"18994:48:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18848,"nodeType":"StructuredDocumentation","src":"19048:34:41","text":"@notice Returns the clock mode"},"functionSelector":"4bf5d7e9","id":18853,"implemented":false,"kind":"function","modifiers":[],"name":"CLOCK_MODE","nameLocation":"19096:10:41","nodeType":"FunctionDefinition","parameters":{"id":18849,"nodeType":"ParameterList","parameters":[],"src":"19106:2:41"},"returnParameters":{"id":18852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18853,"src":"19132:13:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18850,"name":"string","nodeType":"ElementaryTypeName","src":"19132:6:41","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"19131:15:41"},"scope":18909,"src":"19087:60:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18854,"nodeType":"StructuredDocumentation","src":"19153:91:41","text":"@notice Returns the current timestamp\n @return timestamp - the current timestamp"},"functionSelector":"b80777ea","id":18859,"implemented":false,"kind":"function","modifiers":[],"name":"timestamp","nameLocation":"19258:9:41","nodeType":"FunctionDefinition","parameters":{"id":18855,"nodeType":"ParameterList","parameters":[],"src":"19267:2:41"},"returnParameters":{"id":18858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18859,"src":"19293:6:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":18856,"name":"uint48","nodeType":"ElementaryTypeName","src":"19293:6:41","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"19292:8:41"},"scope":18909,"src":"19249:52:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18860,"nodeType":"StructuredDocumentation","src":"19355:110:41","text":"@notice Returns the address of the VTHO token contract\n @return vthoToken - the VTHO token contract"},"functionSelector":"1e813caf","id":18865,"implemented":false,"kind":"function","modifiers":[],"name":"getVthoTokenAddress","nameLocation":"19479:19:41","nodeType":"FunctionDefinition","parameters":{"id":18861,"nodeType":"ParameterList","parameters":[],"src":"19498:2:41"},"returnParameters":{"id":18864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18863,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18865,"src":"19524:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18862,"name":"address","nodeType":"ElementaryTypeName","src":"19524:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19523:9:41"},"scope":18909,"src":"19470:63:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18866,"nodeType":"StructuredDocumentation","src":"19595:214:41","text":"@notice Returns the number of X tokens in circulation\n @dev Get the count of normal tokens by subtracting the count of X tokens from the total supply\n @return xTokensCount - the number of X tokens"},"functionSelector":"e1fac594","id":18871,"implemented":false,"kind":"function","modifiers":[],"name":"xTokensCount","nameLocation":"19823:12:41","nodeType":"FunctionDefinition","parameters":{"id":18867,"nodeType":"ParameterList","parameters":[],"src":"19835:2:41"},"returnParameters":{"id":18870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18871,"src":"19861:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":18868,"name":"uint208","nodeType":"ElementaryTypeName","src":"19861:7:41","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"19860:9:41"},"scope":18909,"src":"19814:56:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18872,"nodeType":"StructuredDocumentation","src":"19876:169:41","text":"@notice Checks if an owner owns an X token\n @param _owner The address of the owner to check\n @return True if the owner owns an X token, false otherwise"},"functionSelector":"a4984009","id":18879,"implemented":false,"kind":"function","modifiers":[],"name":"ownsXToken","nameLocation":"20059:10:41","nodeType":"FunctionDefinition","parameters":{"id":18875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18874,"mutability":"mutable","name":"_owner","nameLocation":"20078:6:41","nodeType":"VariableDeclaration","scope":18879,"src":"20070:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18873,"name":"address","nodeType":"ElementaryTypeName","src":"20070:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20069:16:41"},"returnParameters":{"id":18878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18877,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18879,"src":"20109:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18876,"name":"bool","nodeType":"ElementaryTypeName","src":"20109:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20108:6:41"},"scope":18909,"src":"20050:65:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18880,"nodeType":"StructuredDocumentation","src":"20121:161:41","text":"@notice Checks if a token is an X token\n @param _tokenId The ID of the token to check\n @return True if the token is an X token, false otherwise"},"functionSelector":"f0572485","id":18887,"implemented":false,"kind":"function","modifiers":[],"name":"isXToken","nameLocation":"20296:8:41","nodeType":"FunctionDefinition","parameters":{"id":18883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18882,"mutability":"mutable","name":"_tokenId","nameLocation":"20313:8:41","nodeType":"VariableDeclaration","scope":18887,"src":"20305:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18881,"name":"uint256","nodeType":"ElementaryTypeName","src":"20305:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20304:18:41"},"returnParameters":{"id":18886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18887,"src":"20346:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18884,"name":"bool","nodeType":"ElementaryTypeName","src":"20346:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20345:6:41"},"scope":18909,"src":"20287:65:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18888,"nodeType":"StructuredDocumentation","src":"20358:101:41","text":"@notice Returns the legacy nodes contract\n @return legacyNodes - the legacy nodes contract"},"functionSelector":"59c87d14","id":18894,"implemented":false,"kind":"function","modifiers":[],"name":"legacyNodes","nameLocation":"20473:11:41","nodeType":"FunctionDefinition","parameters":{"id":18889,"nodeType":"ParameterList","parameters":[],"src":"20484:2:41"},"returnParameters":{"id":18893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18892,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18894,"src":"20510:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITokenAuction_$19387","typeString":"contract ITokenAuction"},"typeName":{"id":18891,"nodeType":"UserDefinedTypeName","pathNode":{"id":18890,"name":"ITokenAuction","nameLocations":["20510:13:41"],"nodeType":"IdentifierPath","referencedDeclaration":19387,"src":"20510:13:41"},"referencedDeclaration":19387,"src":"20510:13:41","typeDescriptions":{"typeIdentifier":"t_contract$_ITokenAuction_$19387","typeString":"contract ITokenAuction"}},"visibility":"internal"}],"src":"20509:15:41"},"scope":18909,"src":"20464:61:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18895,"nodeType":"StructuredDocumentation","src":"20584:873:41","text":"@notice Transfers the balance of the contract to the Stargate contract\n @dev This function was created after the refactor on the StargateNFT and Stargate\n contracts. After the refactor, all VET is handled by Stargate, this means\n stake, stakeAndDelegate, unstake... functions were moved to the Stargate.\n Since up until now we were using the StagateNFT contract to handle the VET,\n we need to transfer back all the previous staked VET to the Stargate\n so user can delegate it and unstake it. This functions transfers all the VET\n to the Stargate contract in one go.\n This function is called by the admin after the upgrade to V3 and the\n Stargate variable is set to the correct value\n @dev Only the DEFAULT_ADMIN_ROLE can call this function\n @dev Emits a {IStargateNFT.VetTransferFailed} event"},"functionSelector":"8a60c4c1","id":18900,"implemented":false,"kind":"function","modifiers":[],"name":"transferBalance","nameLocation":"21471:15:41","nodeType":"FunctionDefinition","parameters":{"id":18898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18897,"mutability":"mutable","name":"amount","nameLocation":"21495:6:41","nodeType":"VariableDeclaration","scope":18900,"src":"21487:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18896,"name":"uint256","nodeType":"ElementaryTypeName","src":"21487:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21486:16:41"},"returnParameters":{"id":18899,"nodeType":"ParameterList","parameters":[],"src":"21511:0:41"},"scope":18909,"src":"21462:50:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":18901,"nodeType":"StructuredDocumentation","src":"21518:362:41","text":"@notice Migrate a token manager to the StargateNFT contract, this function is only callable by the DEFAULT_ADMIN_ROLE\n so we can migrate the storage from NodeManagementV3 to StargateNFT, after the migration we can remove this function\n @param _tokenId The ID of the token to migrate\n @param _manager The address of the manager to migrate"},"functionSelector":"ecf79966","id":18908,"implemented":false,"kind":"function","modifiers":[],"name":"migrateTokenManager","nameLocation":"21894:19:41","nodeType":"FunctionDefinition","parameters":{"id":18906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18903,"mutability":"mutable","name":"_tokenId","nameLocation":"21922:8:41","nodeType":"VariableDeclaration","scope":18908,"src":"21914:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18902,"name":"uint256","nodeType":"ElementaryTypeName","src":"21914:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18905,"mutability":"mutable","name":"_manager","nameLocation":"21940:8:41","nodeType":"VariableDeclaration","scope":18908,"src":"21932:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18904,"name":"address","nodeType":"ElementaryTypeName","src":"21932:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21913:36:41"},"returnParameters":{"id":18907,"nodeType":"ParameterList","parameters":[],"src":"21958:0:41"},"scope":18909,"src":"21885:74:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18910,"src":"445:21516:41","usedErrors":[],"usedEvents":[1532,1541,1550,18433,18442,18451,18460,18473,18484,18491,18496,18503,18510,18519,18526]}],"src":"32:21930:41"},"id":41},"contracts/mocks/Stargate/interfaces/ITokenAuction.sol":{"ast":{"absolutePath":"contracts/mocks/Stargate/interfaces/ITokenAuction.sol","exportedSymbols":{"ITokenAuction":[19387]},"id":19388,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":18911,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"32:23:42"},{"abstract":false,"baseContracts":[],"canonicalName":"ITokenAuction","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":19387,"linearizedBaseContracts":[19387],"name":"ITokenAuction","nameLocation":"67:13:42","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"50417882ac38f5bd0dd968f4b17f72ab38a7bd228eeec270f01466a5724684b4","id":18923,"name":"AuctionCreated","nameLocation":"167:14:42","nodeType":"EventDefinition","parameters":{"id":18922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18913,"indexed":true,"mutability":"mutable","name":"_auctionId","nameLocation":"207:10:42","nodeType":"VariableDeclaration","scope":18923,"src":"191:26:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18912,"name":"uint256","nodeType":"ElementaryTypeName","src":"191:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18915,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"243:8:42","nodeType":"VariableDeclaration","scope":18923,"src":"227:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18914,"name":"uint256","nodeType":"ElementaryTypeName","src":"227:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18917,"indexed":false,"mutability":"mutable","name":"_startingPrice","nameLocation":"269:14:42","nodeType":"VariableDeclaration","scope":18923,"src":"261:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18916,"name":"uint256","nodeType":"ElementaryTypeName","src":"261:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18919,"indexed":false,"mutability":"mutable","name":"_endingPrice","nameLocation":"301:12:42","nodeType":"VariableDeclaration","scope":18923,"src":"293:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18918,"name":"uint256","nodeType":"ElementaryTypeName","src":"293:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18921,"indexed":false,"mutability":"mutable","name":"_duration","nameLocation":"330:9:42","nodeType":"VariableDeclaration","scope":18923,"src":"323:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":18920,"name":"uint64","nodeType":"ElementaryTypeName","src":"323:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"181:164:42"},"src":"161:185:42"},{"anonymous":false,"eventSelector":"c2a394cb356728b3540b84dee72ea6de41f44fd94de223565258efe1549ee06f","id":18935,"name":"AuctionSuccessful","nameLocation":"358:17:42","nodeType":"EventDefinition","parameters":{"id":18934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18925,"indexed":true,"mutability":"mutable","name":"_auctionId","nameLocation":"401:10:42","nodeType":"VariableDeclaration","scope":18935,"src":"385:26:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18924,"name":"uint256","nodeType":"ElementaryTypeName","src":"385:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18927,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"437:8:42","nodeType":"VariableDeclaration","scope":18935,"src":"421:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18926,"name":"uint256","nodeType":"ElementaryTypeName","src":"421:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18929,"indexed":true,"mutability":"mutable","name":"_seller","nameLocation":"471:7:42","nodeType":"VariableDeclaration","scope":18935,"src":"455:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18928,"name":"address","nodeType":"ElementaryTypeName","src":"455:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18931,"indexed":false,"mutability":"mutable","name":"_winner","nameLocation":"496:7:42","nodeType":"VariableDeclaration","scope":18935,"src":"488:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18930,"name":"address","nodeType":"ElementaryTypeName","src":"488:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18933,"indexed":false,"mutability":"mutable","name":"_finalPrice","nameLocation":"521:11:42","nodeType":"VariableDeclaration","scope":18935,"src":"513:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18932,"name":"uint256","nodeType":"ElementaryTypeName","src":"513:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"375:163:42"},"src":"352:187:42"},{"anonymous":false,"eventSelector":"c42e7df8c9dcd26c4a8b5134e17fa2481ababcb828e3b316b89b63c57b61f3b8","id":18943,"name":"AddAuctionWhiteList","nameLocation":"551:19:42","nodeType":"EventDefinition","parameters":{"id":18942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18937,"indexed":true,"mutability":"mutable","name":"_auctionId","nameLocation":"596:10:42","nodeType":"VariableDeclaration","scope":18943,"src":"580:26:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18936,"name":"uint256","nodeType":"ElementaryTypeName","src":"580:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18939,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"632:8:42","nodeType":"VariableDeclaration","scope":18943,"src":"616:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18938,"name":"uint256","nodeType":"ElementaryTypeName","src":"616:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18941,"indexed":true,"mutability":"mutable","name":"_candidate","nameLocation":"666:10:42","nodeType":"VariableDeclaration","scope":18943,"src":"650:26:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18940,"name":"address","nodeType":"ElementaryTypeName","src":"650:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"570:112:42"},"src":"545:138:42"},{"anonymous":false,"eventSelector":"9bd63f96cf38bbd738ef415c10d8ce738b56b75bbe3b31f6bf2059d35f3a8f3a","id":18951,"name":"RemoveAuctionWhiteList","nameLocation":"695:22:42","nodeType":"EventDefinition","parameters":{"id":18950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18945,"indexed":true,"mutability":"mutable","name":"_auctionId","nameLocation":"743:10:42","nodeType":"VariableDeclaration","scope":18951,"src":"727:26:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18944,"name":"uint256","nodeType":"ElementaryTypeName","src":"727:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18947,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"779:8:42","nodeType":"VariableDeclaration","scope":18951,"src":"763:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18946,"name":"uint256","nodeType":"ElementaryTypeName","src":"763:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18949,"indexed":true,"mutability":"mutable","name":"_candidate","nameLocation":"813:10:42","nodeType":"VariableDeclaration","scope":18951,"src":"797:26:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18948,"name":"address","nodeType":"ElementaryTypeName","src":"797:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"717:112:42"},"src":"689:141:42"},{"anonymous":false,"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":18959,"name":"Transfer","nameLocation":"842:8:42","nodeType":"EventDefinition","parameters":{"id":18958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18953,"indexed":true,"mutability":"mutable","name":"_from","nameLocation":"867:5:42","nodeType":"VariableDeclaration","scope":18959,"src":"851:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18952,"name":"address","nodeType":"ElementaryTypeName","src":"851:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18955,"indexed":true,"mutability":"mutable","name":"_to","nameLocation":"890:3:42","nodeType":"VariableDeclaration","scope":18959,"src":"874:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18954,"name":"address","nodeType":"ElementaryTypeName","src":"874:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18957,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"911:8:42","nodeType":"VariableDeclaration","scope":18959,"src":"895:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18956,"name":"uint256","nodeType":"ElementaryTypeName","src":"895:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"850:70:42"},"src":"836:85:42"},{"anonymous":false,"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":18967,"name":"Approval","nameLocation":"933:8:42","nodeType":"EventDefinition","parameters":{"id":18966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18961,"indexed":true,"mutability":"mutable","name":"_owner","nameLocation":"958:6:42","nodeType":"VariableDeclaration","scope":18967,"src":"942:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18960,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18963,"indexed":true,"mutability":"mutable","name":"_approved","nameLocation":"982:9:42","nodeType":"VariableDeclaration","scope":18967,"src":"966:25:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18962,"name":"address","nodeType":"ElementaryTypeName","src":"966:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18965,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"1009:8:42","nodeType":"VariableDeclaration","scope":18967,"src":"993:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18964,"name":"uint256","nodeType":"ElementaryTypeName","src":"993:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"941:77:42"},"src":"927:92:42"},{"anonymous":false,"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":18975,"name":"ApprovalForAll","nameLocation":"1031:14:42","nodeType":"EventDefinition","parameters":{"id":18974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18969,"indexed":true,"mutability":"mutable","name":"_owner","nameLocation":"1062:6:42","nodeType":"VariableDeclaration","scope":18975,"src":"1046:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18968,"name":"address","nodeType":"ElementaryTypeName","src":"1046:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18971,"indexed":true,"mutability":"mutable","name":"_operator","nameLocation":"1086:9:42","nodeType":"VariableDeclaration","scope":18975,"src":"1070:25:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18970,"name":"address","nodeType":"ElementaryTypeName","src":"1070:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18973,"indexed":false,"mutability":"mutable","name":"_approved","nameLocation":"1102:9:42","nodeType":"VariableDeclaration","scope":18975,"src":"1097:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18972,"name":"bool","nodeType":"ElementaryTypeName","src":"1097:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1045:67:42"},"src":"1025:88:42"},{"anonymous":false,"eventSelector":"e925483a08461d851abfcfd476ed282a68d87b23cc45add5a8dc7f1ad7825ce9","id":18987,"name":"NewUpgradeApply","nameLocation":"1125:15:42","nodeType":"EventDefinition","parameters":{"id":18986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18977,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"1166:8:42","nodeType":"VariableDeclaration","scope":18987,"src":"1150:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18976,"name":"uint256","nodeType":"ElementaryTypeName","src":"1150:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18979,"indexed":true,"mutability":"mutable","name":"_applier","nameLocation":"1200:8:42","nodeType":"VariableDeclaration","scope":18987,"src":"1184:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18978,"name":"address","nodeType":"ElementaryTypeName","src":"1184:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18981,"indexed":false,"mutability":"mutable","name":"_level","nameLocation":"1224:6:42","nodeType":"VariableDeclaration","scope":18987,"src":"1218:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18980,"name":"uint8","nodeType":"ElementaryTypeName","src":"1218:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18983,"indexed":false,"mutability":"mutable","name":"_applyTime","nameLocation":"1247:10:42","nodeType":"VariableDeclaration","scope":18987,"src":"1240:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":18982,"name":"uint64","nodeType":"ElementaryTypeName","src":"1240:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":18985,"indexed":false,"mutability":"mutable","name":"_applyBlockno","nameLocation":"1274:13:42","nodeType":"VariableDeclaration","scope":18987,"src":"1267:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":18984,"name":"uint64","nodeType":"ElementaryTypeName","src":"1267:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1140:153:42"},"src":"1119:175:42"},{"anonymous":false,"eventSelector":"ddc99f00cc50e9442de66784f25bd218c8c63f4c4103b817692da0a63fb80a96","id":18993,"name":"CancelUpgrade","nameLocation":"1306:13:42","nodeType":"EventDefinition","parameters":{"id":18992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18989,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"1336:8:42","nodeType":"VariableDeclaration","scope":18993,"src":"1320:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18988,"name":"uint256","nodeType":"ElementaryTypeName","src":"1320:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18991,"indexed":true,"mutability":"mutable","name":"_owner","nameLocation":"1362:6:42","nodeType":"VariableDeclaration","scope":18993,"src":"1346:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18990,"name":"address","nodeType":"ElementaryTypeName","src":"1346:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1319:50:42"},"src":"1300:70:42"},{"anonymous":false,"eventSelector":"b6fd4b2356bc13ccc82da8b790e9bf9bdcfd4743d32dd10aa48189ec53f6bc00","id":19003,"name":"LevelChanged","nameLocation":"1382:12:42","nodeType":"EventDefinition","parameters":{"id":19002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18995,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"1420:8:42","nodeType":"VariableDeclaration","scope":19003,"src":"1404:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18994,"name":"uint256","nodeType":"ElementaryTypeName","src":"1404:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18997,"indexed":true,"mutability":"mutable","name":"_owner","nameLocation":"1454:6:42","nodeType":"VariableDeclaration","scope":19003,"src":"1438:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18996,"name":"address","nodeType":"ElementaryTypeName","src":"1438:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18999,"indexed":false,"mutability":"mutable","name":"_fromLevel","nameLocation":"1476:10:42","nodeType":"VariableDeclaration","scope":19003,"src":"1470:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18998,"name":"uint8","nodeType":"ElementaryTypeName","src":"1470:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19001,"indexed":false,"mutability":"mutable","name":"_toLevel","nameLocation":"1502:8:42","nodeType":"VariableDeclaration","scope":19003,"src":"1496:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19000,"name":"uint8","nodeType":"ElementaryTypeName","src":"1496:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1394:122:42"},"src":"1376:141:42"},{"anonymous":false,"eventSelector":"db9cc99dc874f9afbae71151f737e51547d3d412b52922793437d86607050c3c","id":19009,"name":"AuctionCancelled","nameLocation":"1529:16:42","nodeType":"EventDefinition","parameters":{"id":19008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19005,"indexed":true,"mutability":"mutable","name":"_auctionId","nameLocation":"1562:10:42","nodeType":"VariableDeclaration","scope":19009,"src":"1546:26:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19004,"name":"uint256","nodeType":"ElementaryTypeName","src":"1546:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19007,"indexed":true,"mutability":"mutable","name":"_tokenId","nameLocation":"1590:8:42","nodeType":"VariableDeclaration","scope":19009,"src":"1574:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19006,"name":"uint256","nodeType":"ElementaryTypeName","src":"1574:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1545:54:42"},"src":"1523:77:42"},{"anonymous":false,"eventSelector":"b69d08e828d243d599db935e2be5ce7ed7b0d2f9c9f712ff469a10a27924deb8","id":19013,"name":"ProtocolUpgrade","nameLocation":"1612:15:42","nodeType":"EventDefinition","parameters":{"id":19012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19011,"indexed":false,"mutability":"mutable","name":"_saleAuction","nameLocation":"1636:12:42","nodeType":"VariableDeclaration","scope":19013,"src":"1628:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19010,"name":"address","nodeType":"ElementaryTypeName","src":"1628:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1627:22:42"},"src":"1606:44:42"},{"anonymous":false,"eventSelector":"966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d","id":19019,"name":"OperatorUpdated","nameLocation":"1662:15:42","nodeType":"EventDefinition","parameters":{"id":19018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19015,"indexed":false,"mutability":"mutable","name":"_op","nameLocation":"1686:3:42","nodeType":"VariableDeclaration","scope":19019,"src":"1678:11:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19014,"name":"address","nodeType":"ElementaryTypeName","src":"1678:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19017,"indexed":false,"mutability":"mutable","name":"_enabled","nameLocation":"1696:8:42","nodeType":"VariableDeclaration","scope":19019,"src":"1691:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19016,"name":"bool","nodeType":"ElementaryTypeName","src":"1691:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1677:28:42"},"src":"1656:50:42"},{"anonymous":false,"eventSelector":"0baadf7b35b83c7d3a00874b5406dca58c60d0ff7d8c825ad02ec55484beb455","id":19025,"name":"BlackListUpdated","nameLocation":"1718:16:42","nodeType":"EventDefinition","parameters":{"id":19024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19021,"indexed":false,"mutability":"mutable","name":"_person","nameLocation":"1743:7:42","nodeType":"VariableDeclaration","scope":19025,"src":"1735:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19020,"name":"address","nodeType":"ElementaryTypeName","src":"1735:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19023,"indexed":false,"mutability":"mutable","name":"_op","nameLocation":"1757:3:42","nodeType":"VariableDeclaration","scope":19025,"src":"1752:8:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19022,"name":"bool","nodeType":"ElementaryTypeName","src":"1752:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1734:27:42"},"src":"1712:50:42"},{"anonymous":false,"eventSelector":"6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625","id":19027,"name":"Pause","nameLocation":"1774:5:42","nodeType":"EventDefinition","parameters":{"id":19026,"nodeType":"ParameterList","parameters":[],"src":"1779:2:42"},"src":"1768:14:42"},{"anonymous":false,"eventSelector":"7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33","id":19029,"name":"Unpause","nameLocation":"1794:7:42","nodeType":"EventDefinition","parameters":{"id":19028,"nodeType":"ParameterList","parameters":[],"src":"1801:2:42"},"src":"1788:16:42"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":19035,"name":"OwnershipTransferred","nameLocation":"1816:20:42","nodeType":"EventDefinition","parameters":{"id":19034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19031,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1853:13:42","nodeType":"VariableDeclaration","scope":19035,"src":"1837:29:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19030,"name":"address","nodeType":"ElementaryTypeName","src":"1837:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19033,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1884:8:42","nodeType":"VariableDeclaration","scope":19035,"src":"1868:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19032,"name":"address","nodeType":"ElementaryTypeName","src":"1868:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1836:57:42"},"src":"1810:84:42"},{"functionSelector":"01921197","id":19042,"implemented":false,"kind":"function","modifiers":[],"name":"removeAuctionWhiteList","nameLocation":"1956:22:42","nodeType":"FunctionDefinition","parameters":{"id":19040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19037,"mutability":"mutable","name":"_tokenId","nameLocation":"1987:8:42","nodeType":"VariableDeclaration","scope":19042,"src":"1979:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19036,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19039,"mutability":"mutable","name":"_address","nameLocation":"2005:8:42","nodeType":"VariableDeclaration","scope":19042,"src":"1997:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19038,"name":"address","nodeType":"ElementaryTypeName","src":"1997:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1978:36:42"},"returnParameters":{"id":19041,"nodeType":"ParameterList","parameters":[],"src":"2023:0:42"},"scope":19387,"src":"1947:77:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"01ffc9a7","id":19049,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2039:17:42","nodeType":"FunctionDefinition","parameters":{"id":19045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19044,"mutability":"mutable","name":"_interfaceId","nameLocation":"2064:12:42","nodeType":"VariableDeclaration","scope":19049,"src":"2057:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":19043,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2057:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2056:21:42"},"returnParameters":{"id":19048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19047,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19049,"src":"2101:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19046,"name":"bool","nodeType":"ElementaryTypeName","src":"2101:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2100:6:42"},"scope":19387,"src":"2030:77:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0324529c","id":19056,"implemented":false,"kind":"function","modifiers":[],"name":"sendBonusTo","nameLocation":"2122:11:42","nodeType":"FunctionDefinition","parameters":{"id":19054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19051,"mutability":"mutable","name":"_to","nameLocation":"2142:3:42","nodeType":"VariableDeclaration","scope":19056,"src":"2134:11:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19050,"name":"address","nodeType":"ElementaryTypeName","src":"2134:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19053,"mutability":"mutable","name":"_amount","nameLocation":"2155:7:42","nodeType":"VariableDeclaration","scope":19056,"src":"2147:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19052,"name":"uint256","nodeType":"ElementaryTypeName","src":"2147:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2133:30:42"},"returnParameters":{"id":19055,"nodeType":"ParameterList","parameters":[],"src":"2172:0:42"},"scope":19387,"src":"2113:60:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"06fdde03","id":19061,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"2188:4:42","nodeType":"FunctionDefinition","parameters":{"id":19057,"nodeType":"ParameterList","parameters":[],"src":"2192:2:42"},"returnParameters":{"id":19060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19061,"src":"2218:13:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19058,"name":"string","nodeType":"ElementaryTypeName","src":"2218:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2217:15:42"},"scope":19387,"src":"2179:54:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"07fa65f9","id":19068,"implemented":false,"kind":"function","modifiers":[],"name":"isNormalToken","nameLocation":"2248:13:42","nodeType":"FunctionDefinition","parameters":{"id":19064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19063,"mutability":"mutable","name":"_target","nameLocation":"2270:7:42","nodeType":"VariableDeclaration","scope":19068,"src":"2262:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19062,"name":"address","nodeType":"ElementaryTypeName","src":"2262:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2261:17:42"},"returnParameters":{"id":19067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19068,"src":"2302:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19065,"name":"bool","nodeType":"ElementaryTypeName","src":"2302:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2301:6:42"},"scope":19387,"src":"2239:69:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"081812fc","id":19075,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"2323:11:42","nodeType":"FunctionDefinition","parameters":{"id":19071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19070,"mutability":"mutable","name":"_tokenId","nameLocation":"2343:8:42","nodeType":"VariableDeclaration","scope":19075,"src":"2335:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19069,"name":"uint256","nodeType":"ElementaryTypeName","src":"2335:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2334:18:42"},"returnParameters":{"id":19074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19075,"src":"2376:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19072,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2375:9:42"},"scope":19387,"src":"2314:71:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"095ea7b3","id":19082,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2400:7:42","nodeType":"FunctionDefinition","parameters":{"id":19080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19077,"mutability":"mutable","name":"_to","nameLocation":"2416:3:42","nodeType":"VariableDeclaration","scope":19082,"src":"2408:11:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19076,"name":"address","nodeType":"ElementaryTypeName","src":"2408:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19079,"mutability":"mutable","name":"_tokenId","nameLocation":"2429:8:42","nodeType":"VariableDeclaration","scope":19082,"src":"2421:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19078,"name":"uint256","nodeType":"ElementaryTypeName","src":"2421:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2407:31:42"},"returnParameters":{"id":19081,"nodeType":"ParameterList","parameters":[],"src":"2447:0:42"},"scope":19387,"src":"2391:57:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"13e7c9d8","id":19089,"implemented":false,"kind":"function","modifiers":[],"name":"operators","nameLocation":"2463:9:42","nodeType":"FunctionDefinition","parameters":{"id":19085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19089,"src":"2473:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19083,"name":"address","nodeType":"ElementaryTypeName","src":"2473:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2472:9:42"},"returnParameters":{"id":19088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19089,"src":"2505:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19086,"name":"bool","nodeType":"ElementaryTypeName","src":"2505:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2504:6:42"},"scope":19387,"src":"2454:57:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"18160ddd","id":19094,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2526:11:42","nodeType":"FunctionDefinition","parameters":{"id":19090,"nodeType":"ParameterList","parameters":[],"src":"2537:2:42"},"returnParameters":{"id":19093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19092,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19094,"src":"2563:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19091,"name":"uint256","nodeType":"ElementaryTypeName","src":"2563:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2562:9:42"},"scope":19387,"src":"2517:55:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"19f37361","id":19101,"implemented":false,"kind":"function","modifiers":[],"name":"isToken","nameLocation":"2587:7:42","nodeType":"FunctionDefinition","parameters":{"id":19097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19096,"mutability":"mutable","name":"_target","nameLocation":"2603:7:42","nodeType":"VariableDeclaration","scope":19101,"src":"2595:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19095,"name":"address","nodeType":"ElementaryTypeName","src":"2595:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2594:17:42"},"returnParameters":{"id":19100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19101,"src":"2635:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19098,"name":"bool","nodeType":"ElementaryTypeName","src":"2635:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2634:6:42"},"scope":19387,"src":"2578:63:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"19fa8f50","id":19106,"implemented":false,"kind":"function","modifiers":[],"name":"InterfaceId_ERC165","nameLocation":"2656:18:42","nodeType":"FunctionDefinition","parameters":{"id":19102,"nodeType":"ParameterList","parameters":[],"src":"2674:2:42"},"returnParameters":{"id":19105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19106,"src":"2700:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":19103,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2700:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2699:8:42"},"scope":19387,"src":"2647:61:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1e20363a","id":19111,"implemented":false,"kind":"function","modifiers":[],"name":"setTokenMetadataBaseURI","nameLocation":"2723:23:42","nodeType":"FunctionDefinition","parameters":{"id":19109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19108,"mutability":"mutable","name":"_newBaseURI","nameLocation":"2761:11:42","nodeType":"VariableDeclaration","scope":19111,"src":"2747:25:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19107,"name":"string","nodeType":"ElementaryTypeName","src":"2747:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2746:27:42"},"returnParameters":{"id":19110,"nodeType":"ParameterList","parameters":[],"src":"2782:0:42"},"scope":19387,"src":"2714:69:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23b872dd","id":19120,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2798:12:42","nodeType":"FunctionDefinition","parameters":{"id":19118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19113,"mutability":"mutable","name":"_from","nameLocation":"2819:5:42","nodeType":"VariableDeclaration","scope":19120,"src":"2811:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19112,"name":"address","nodeType":"ElementaryTypeName","src":"2811:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19115,"mutability":"mutable","name":"_to","nameLocation":"2834:3:42","nodeType":"VariableDeclaration","scope":19120,"src":"2826:11:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19114,"name":"address","nodeType":"ElementaryTypeName","src":"2826:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19117,"mutability":"mutable","name":"_tokenId","nameLocation":"2847:8:42","nodeType":"VariableDeclaration","scope":19120,"src":"2839:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19116,"name":"uint256","nodeType":"ElementaryTypeName","src":"2839:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2810:46:42"},"returnParameters":{"id":19119,"nodeType":"ParameterList","parameters":[],"src":"2865:0:42"},"scope":19387,"src":"2789:77:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"287e8495","id":19133,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenParams","nameLocation":"2881:14:42","nodeType":"FunctionDefinition","parameters":{"id":19123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19122,"mutability":"mutable","name":"_level","nameLocation":"2902:6:42","nodeType":"VariableDeclaration","scope":19133,"src":"2896:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19121,"name":"uint8","nodeType":"ElementaryTypeName","src":"2896:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2895:14:42"},"returnParameters":{"id":19132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19133,"src":"2933:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19124,"name":"uint256","nodeType":"ElementaryTypeName","src":"2933:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19133,"src":"2942:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19126,"name":"uint64","nodeType":"ElementaryTypeName","src":"2942:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":19129,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19133,"src":"2950:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19128,"name":"uint64","nodeType":"ElementaryTypeName","src":"2950:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":19131,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19133,"src":"2958:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19130,"name":"uint64","nodeType":"ElementaryTypeName","src":"2958:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2932:33:42"},"scope":19387,"src":"2872:94:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2ad71573","id":19138,"implemented":false,"kind":"function","modifiers":[],"name":"auctionCount","nameLocation":"2981:12:42","nodeType":"FunctionDefinition","parameters":{"id":19134,"nodeType":"ParameterList","parameters":[],"src":"2993:2:42"},"returnParameters":{"id":19137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19138,"src":"3019:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19135,"name":"uint256","nodeType":"ElementaryTypeName","src":"3019:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3018:9:42"},"scope":19387,"src":"2972:56:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2c12cc9f","id":19143,"implemented":false,"kind":"function","modifiers":[],"name":"setLeadTime","nameLocation":"3043:11:42","nodeType":"FunctionDefinition","parameters":{"id":19141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19140,"mutability":"mutable","name":"_leadtime","nameLocation":"3062:9:42","nodeType":"VariableDeclaration","scope":19143,"src":"3055:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19139,"name":"uint64","nodeType":"ElementaryTypeName","src":"3055:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3054:18:42"},"returnParameters":{"id":19142,"nodeType":"ParameterList","parameters":[],"src":"3081:0:42"},"scope":19387,"src":"3034:48:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2ed9b4fd","id":19154,"implemented":false,"kind":"function","modifiers":[],"name":"createDirectionalSaleAuction","nameLocation":"3097:28:42","nodeType":"FunctionDefinition","parameters":{"id":19152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19145,"mutability":"mutable","name":"_tokenId","nameLocation":"3143:8:42","nodeType":"VariableDeclaration","scope":19154,"src":"3135:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19144,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19147,"mutability":"mutable","name":"_price","nameLocation":"3169:6:42","nodeType":"VariableDeclaration","scope":19154,"src":"3161:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19146,"name":"uint128","nodeType":"ElementaryTypeName","src":"3161:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19149,"mutability":"mutable","name":"_duration","nameLocation":"3192:9:42","nodeType":"VariableDeclaration","scope":19154,"src":"3185:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19148,"name":"uint64","nodeType":"ElementaryTypeName","src":"3185:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":19151,"mutability":"mutable","name":"_toAddress","nameLocation":"3219:10:42","nodeType":"VariableDeclaration","scope":19154,"src":"3211:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19150,"name":"address","nodeType":"ElementaryTypeName","src":"3211:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3125:110:42"},"returnParameters":{"id":19153,"nodeType":"ParameterList","parameters":[],"src":"3244:0:42"},"scope":19387,"src":"3088:157:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f4ba83a","id":19159,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"3260:7:42","nodeType":"FunctionDefinition","parameters":{"id":19155,"nodeType":"ParameterList","parameters":[],"src":"3267:2:42"},"returnParameters":{"id":19158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19159,"src":"3288:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19156,"name":"bool","nodeType":"ElementaryTypeName","src":"3288:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3287:6:42"},"scope":19387,"src":"3251:43:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"417c73a7","id":19164,"implemented":false,"kind":"function","modifiers":[],"name":"addToBlackList","nameLocation":"3309:14:42","nodeType":"FunctionDefinition","parameters":{"id":19162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19161,"mutability":"mutable","name":"_badGuy","nameLocation":"3332:7:42","nodeType":"VariableDeclaration","scope":19164,"src":"3324:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19160,"name":"address","nodeType":"ElementaryTypeName","src":"3324:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3323:17:42"},"returnParameters":{"id":19163,"nodeType":"ParameterList","parameters":[],"src":"3349:0:42"},"scope":19387,"src":"3300:50:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"454a2ab3","id":19169,"implemented":false,"kind":"function","modifiers":[],"name":"bid","nameLocation":"3365:3:42","nodeType":"FunctionDefinition","parameters":{"id":19167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19166,"mutability":"mutable","name":"_tokenId","nameLocation":"3377:8:42","nodeType":"VariableDeclaration","scope":19169,"src":"3369:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19165,"name":"uint256","nodeType":"ElementaryTypeName","src":"3369:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3368:18:42"},"returnParameters":{"id":19168,"nodeType":"ParameterList","parameters":[],"src":"3403:0:42"},"scope":19387,"src":"3356:48:42","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"4838d165","id":19176,"implemented":false,"kind":"function","modifiers":[],"name":"blackList","nameLocation":"3419:9:42","nodeType":"FunctionDefinition","parameters":{"id":19172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19171,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19176,"src":"3429:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19170,"name":"address","nodeType":"ElementaryTypeName","src":"3429:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3428:9:42"},"returnParameters":{"id":19175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19174,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19176,"src":"3461:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19173,"name":"bool","nodeType":"ElementaryTypeName","src":"3461:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3460:6:42"},"scope":19387,"src":"3410:57:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4a49ac4c","id":19181,"implemented":false,"kind":"function","modifiers":[],"name":"removeFromBlackList","nameLocation":"3482:19:42","nodeType":"FunctionDefinition","parameters":{"id":19179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19178,"mutability":"mutable","name":"_innocent","nameLocation":"3510:9:42","nodeType":"VariableDeclaration","scope":19181,"src":"3502:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19177,"name":"address","nodeType":"ElementaryTypeName","src":"3502:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3501:19:42"},"returnParameters":{"id":19180,"nodeType":"ParameterList","parameters":[],"src":"3529:0:42"},"scope":19387,"src":"3473:57:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4d4f6ea9","id":19188,"implemented":false,"kind":"function","modifiers":[],"name":"canTransfer","nameLocation":"3545:11:42","nodeType":"FunctionDefinition","parameters":{"id":19184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19183,"mutability":"mutable","name":"_tokenId","nameLocation":"3565:8:42","nodeType":"VariableDeclaration","scope":19188,"src":"3557:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19182,"name":"uint256","nodeType":"ElementaryTypeName","src":"3557:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3556:18:42"},"returnParameters":{"id":19187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19186,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19188,"src":"3598:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19185,"name":"bool","nodeType":"ElementaryTypeName","src":"3598:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3597:6:42"},"scope":19387,"src":"3536:68:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5c975abb","id":19193,"implemented":false,"kind":"function","modifiers":[],"name":"paused","nameLocation":"3619:6:42","nodeType":"FunctionDefinition","parameters":{"id":19189,"nodeType":"ParameterList","parameters":[],"src":"3625:2:42"},"returnParameters":{"id":19192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19193,"src":"3651:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19190,"name":"bool","nodeType":"ElementaryTypeName","src":"3651:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3650:6:42"},"scope":19387,"src":"3610:47:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"60836166","id":19200,"implemented":false,"kind":"function","modifiers":[],"name":"upgradeTo","nameLocation":"3672:9:42","nodeType":"FunctionDefinition","parameters":{"id":19198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19195,"mutability":"mutable","name":"_tokenId","nameLocation":"3690:8:42","nodeType":"VariableDeclaration","scope":19200,"src":"3682:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19194,"name":"uint256","nodeType":"ElementaryTypeName","src":"3682:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19197,"mutability":"mutable","name":"_toLvl","nameLocation":"3706:6:42","nodeType":"VariableDeclaration","scope":19200,"src":"3700:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19196,"name":"uint8","nodeType":"ElementaryTypeName","src":"3700:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3681:32:42"},"returnParameters":{"id":19199,"nodeType":"ParameterList","parameters":[],"src":"3722:0:42"},"scope":19387,"src":"3663:60:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6352211e","id":19207,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"3738:7:42","nodeType":"FunctionDefinition","parameters":{"id":19203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19202,"mutability":"mutable","name":"_tokenId","nameLocation":"3754:8:42","nodeType":"VariableDeclaration","scope":19207,"src":"3746:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19201,"name":"uint256","nodeType":"ElementaryTypeName","src":"3746:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3745:18:42"},"returnParameters":{"id":19206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19205,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19207,"src":"3787:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19204,"name":"address","nodeType":"ElementaryTypeName","src":"3787:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3786:9:42"},"scope":19387,"src":"3729:67:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"68f16293","id":19212,"implemented":false,"kind":"function","modifiers":[],"name":"transferCooldown","nameLocation":"3811:16:42","nodeType":"FunctionDefinition","parameters":{"id":19208,"nodeType":"ParameterList","parameters":[],"src":"3827:2:42"},"returnParameters":{"id":19211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19212,"src":"3853:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19209,"name":"uint64","nodeType":"ElementaryTypeName","src":"3853:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3852:8:42"},"scope":19387,"src":"3802:59:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6fbde40d","id":19217,"implemented":false,"kind":"function","modifiers":[],"name":"setSaleAuctionAddress","nameLocation":"3876:21:42","nodeType":"FunctionDefinition","parameters":{"id":19215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19214,"mutability":"mutable","name":"_address","nameLocation":"3906:8:42","nodeType":"VariableDeclaration","scope":19217,"src":"3898:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19213,"name":"address","nodeType":"ElementaryTypeName","src":"3898:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3897:18:42"},"returnParameters":{"id":19216,"nodeType":"ParameterList","parameters":[],"src":"3924:0:42"},"scope":19387,"src":"3867:58:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":19224,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3940:9:42","nodeType":"FunctionDefinition","parameters":{"id":19220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19219,"mutability":"mutable","name":"_owner","nameLocation":"3958:6:42","nodeType":"VariableDeclaration","scope":19224,"src":"3950:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19218,"name":"address","nodeType":"ElementaryTypeName","src":"3950:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3949:16:42"},"returnParameters":{"id":19223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19224,"src":"3989:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19221,"name":"uint256","nodeType":"ElementaryTypeName","src":"3989:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3988:9:42"},"scope":19387,"src":"3931:67:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"79512513","id":19229,"implemented":false,"kind":"function","modifiers":[],"name":"applyUpgrade","nameLocation":"4013:12:42","nodeType":"FunctionDefinition","parameters":{"id":19227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19226,"mutability":"mutable","name":"_toLvl","nameLocation":"4032:6:42","nodeType":"VariableDeclaration","scope":19229,"src":"4026:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19225,"name":"uint8","nodeType":"ElementaryTypeName","src":"4026:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4025:14:42"},"returnParameters":{"id":19228,"nodeType":"ParameterList","parameters":[],"src":"4048:0:42"},"scope":19387,"src":"4004:45:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7aaed899","id":19242,"implemented":false,"kind":"function","modifiers":[],"name":"addToken","nameLocation":"4064:8:42","nodeType":"FunctionDefinition","parameters":{"id":19240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19231,"mutability":"mutable","name":"_addr","nameLocation":"4090:5:42","nodeType":"VariableDeclaration","scope":19242,"src":"4082:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19230,"name":"address","nodeType":"ElementaryTypeName","src":"4082:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19233,"mutability":"mutable","name":"_lvl","nameLocation":"4111:4:42","nodeType":"VariableDeclaration","scope":19242,"src":"4105:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19232,"name":"uint8","nodeType":"ElementaryTypeName","src":"4105:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19235,"mutability":"mutable","name":"_onUpgrade","nameLocation":"4130:10:42","nodeType":"VariableDeclaration","scope":19242,"src":"4125:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19234,"name":"bool","nodeType":"ElementaryTypeName","src":"4125:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":19237,"mutability":"mutable","name":"_applyUpgradeTime","nameLocation":"4157:17:42","nodeType":"VariableDeclaration","scope":19242,"src":"4150:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19236,"name":"uint64","nodeType":"ElementaryTypeName","src":"4150:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":19239,"mutability":"mutable","name":"_applyUpgradeBlockno","nameLocation":"4191:20:42","nodeType":"VariableDeclaration","scope":19242,"src":"4184:27:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19238,"name":"uint64","nodeType":"ElementaryTypeName","src":"4184:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"4072:145:42"},"returnParameters":{"id":19241,"nodeType":"ParameterList","parameters":[],"src":"4226:0:42"},"scope":19387,"src":"4055:172:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8456cb59","id":19247,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"4242:5:42","nodeType":"FunctionDefinition","parameters":{"id":19243,"nodeType":"ParameterList","parameters":[],"src":"4247:2:42"},"returnParameters":{"id":19246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19247,"src":"4268:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19244,"name":"bool","nodeType":"ElementaryTypeName","src":"4268:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4267:6:42"},"scope":19387,"src":"4233:41:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8c8d04a7","id":19252,"implemented":false,"kind":"function","modifiers":[],"name":"leadTime","nameLocation":"4289:8:42","nodeType":"FunctionDefinition","parameters":{"id":19248,"nodeType":"ParameterList","parameters":[],"src":"4297:2:42"},"returnParameters":{"id":19251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19250,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19252,"src":"4323:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19249,"name":"uint64","nodeType":"ElementaryTypeName","src":"4323:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"4322:8:42"},"scope":19387,"src":"4280:51:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8da5cb5b","id":19257,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"4346:5:42","nodeType":"FunctionDefinition","parameters":{"id":19253,"nodeType":"ParameterList","parameters":[],"src":"4351:2:42"},"returnParameters":{"id":19256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19257,"src":"4377:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19254,"name":"address","nodeType":"ElementaryTypeName","src":"4377:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4376:9:42"},"scope":19387,"src":"4337:49:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"95d89b41","id":19262,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"4401:6:42","nodeType":"FunctionDefinition","parameters":{"id":19258,"nodeType":"ParameterList","parameters":[],"src":"4407:2:42"},"returnParameters":{"id":19261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19262,"src":"4433:13:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19259,"name":"string","nodeType":"ElementaryTypeName","src":"4433:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4432:15:42"},"scope":19387,"src":"4392:56:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"96b5a755","id":19267,"implemented":false,"kind":"function","modifiers":[],"name":"cancelAuction","nameLocation":"4463:13:42","nodeType":"FunctionDefinition","parameters":{"id":19265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19264,"mutability":"mutable","name":"_tokenId","nameLocation":"4485:8:42","nodeType":"VariableDeclaration","scope":19267,"src":"4477:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19263,"name":"uint256","nodeType":"ElementaryTypeName","src":"4477:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4476:18:42"},"returnParameters":{"id":19266,"nodeType":"ParameterList","parameters":[],"src":"4503:0:42"},"scope":19387,"src":"4454:50:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9870d7fe","id":19272,"implemented":false,"kind":"function","modifiers":[],"name":"addOperator","nameLocation":"4519:11:42","nodeType":"FunctionDefinition","parameters":{"id":19270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19269,"mutability":"mutable","name":"_operator","nameLocation":"4539:9:42","nodeType":"VariableDeclaration","scope":19272,"src":"4531:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19268,"name":"address","nodeType":"ElementaryTypeName","src":"4531:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4530:19:42"},"returnParameters":{"id":19271,"nodeType":"ParameterList","parameters":[],"src":"4558:0:42"},"scope":19387,"src":"4510:49:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a574cea4","id":19291,"implemented":false,"kind":"function","modifiers":[],"name":"getMetadata","nameLocation":"4574:11:42","nodeType":"FunctionDefinition","parameters":{"id":19275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19274,"mutability":"mutable","name":"_tokenId","nameLocation":"4603:8:42","nodeType":"VariableDeclaration","scope":19291,"src":"4595:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19273,"name":"uint256","nodeType":"ElementaryTypeName","src":"4595:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4585:32:42"},"returnParameters":{"id":19290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19291,"src":"4641:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19276,"name":"address","nodeType":"ElementaryTypeName","src":"4641:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19279,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19291,"src":"4650:5:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19278,"name":"uint8","nodeType":"ElementaryTypeName","src":"4650:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19281,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19291,"src":"4657:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19280,"name":"bool","nodeType":"ElementaryTypeName","src":"4657:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":19283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19291,"src":"4663:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19282,"name":"bool","nodeType":"ElementaryTypeName","src":"4663:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":19285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19291,"src":"4669:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19284,"name":"uint64","nodeType":"ElementaryTypeName","src":"4669:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":19287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19291,"src":"4677:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19286,"name":"uint64","nodeType":"ElementaryTypeName","src":"4677:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":19289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19291,"src":"4685:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19288,"name":"uint64","nodeType":"ElementaryTypeName","src":"4685:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"4640:52:42"},"scope":19387,"src":"4565:128:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a9059cbb","id":19298,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4708:8:42","nodeType":"FunctionDefinition","parameters":{"id":19296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19293,"mutability":"mutable","name":"_to","nameLocation":"4725:3:42","nodeType":"VariableDeclaration","scope":19298,"src":"4717:11:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19292,"name":"address","nodeType":"ElementaryTypeName","src":"4717:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19295,"mutability":"mutable","name":"_tokenId","nameLocation":"4738:8:42","nodeType":"VariableDeclaration","scope":19298,"src":"4730:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19294,"name":"uint256","nodeType":"ElementaryTypeName","src":"4730:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4716:31:42"},"returnParameters":{"id":19297,"nodeType":"ParameterList","parameters":[],"src":"4756:0:42"},"scope":19387,"src":"4699:58:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ac8a584a","id":19303,"implemented":false,"kind":"function","modifiers":[],"name":"removeOperator","nameLocation":"4772:14:42","nodeType":"FunctionDefinition","parameters":{"id":19301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19300,"mutability":"mutable","name":"_operator","nameLocation":"4795:9:42","nodeType":"VariableDeclaration","scope":19303,"src":"4787:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19299,"name":"address","nodeType":"ElementaryTypeName","src":"4787:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4786:19:42"},"returnParameters":{"id":19302,"nodeType":"ParameterList","parameters":[],"src":"4814:0:42"},"scope":19387,"src":"4763:52:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b03e02c2","id":19310,"implemented":false,"kind":"function","modifiers":[],"name":"downgradeTo","nameLocation":"4830:11:42","nodeType":"FunctionDefinition","parameters":{"id":19308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19305,"mutability":"mutable","name":"_tokenId","nameLocation":"4850:8:42","nodeType":"VariableDeclaration","scope":19310,"src":"4842:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19304,"name":"uint256","nodeType":"ElementaryTypeName","src":"4842:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19307,"mutability":"mutable","name":"_toLvl","nameLocation":"4866:6:42","nodeType":"VariableDeclaration","scope":19310,"src":"4860:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19306,"name":"uint8","nodeType":"ElementaryTypeName","src":"4860:5:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4841:32:42"},"returnParameters":{"id":19309,"nodeType":"ParameterList","parameters":[],"src":"4882:0:42"},"scope":19387,"src":"4821:62:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ba2a954d","id":19315,"implemented":false,"kind":"function","modifiers":[],"name":"cancelUpgrade","nameLocation":"4898:13:42","nodeType":"FunctionDefinition","parameters":{"id":19313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19312,"mutability":"mutable","name":"_tokenId","nameLocation":"4920:8:42","nodeType":"VariableDeclaration","scope":19315,"src":"4912:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19311,"name":"uint256","nodeType":"ElementaryTypeName","src":"4912:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4911:18:42"},"returnParameters":{"id":19314,"nodeType":"ParameterList","parameters":[],"src":"4938:0:42"},"scope":19387,"src":"4889:50:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ba6f2e65","id":19320,"implemented":false,"kind":"function","modifiers":[],"name":"setTransferCooldown","nameLocation":"4954:19:42","nodeType":"FunctionDefinition","parameters":{"id":19318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19317,"mutability":"mutable","name":"_cooldown","nameLocation":"4981:9:42","nodeType":"VariableDeclaration","scope":19320,"src":"4974:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19316,"name":"uint64","nodeType":"ElementaryTypeName","src":"4974:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"4973:18:42"},"returnParameters":{"id":19319,"nodeType":"ParameterList","parameters":[],"src":"5000:0:42"},"scope":19387,"src":"4945:56:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bae3e19e","id":19331,"implemented":false,"kind":"function","modifiers":[],"name":"createSaleAuction","nameLocation":"5016:17:42","nodeType":"FunctionDefinition","parameters":{"id":19329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19322,"mutability":"mutable","name":"_tokenId","nameLocation":"5051:8:42","nodeType":"VariableDeclaration","scope":19331,"src":"5043:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19321,"name":"uint256","nodeType":"ElementaryTypeName","src":"5043:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19324,"mutability":"mutable","name":"_startingPrice","nameLocation":"5077:14:42","nodeType":"VariableDeclaration","scope":19331,"src":"5069:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19323,"name":"uint128","nodeType":"ElementaryTypeName","src":"5069:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19326,"mutability":"mutable","name":"_endingPrice","nameLocation":"5109:12:42","nodeType":"VariableDeclaration","scope":19331,"src":"5101:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19325,"name":"uint128","nodeType":"ElementaryTypeName","src":"5101:7:42","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19328,"mutability":"mutable","name":"_duration","nameLocation":"5138:9:42","nodeType":"VariableDeclaration","scope":19331,"src":"5131:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19327,"name":"uint64","nodeType":"ElementaryTypeName","src":"5131:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"5033:120:42"},"returnParameters":{"id":19330,"nodeType":"ParameterList","parameters":[],"src":"5162:0:42"},"scope":19387,"src":"5007:156:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bfc206ed","id":19338,"implemented":false,"kind":"function","modifiers":[],"name":"idToOwner","nameLocation":"5178:9:42","nodeType":"FunctionDefinition","parameters":{"id":19334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19338,"src":"5188:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19332,"name":"uint256","nodeType":"ElementaryTypeName","src":"5188:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5187:9:42"},"returnParameters":{"id":19337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19338,"src":"5220:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19335,"name":"address","nodeType":"ElementaryTypeName","src":"5220:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5219:9:42"},"scope":19387,"src":"5169:60:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c87b56dd","id":19345,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"5244:8:42","nodeType":"FunctionDefinition","parameters":{"id":19341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19340,"mutability":"mutable","name":"_tokenId","nameLocation":"5261:8:42","nodeType":"VariableDeclaration","scope":19345,"src":"5253:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19339,"name":"uint256","nodeType":"ElementaryTypeName","src":"5253:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5252:18:42"},"returnParameters":{"id":19344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19345,"src":"5294:13:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19342,"name":"string","nodeType":"ElementaryTypeName","src":"5294:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5293:15:42"},"scope":19387,"src":"5235:74:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"cd5967db","id":19352,"implemented":false,"kind":"function","modifiers":[],"name":"addAuctionWhiteList","nameLocation":"5324:19:42","nodeType":"FunctionDefinition","parameters":{"id":19350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19347,"mutability":"mutable","name":"_tokenId","nameLocation":"5352:8:42","nodeType":"VariableDeclaration","scope":19352,"src":"5344:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19346,"name":"uint256","nodeType":"ElementaryTypeName","src":"5344:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19349,"mutability":"mutable","name":"_address","nameLocation":"5370:8:42","nodeType":"VariableDeclaration","scope":19352,"src":"5362:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19348,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5343:36:42"},"returnParameters":{"id":19351,"nodeType":"ParameterList","parameters":[],"src":"5388:0:42"},"scope":19387,"src":"5315:74:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d4156148","id":19357,"implemented":false,"kind":"function","modifiers":[],"name":"xTokenCount","nameLocation":"5404:11:42","nodeType":"FunctionDefinition","parameters":{"id":19353,"nodeType":"ParameterList","parameters":[],"src":"5415:2:42"},"returnParameters":{"id":19356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19355,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19357,"src":"5441:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19354,"name":"uint64","nodeType":"ElementaryTypeName","src":"5441:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"5440:8:42"},"scope":19387,"src":"5395:54:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e6cbe351","id":19362,"implemented":false,"kind":"function","modifiers":[],"name":"saleAuction","nameLocation":"5464:11:42","nodeType":"FunctionDefinition","parameters":{"id":19358,"nodeType":"ParameterList","parameters":[],"src":"5475:2:42"},"returnParameters":{"id":19361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19362,"src":"5501:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19359,"name":"address","nodeType":"ElementaryTypeName","src":"5501:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5500:9:42"},"scope":19387,"src":"5455:55:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e729e3a4","id":19369,"implemented":false,"kind":"function","modifiers":[],"name":"ownerToId","nameLocation":"5525:9:42","nodeType":"FunctionDefinition","parameters":{"id":19365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19369,"src":"5535:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19363,"name":"address","nodeType":"ElementaryTypeName","src":"5535:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5534:9:42"},"returnParameters":{"id":19368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19369,"src":"5567:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19366,"name":"uint256","nodeType":"ElementaryTypeName","src":"5567:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5566:9:42"},"scope":19387,"src":"5516:60:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f2fde38b","id":19374,"implemented":false,"kind":"function","modifiers":[],"name":"transferOwnership","nameLocation":"5591:17:42","nodeType":"FunctionDefinition","parameters":{"id":19372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19371,"mutability":"mutable","name":"newOwner","nameLocation":"5617:8:42","nodeType":"VariableDeclaration","scope":19374,"src":"5609:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19370,"name":"address","nodeType":"ElementaryTypeName","src":"5609:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5608:18:42"},"returnParameters":{"id":19373,"nodeType":"ParameterList","parameters":[],"src":"5635:0:42"},"scope":19387,"src":"5582:54:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f7e6e60c","id":19379,"implemented":false,"kind":"function","modifiers":[],"name":"normalTokenCount","nameLocation":"5651:16:42","nodeType":"FunctionDefinition","parameters":{"id":19375,"nodeType":"ParameterList","parameters":[],"src":"5667:2:42"},"returnParameters":{"id":19378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19377,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19379,"src":"5693:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":19376,"name":"uint64","nodeType":"ElementaryTypeName","src":"5693:6:42","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"5692:8:42"},"scope":19387,"src":"5642:59:42","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f9574c69","id":19386,"implemented":false,"kind":"function","modifiers":[],"name":"isX","nameLocation":"5716:3:42","nodeType":"FunctionDefinition","parameters":{"id":19382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19381,"mutability":"mutable","name":"_target","nameLocation":"5728:7:42","nodeType":"VariableDeclaration","scope":19386,"src":"5720:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19380,"name":"address","nodeType":"ElementaryTypeName","src":"5720:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5719:17:42"},"returnParameters":{"id":19385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19386,"src":"5760:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19383,"name":"bool","nodeType":"ElementaryTypeName","src":"5760:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5759:6:42"},"scope":19387,"src":"5707:59:42","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":19388,"src":"57:5711:42","usedErrors":[],"usedEvents":[18923,18935,18943,18951,18959,18967,18975,18987,18993,19003,19009,19013,19019,19025,19027,19029,19035]}],"src":"32:5737:42"},"id":42},"contracts/ve-better-passport/libraries/PassportTypes.sol":{"ast":{"absolutePath":"contracts/ve-better-passport/libraries/PassportTypes.sol","exportedSymbols":{"IGalaxyMember":[14602],"IX2EarnApps":[16381],"IXAllocationVotingGovernor":[17346],"PassportTypes":[19456]},"id":19457,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":19389,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"1195:23:43"},{"absolutePath":"contracts/interfaces/IXAllocationVotingGovernor.sol","file":"../../interfaces/IXAllocationVotingGovernor.sol","id":19391,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19457,"sourceUnit":17347,"src":"1220:93:43","symbolAliases":[{"foreign":{"id":19390,"name":"IXAllocationVotingGovernor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17346,"src":"1229:26:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IX2EarnApps.sol","file":"../../interfaces/IX2EarnApps.sol","id":19393,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19457,"sourceUnit":16382,"src":"1314:63:43","symbolAliases":[{"foreign":{"id":19392,"name":"IX2EarnApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16381,"src":"1323:11:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IGalaxyMember.sol","file":"../../interfaces/IGalaxyMember.sol","id":19395,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19457,"sourceUnit":14603,"src":"1378:67:43","symbolAliases":[{"foreign":{"id":19394,"name":"IGalaxyMember","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14602,"src":"1387:13:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"PassportTypes","contractDependencies":[],"contractKind":"library","documentation":{"id":19396,"nodeType":"StructuredDocumentation","src":"1447:415:43","text":" @title PassportTypes\n @notice This library defines various data types, enumerations, and initialization parameters used within the Passport contract.\n It includes the `InitializationData` struct, which contains references to external contracts and configurations for personhood checks,\n proof of participation, signaling, and passport delegation. It also includes role-based configuration settings."},"fullyImplemented":true,"id":19456,"linearizedBaseContracts":[19456],"name":"PassportTypes","nameLocation":"1871:13:43","nodeType":"ContractDefinition","nodes":[{"canonicalName":"PassportTypes.InitializationData","documentation":{"id":19397,"nodeType":"StructuredDocumentation","src":"1889:997:43","text":" @dev Struct containing data to initialize the contract\n @param xAllocationVoting The address of the xAllocationVoting\n @param x2EarnApps The address of the x2EarnApps\n @param galaxyMember The address of the galaxy member contract\n @param upgrader The address of the upgrader\n @param admins The addresses of the admins\n @param settingsManagers The addresses of the settings managers\n @param roleGranters The addresses of the role granters\n @param blacklisters The addresses of the blacklisters\n @param whitelisters The addresses of the whitelisters\n @param actionRegistrar The address of the action registrar\n @param actionScoreManager The address of the action score manager\n @param popScoreThreshold The threshold proof of participation score for a wallet to be considered a person\n @param signalingThreshold The threshold for a proposal to be active\n @param roundsForCumulativeScore The number of rounds for cumulative score"},"id":19421,"members":[{"constant":false,"id":19400,"mutability":"mutable","name":"xAllocationVoting","nameLocation":"2948:17:43","nodeType":"VariableDeclaration","scope":19421,"src":"2921:44:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"},"typeName":{"id":19399,"nodeType":"UserDefinedTypeName","pathNode":{"id":19398,"name":"IXAllocationVotingGovernor","nameLocations":["2921:26:43"],"nodeType":"IdentifierPath","referencedDeclaration":17346,"src":"2921:26:43"},"referencedDeclaration":17346,"src":"2921:26:43","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"visibility":"internal"},{"constant":false,"id":19403,"mutability":"mutable","name":"x2EarnApps","nameLocation":"2983:10:43","nodeType":"VariableDeclaration","scope":19421,"src":"2971:22:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"},"typeName":{"id":19402,"nodeType":"UserDefinedTypeName","pathNode":{"id":19401,"name":"IX2EarnApps","nameLocations":["2971:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":16381,"src":"2971:11:43"},"referencedDeclaration":16381,"src":"2971:11:43","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnApps_$16381","typeString":"contract IX2EarnApps"}},"visibility":"internal"},{"constant":false,"id":19406,"mutability":"mutable","name":"galaxyMember","nameLocation":"3013:12:43","nodeType":"VariableDeclaration","scope":19421,"src":"2999:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGalaxyMember_$14602","typeString":"contract IGalaxyMember"},"typeName":{"id":19405,"nodeType":"UserDefinedTypeName","pathNode":{"id":19404,"name":"IGalaxyMember","nameLocations":["2999:13:43"],"nodeType":"IdentifierPath","referencedDeclaration":14602,"src":"2999:13:43"},"referencedDeclaration":14602,"src":"2999:13:43","typeDescriptions":{"typeIdentifier":"t_contract$_IGalaxyMember_$14602","typeString":"contract IGalaxyMember"}},"visibility":"internal"},{"constant":false,"id":19408,"mutability":"mutable","name":"signalingThreshold","nameLocation":"3039:18:43","nodeType":"VariableDeclaration","scope":19421,"src":"3031:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19407,"name":"uint256","nodeType":"ElementaryTypeName","src":"3031:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19410,"mutability":"mutable","name":"roundsForCumulativeScore","nameLocation":"3071:24:43","nodeType":"VariableDeclaration","scope":19421,"src":"3063:32:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19409,"name":"uint256","nodeType":"ElementaryTypeName","src":"3063:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19412,"mutability":"mutable","name":"minimumGalaxyMemberLevel","nameLocation":"3109:24:43","nodeType":"VariableDeclaration","scope":19421,"src":"3101:32:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19411,"name":"uint256","nodeType":"ElementaryTypeName","src":"3101:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19414,"mutability":"mutable","name":"blacklistThreshold","nameLocation":"3147:18:43","nodeType":"VariableDeclaration","scope":19421,"src":"3139:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19413,"name":"uint256","nodeType":"ElementaryTypeName","src":"3139:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19416,"mutability":"mutable","name":"whitelistThreshold","nameLocation":"3179:18:43","nodeType":"VariableDeclaration","scope":19421,"src":"3171:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19415,"name":"uint256","nodeType":"ElementaryTypeName","src":"3171:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19418,"mutability":"mutable","name":"maxEntitiesPerPassport","nameLocation":"3211:22:43","nodeType":"VariableDeclaration","scope":19421,"src":"3203:30:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19417,"name":"uint256","nodeType":"ElementaryTypeName","src":"3203:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19420,"mutability":"mutable","name":"decayRate","nameLocation":"3247:9:43","nodeType":"VariableDeclaration","scope":19421,"src":"3239:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19419,"name":"uint256","nodeType":"ElementaryTypeName","src":"3239:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"InitializationData","nameLocation":"2896:18:43","nodeType":"StructDefinition","scope":19456,"src":"2889:372:43","visibility":"public"},{"canonicalName":"PassportTypes.InitializationRoleData","id":19442,"members":[{"constant":false,"id":19423,"mutability":"mutable","name":"admin","nameLocation":"3309:5:43","nodeType":"VariableDeclaration","scope":19442,"src":"3301:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19422,"name":"address","nodeType":"ElementaryTypeName","src":"3301:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19425,"mutability":"mutable","name":"botSignaler","nameLocation":"3328:11:43","nodeType":"VariableDeclaration","scope":19442,"src":"3320:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19424,"name":"address","nodeType":"ElementaryTypeName","src":"3320:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19427,"mutability":"mutable","name":"upgrader","nameLocation":"3353:8:43","nodeType":"VariableDeclaration","scope":19442,"src":"3345:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19426,"name":"address","nodeType":"ElementaryTypeName","src":"3345:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19429,"mutability":"mutable","name":"settingsManager","nameLocation":"3375:15:43","nodeType":"VariableDeclaration","scope":19442,"src":"3367:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19428,"name":"address","nodeType":"ElementaryTypeName","src":"3367:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19431,"mutability":"mutable","name":"roleGranter","nameLocation":"3404:11:43","nodeType":"VariableDeclaration","scope":19442,"src":"3396:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19430,"name":"address","nodeType":"ElementaryTypeName","src":"3396:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19433,"mutability":"mutable","name":"blacklister","nameLocation":"3429:11:43","nodeType":"VariableDeclaration","scope":19442,"src":"3421:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19432,"name":"address","nodeType":"ElementaryTypeName","src":"3421:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19435,"mutability":"mutable","name":"whitelister","nameLocation":"3454:11:43","nodeType":"VariableDeclaration","scope":19442,"src":"3446:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19434,"name":"address","nodeType":"ElementaryTypeName","src":"3446:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19437,"mutability":"mutable","name":"actionRegistrar","nameLocation":"3479:15:43","nodeType":"VariableDeclaration","scope":19442,"src":"3471:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19436,"name":"address","nodeType":"ElementaryTypeName","src":"3471:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19439,"mutability":"mutable","name":"actionScoreManager","nameLocation":"3508:18:43","nodeType":"VariableDeclaration","scope":19442,"src":"3500:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19438,"name":"address","nodeType":"ElementaryTypeName","src":"3500:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19441,"mutability":"mutable","name":"resetSignaler","nameLocation":"3540:13:43","nodeType":"VariableDeclaration","scope":19442,"src":"3532:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19440,"name":"address","nodeType":"ElementaryTypeName","src":"3532:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"InitializationRoleData","nameLocation":"3272:22:43","nodeType":"StructDefinition","scope":19456,"src":"3265:293:43","visibility":"public"},{"canonicalName":"PassportTypes.CheckType","id":19449,"members":[{"id":19443,"name":"UNDEFINED","nameLocation":"3583:9:43","nodeType":"EnumValue","src":"3583:9:43"},{"id":19444,"name":"WHITELIST_CHECK","nameLocation":"3651:15:43","nodeType":"EnumValue","src":"3651:15:43"},{"id":19445,"name":"BLACKLIST_CHECK","nameLocation":"3708:15:43","nodeType":"EnumValue","src":"3708:15:43"},{"id":19446,"name":"SIGNALING_CHECK","nameLocation":"3765:15:43","nodeType":"EnumValue","src":"3765:15:43"},{"id":19447,"name":"PARTICIPATION_SCORE_CHECK","nameLocation":"3840:25:43","nodeType":"EnumValue","src":"3840:25:43"},{"id":19448,"name":"GM_OWNERSHIP_CHECK","nameLocation":"3911:18:43","nodeType":"EnumValue","src":"3911:18:43"}],"name":"CheckType","nameLocation":"3567:9:43","nodeType":"EnumDefinition","src":"3562:408:43"},{"canonicalName":"PassportTypes.APP_SECURITY","documentation":{"id":19450,"nodeType":"StructuredDocumentation","src":"3974:145:43","text":"@notice Security level indicates how secure the app is\n @dev App security is used to calculate the overall score of a sustainable action"},"id":19455,"members":[{"id":19451,"name":"NONE","nameLocation":"4146:4:43","nodeType":"EnumValue","src":"4146:4:43"},{"id":19452,"name":"LOW","nameLocation":"4156:3:43","nodeType":"EnumValue","src":"4156:3:43"},{"id":19453,"name":"MEDIUM","nameLocation":"4165:6:43","nodeType":"EnumValue","src":"4165:6:43"},{"id":19454,"name":"HIGH","nameLocation":"4177:4:43","nodeType":"EnumValue","src":"4177:4:43"}],"name":"APP_SECURITY","nameLocation":"4127:12:43","nodeType":"EnumDefinition","src":"4122:63:43"}],"scope":19457,"src":"1863:2324:43","usedErrors":[],"usedEvents":[]}],"src":"1195:2993:43"},"id":43},"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol":{"ast":{"absolutePath":"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol","exportedSymbols":{"Checkpoints":[6421],"DataTypes":[17569],"EndorsementUtils":[22803],"IStargateNFT":[18909],"IVeBetterPassport":[15484],"IXAllocationVotingGovernor":[17346],"PassportTypes":[19456],"SafeCast":[4849],"X2EarnAppsStorageTypes":[23070]},"id":22804,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":19458,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"1195:23:44"},{"absolutePath":"contracts/ve-better-passport/libraries/PassportTypes.sol","file":"../../ve-better-passport/libraries/PassportTypes.sol","id":19460,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22804,"sourceUnit":19457,"src":"1220:85:44","symbolAliases":[{"foreign":{"id":19459,"name":"PassportTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19456,"src":"1229:13:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IVeBetterPassport.sol","file":"../../interfaces/IVeBetterPassport.sol","id":19462,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22804,"sourceUnit":15485,"src":"1306:75:44","symbolAliases":[{"foreign":{"id":19461,"name":"IVeBetterPassport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"1315:17:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IXAllocationVotingGovernor.sol","file":"../../interfaces/IXAllocationVotingGovernor.sol","id":19464,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22804,"sourceUnit":17347,"src":"1382:93:44","symbolAliases":[{"foreign":{"id":19463,"name":"IXAllocationVotingGovernor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17346,"src":"1391:26:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/interfaces/IStargateNFT.sol","file":"../../mocks/Stargate/interfaces/IStargateNFT.sol","id":19466,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22804,"sourceUnit":18910,"src":"1476:80:44","symbolAliases":[{"foreign":{"id":19465,"name":"IStargateNFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18909,"src":"1485:12:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol","file":"../../mocks/Stargate/StargateNFT/libraries/DataTypes.sol","id":19468,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22804,"sourceUnit":17570,"src":"1557:85:44","symbolAliases":[{"foreign":{"id":19467,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17569,"src":"1566:9:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/structs/Checkpoints.sol","file":"@openzeppelin/contracts/utils/structs/Checkpoints.sol","id":19470,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22804,"sourceUnit":6422,"src":"1643:84:44","symbolAliases":[{"foreign":{"id":19469,"name":"Checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"1652:11:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":19472,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22804,"sourceUnit":4850,"src":"1728:75:44","symbolAliases":[{"foreign":{"id":19471,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"1737:8:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol","file":"./X2EarnAppsStorageTypes.sol","id":19474,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22804,"sourceUnit":23071,"src":"1804:70:44","symbolAliases":[{"foreign":{"id":19473,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"1813:22:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"EndorsementUtils","contractDependencies":[],"contractKind":"library","documentation":{"id":19475,"nodeType":"StructuredDocumentation","src":"1876:121:44","text":" @title EndorsementUtils\n @dev Utility library for handling endorsements of applications in a voting context."},"fullyImplemented":true,"id":22803,"linearizedBaseContracts":[22803],"name":"EndorsementUtils","nameLocation":"2006:16:44","nodeType":"ContractDefinition","nodes":[{"global":false,"id":19479,"libraryName":{"id":19476,"name":"Checkpoints","nameLocations":["2033:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":6421,"src":"2033:11:44"},"nodeType":"UsingForDirective","src":"2027:43:44","typeName":{"id":19478,"nodeType":"UserDefinedTypeName","pathNode":{"id":19477,"name":"Checkpoints.Trace208","nameLocations":["2049:11:44","2061:8:44"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"2049:20:44"},"referencedDeclaration":5383,"src":"2049:20:44","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}}},{"canonicalName":"EndorsementUtils.NodeStrengthLevel","id":19488,"members":[{"id":19480,"name":"None","nameLocation":"2187:4:44","nodeType":"EnumValue","src":"2187:4:44"},{"id":19481,"name":"Strength","nameLocation":"2197:8:44","nodeType":"EnumValue","src":"2197:8:44"},{"id":19482,"name":"Thunder","nameLocation":"2211:7:44","nodeType":"EnumValue","src":"2211:7:44"},{"id":19483,"name":"Mjolnir","nameLocation":"2224:7:44","nodeType":"EnumValue","src":"2224:7:44"},{"id":19484,"name":"VeThorX","nameLocation":"2237:7:44","nodeType":"EnumValue","src":"2237:7:44"},{"id":19485,"name":"StrengthX","nameLocation":"2250:9:44","nodeType":"EnumValue","src":"2250:9:44"},{"id":19486,"name":"ThunderX","nameLocation":"2265:8:44","nodeType":"EnumValue","src":"2265:8:44"},{"id":19487,"name":"MjolnirX","nameLocation":"2279:8:44","nodeType":"EnumValue","src":"2279:8:44"}],"name":"NodeStrengthLevel","nameLocation":"2163:17:44","nodeType":"EnumDefinition","src":"2158:133:44"},{"canonicalName":"EndorsementUtils.NodeStrengthScores","id":19503,"members":[{"constant":false,"id":19490,"mutability":"mutable","name":"strength","nameLocation":"2335:8:44","nodeType":"VariableDeclaration","scope":19503,"src":"2327:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2327:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19492,"mutability":"mutable","name":"thunder","nameLocation":"2357:7:44","nodeType":"VariableDeclaration","scope":19503,"src":"2349:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19491,"name":"uint256","nodeType":"ElementaryTypeName","src":"2349:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19494,"mutability":"mutable","name":"mjolnir","nameLocation":"2378:7:44","nodeType":"VariableDeclaration","scope":19503,"src":"2370:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19493,"name":"uint256","nodeType":"ElementaryTypeName","src":"2370:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19496,"mutability":"mutable","name":"veThorX","nameLocation":"2399:7:44","nodeType":"VariableDeclaration","scope":19503,"src":"2391:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19495,"name":"uint256","nodeType":"ElementaryTypeName","src":"2391:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19498,"mutability":"mutable","name":"strengthX","nameLocation":"2420:9:44","nodeType":"VariableDeclaration","scope":19503,"src":"2412:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19497,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19500,"mutability":"mutable","name":"thunderX","nameLocation":"2443:8:44","nodeType":"VariableDeclaration","scope":19503,"src":"2435:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19499,"name":"uint256","nodeType":"ElementaryTypeName","src":"2435:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19502,"mutability":"mutable","name":"mjolnirX","nameLocation":"2465:8:44","nodeType":"VariableDeclaration","scope":19503,"src":"2457:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19501,"name":"uint256","nodeType":"ElementaryTypeName","src":"2457:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"NodeStrengthScores","nameLocation":"2302:18:44","nodeType":"StructDefinition","scope":22803,"src":"2295:183:44","visibility":"public"},{"canonicalName":"EndorsementUtils.NodeSource","id":19507,"members":[{"id":19504,"name":"None","nameLocation":"2504:4:44","nodeType":"EnumValue","src":"2504:4:44"},{"id":19505,"name":"VeChainNodes","nameLocation":"2514:12:44","nodeType":"EnumValue","src":"2514:12:44"},{"id":19506,"name":"StargateNFT","nameLocation":"2532:11:44","nodeType":"EnumValue","src":"2532:11:44"}],"name":"NodeSource","nameLocation":"2487:10:44","nodeType":"EnumDefinition","src":"2482:65:44"},{"errorSelector":"0c7ac578","id":19511,"name":"X2EarnNonexistentApp","nameLocation":"2633:20:44","nodeType":"ErrorDefinition","parameters":{"id":19510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19509,"mutability":"mutable","name":"appId","nameLocation":"2662:5:44","nodeType":"VariableDeclaration","scope":19511,"src":"2654:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19508,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2654:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2653:15:44"},"src":"2627:42:44"},{"errorSelector":"3126f1ab","id":19515,"name":"X2EarnAppBlacklisted","nameLocation":"2678:20:44","nodeType":"ErrorDefinition","parameters":{"id":19514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19513,"mutability":"mutable","name":"appId","nameLocation":"2707:5:44","nodeType":"VariableDeclaration","scope":19515,"src":"2699:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19512,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2699:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2698:15:44"},"src":"2672:42:44"},{"errorSelector":"9a88246c","id":19517,"name":"X2EarnNonNodeHolder","nameLocation":"2723:19:44","nodeType":"ErrorDefinition","parameters":{"id":19516,"nodeType":"ParameterList","parameters":[],"src":"2742:2:44"},"src":"2717:28:44"},{"errorSelector":"bf700bb2","id":19521,"name":"X2EarnAppAlreadyEndorsed","nameLocation":"2754:24:44","nodeType":"ErrorDefinition","parameters":{"id":19520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19519,"mutability":"mutable","name":"appId","nameLocation":"2787:5:44","nodeType":"VariableDeclaration","scope":19521,"src":"2779:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19518,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2779:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2778:15:44"},"src":"2748:46:44"},{"errorSelector":"ba391c6c","id":19523,"name":"NodeNotAllowedToEndorse","nameLocation":"2803:23:44","nodeType":"ErrorDefinition","parameters":{"id":19522,"nodeType":"ParameterList","parameters":[],"src":"2826:2:44"},"src":"2797:32:44"},{"errorSelector":"48d2eaea","id":19525,"name":"X2EarnNonEndorser","nameLocation":"2838:17:44","nodeType":"ErrorDefinition","parameters":{"id":19524,"nodeType":"ParameterList","parameters":[],"src":"2855:2:44"},"src":"2832:26:44"},{"errorSelector":"e2cf34b7","id":19529,"name":"NodeManagementXAppAlreadyIncluded","nameLocation":"2867:33:44","nodeType":"ErrorDefinition","parameters":{"id":19528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19527,"mutability":"mutable","name":"appId","nameLocation":"2909:5:44","nodeType":"VariableDeclaration","scope":19529,"src":"2901:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19526,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2901:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2900:15:44"},"src":"2861:55:44"},{"errorSelector":"3aa06cfc","id":19533,"name":"X2EarnInvalidAddress","nameLocation":"2925:20:44","nodeType":"ErrorDefinition","parameters":{"id":19532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19531,"mutability":"mutable","name":"addr","nameLocation":"2954:4:44","nodeType":"VariableDeclaration","scope":19533,"src":"2946:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19530,"name":"address","nodeType":"ElementaryTypeName","src":"2946:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2945:14:44"},"src":"2919:41:44"},{"errorSelector":"7bd63419","id":19535,"name":"EndorsementsPaused","nameLocation":"2984:18:44","nodeType":"ErrorDefinition","parameters":{"id":19534,"nodeType":"ParameterList","parameters":[],"src":"3002:2:44"},"src":"2978:27:44"},{"errorSelector":"564f58b3","id":19541,"name":"CooldownNotExpired","nameLocation":"3014:18:44","nodeType":"ErrorDefinition","parameters":{"id":19540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19537,"mutability":"mutable","name":"nodeId","nameLocation":"3041:6:44","nodeType":"VariableDeclaration","scope":19541,"src":"3033:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3033:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19539,"mutability":"mutable","name":"appId","nameLocation":"3057:5:44","nodeType":"VariableDeclaration","scope":19541,"src":"3049:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3049:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3032:31:44"},"src":"3008:56:44"},{"errorSelector":"68615086","id":19549,"name":"ExceedsMaxPointsPerApp","nameLocation":"3073:22:44","nodeType":"ErrorDefinition","parameters":{"id":19548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19543,"mutability":"mutable","name":"appId","nameLocation":"3104:5:44","nodeType":"VariableDeclaration","scope":19549,"src":"3096:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19542,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3096:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19545,"mutability":"mutable","name":"current","nameLocation":"3119:7:44","nodeType":"VariableDeclaration","scope":19549,"src":"3111:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19544,"name":"uint256","nodeType":"ElementaryTypeName","src":"3111:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19547,"mutability":"mutable","name":"max","nameLocation":"3136:3:44","nodeType":"VariableDeclaration","scope":19549,"src":"3128:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19546,"name":"uint256","nodeType":"ElementaryTypeName","src":"3128:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3095:45:44"},"src":"3067:74:44"},{"errorSelector":"87b212fd","id":19557,"name":"ExceedsMaxPointsPerNode","nameLocation":"3150:23:44","nodeType":"ErrorDefinition","parameters":{"id":19556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19551,"mutability":"mutable","name":"nodeId","nameLocation":"3182:6:44","nodeType":"VariableDeclaration","scope":19557,"src":"3174:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19550,"name":"uint256","nodeType":"ElementaryTypeName","src":"3174:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19553,"mutability":"mutable","name":"appId","nameLocation":"3198:5:44","nodeType":"VariableDeclaration","scope":19557,"src":"3190:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3190:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19555,"mutability":"mutable","name":"max","nameLocation":"3213:3:44","nodeType":"VariableDeclaration","scope":19557,"src":"3205:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19554,"name":"uint256","nodeType":"ElementaryTypeName","src":"3205:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3173:44:44"},"src":"3144:74:44"},{"errorSelector":"133dd146","id":19565,"name":"InsufficientAvailablePoints","nameLocation":"3227:27:44","nodeType":"ErrorDefinition","parameters":{"id":19564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19559,"mutability":"mutable","name":"nodeId","nameLocation":"3263:6:44","nodeType":"VariableDeclaration","scope":19565,"src":"3255:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19558,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19561,"mutability":"mutable","name":"available","nameLocation":"3279:9:44","nodeType":"VariableDeclaration","scope":19565,"src":"3271:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19560,"name":"uint256","nodeType":"ElementaryTypeName","src":"3271:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19563,"mutability":"mutable","name":"requested","nameLocation":"3298:9:44","nodeType":"VariableDeclaration","scope":19565,"src":"3290:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19562,"name":"uint256","nodeType":"ElementaryTypeName","src":"3290:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3254:54:44"},"src":"3221:88:44"},{"errorSelector":"b15e3914","id":19567,"name":"InvalidPointsAmount","nameLocation":"3318:19:44","nodeType":"ErrorDefinition","parameters":{"id":19566,"nodeType":"ParameterList","parameters":[],"src":"3337:2:44"},"src":"3312:28:44"},{"errorSelector":"3dbff3b5","id":19569,"name":"MigrationAlreadyCompleted","nameLocation":"3349:25:44","nodeType":"ErrorDefinition","parameters":{"id":19568,"nodeType":"ParameterList","parameters":[],"src":"3374:2:44"},"src":"3343:34:44"},{"errorSelector":"33b11f83","id":19575,"name":"InvalidEndorsementIndex","nameLocation":"3386:23:44","nodeType":"ErrorDefinition","parameters":{"id":19574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19571,"mutability":"mutable","name":"nodeId","nameLocation":"3418:6:44","nodeType":"VariableDeclaration","scope":19575,"src":"3410:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19570,"name":"uint256","nodeType":"ElementaryTypeName","src":"3410:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19573,"mutability":"mutable","name":"appId","nameLocation":"3434:5:44","nodeType":"VariableDeclaration","scope":19575,"src":"3426:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19572,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3426:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3409:31:44"},"src":"3380:61:44"},{"errorSelector":"5ab47377","id":19581,"name":"MaxPointsPerAppBelowThreshold","nameLocation":"3450:29:44","nodeType":"ErrorDefinition","parameters":{"id":19580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19577,"mutability":"mutable","name":"maxPoints","nameLocation":"3488:9:44","nodeType":"VariableDeclaration","scope":19581,"src":"3480:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19576,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19579,"mutability":"mutable","name":"threshold","nameLocation":"3507:9:44","nodeType":"VariableDeclaration","scope":19581,"src":"3499:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19578,"name":"uint256","nodeType":"ElementaryTypeName","src":"3499:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3479:38:44"},"src":"3444:74:44"},{"errorSelector":"48b11bea","id":19587,"name":"ThresholdExceedsMaxPointsPerApp","nameLocation":"3527:31:44","nodeType":"ErrorDefinition","parameters":{"id":19586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19583,"mutability":"mutable","name":"threshold","nameLocation":"3567:9:44","nodeType":"VariableDeclaration","scope":19587,"src":"3559:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19582,"name":"uint256","nodeType":"ElementaryTypeName","src":"3559:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19585,"mutability":"mutable","name":"maxPointsPerApp","nameLocation":"3586:15:44","nodeType":"VariableDeclaration","scope":19587,"src":"3578:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19584,"name":"uint256","nodeType":"ElementaryTypeName","src":"3578:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3558:44:44"},"src":"3521:82:44"},{"errorSelector":"7f07449b","id":19593,"name":"FutureLookup","nameLocation":"3612:12:44","nodeType":"ErrorDefinition","parameters":{"id":19592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19589,"mutability":"mutable","name":"timepoint","nameLocation":"3633:9:44","nodeType":"VariableDeclaration","scope":19593,"src":"3625:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19588,"name":"uint256","nodeType":"ElementaryTypeName","src":"3625:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19591,"mutability":"mutable","name":"currentBlock","nameLocation":"3652:12:44","nodeType":"VariableDeclaration","scope":19593,"src":"3644:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19590,"name":"uint256","nodeType":"ElementaryTypeName","src":"3644:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3624:41:44"},"src":"3606:60:44"},{"anonymous":false,"eventSelector":"181c8615e49dc4eaed218e1d225e4a34a0fb364fc70601a191573daa19d57eda","id":19603,"name":"AppAdded","nameLocation":"3752:8:44","nodeType":"EventDefinition","parameters":{"id":19602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19595,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"3777:2:44","nodeType":"VariableDeclaration","scope":19603,"src":"3761:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19594,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3761:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19597,"indexed":false,"mutability":"mutable","name":"addr","nameLocation":"3789:4:44","nodeType":"VariableDeclaration","scope":19603,"src":"3781:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19596,"name":"address","nodeType":"ElementaryTypeName","src":"3781:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19599,"indexed":false,"mutability":"mutable","name":"name","nameLocation":"3802:4:44","nodeType":"VariableDeclaration","scope":19603,"src":"3795:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19598,"name":"string","nodeType":"ElementaryTypeName","src":"3795:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19601,"indexed":false,"mutability":"mutable","name":"appAvailableForAllocationVoting","nameLocation":"3813:31:44","nodeType":"VariableDeclaration","scope":19603,"src":"3808:36:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19600,"name":"bool","nodeType":"ElementaryTypeName","src":"3808:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3760:85:44"},"src":"3746:100:44"},{"anonymous":false,"eventSelector":"1193ced031b3229da69fab9691642274e1ea2625dfce9967135e6d5e6029d220","id":19613,"name":"AppEndorsed","nameLocation":"3855:11:44","nodeType":"EventDefinition","parameters":{"id":19612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19605,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"3883:5:44","nodeType":"VariableDeclaration","scope":19613,"src":"3867:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3867:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19607,"indexed":true,"mutability":"mutable","name":"nodeId","nameLocation":"3906:6:44","nodeType":"VariableDeclaration","scope":19613,"src":"3890:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19606,"name":"uint256","nodeType":"ElementaryTypeName","src":"3890:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19609,"indexed":false,"mutability":"mutable","name":"endorser","nameLocation":"3922:8:44","nodeType":"VariableDeclaration","scope":19613,"src":"3914:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19608,"name":"address","nodeType":"ElementaryTypeName","src":"3914:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19611,"indexed":false,"mutability":"mutable","name":"points","nameLocation":"3940:6:44","nodeType":"VariableDeclaration","scope":19613,"src":"3932:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19610,"name":"uint256","nodeType":"ElementaryTypeName","src":"3932:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3866:81:44"},"src":"3849:99:44"},{"anonymous":false,"eventSelector":"75a2c0f7478dc6b5e01e316a07fc6b72d32d90ca051d898b5d198300d1a7c036","id":19621,"name":"AppUnendorsed","nameLocation":"3957:13:44","nodeType":"EventDefinition","parameters":{"id":19620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19615,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"3987:5:44","nodeType":"VariableDeclaration","scope":19621,"src":"3971:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19614,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3971:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19617,"indexed":true,"mutability":"mutable","name":"nodeId","nameLocation":"4010:6:44","nodeType":"VariableDeclaration","scope":19621,"src":"3994:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19616,"name":"uint256","nodeType":"ElementaryTypeName","src":"3994:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19619,"indexed":false,"mutability":"mutable","name":"points","nameLocation":"4026:6:44","nodeType":"VariableDeclaration","scope":19621,"src":"4018:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19618,"name":"uint256","nodeType":"ElementaryTypeName","src":"4018:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3970:63:44"},"src":"3951:83:44"},{"anonymous":false,"eventSelector":"fd9f033c3b3a54e30cfe5bf2bc66dea3bac111d66ecc2c03a2bcc1c5ccdd0250","id":19625,"name":"EndorsementsPausedUpdated","nameLocation":"4043:25:44","nodeType":"EventDefinition","parameters":{"id":19624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19623,"indexed":false,"mutability":"mutable","name":"paused","nameLocation":"4074:6:44","nodeType":"VariableDeclaration","scope":19625,"src":"4069:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19622,"name":"bool","nodeType":"ElementaryTypeName","src":"4069:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4068:13:44"},"src":"4037:45:44"},{"anonymous":false,"eventSelector":"c91e5ded81b3894187855cc79c29a7eaa6b412d30cfa1658fe313129291db242","id":19630,"name":"NodeStrengthScoresUpdated","nameLocation":"4091:25:44","nodeType":"EventDefinition","parameters":{"id":19629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19628,"indexed":false,"mutability":"mutable","name":"nodeStrengthScores","nameLocation":"4136:18:44","nodeType":"VariableDeclaration","scope":19630,"src":"4117:37:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_memory_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores"},"typeName":{"id":19627,"nodeType":"UserDefinedTypeName","pathNode":{"id":19626,"name":"NodeStrengthScores","nameLocations":["4117:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":19503,"src":"4117:18:44"},"referencedDeclaration":19503,"src":"4117:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_storage_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores"}},"visibility":"internal"}],"src":"4116:39:44"},"src":"4085:71:44"},{"anonymous":false,"eventSelector":"39ed358ca65699fee4083beb84f3d91ce2201bb0c89859317fc5be02231609ed","id":19636,"name":"AppEndorsementStatusUpdated","nameLocation":"4165:27:44","nodeType":"EventDefinition","parameters":{"id":19635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19632,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"4209:5:44","nodeType":"VariableDeclaration","scope":19636,"src":"4193:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19631,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4193:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19634,"indexed":false,"mutability":"mutable","name":"endorsed","nameLocation":"4221:8:44","nodeType":"VariableDeclaration","scope":19636,"src":"4216:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19633,"name":"bool","nodeType":"ElementaryTypeName","src":"4216:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4192:38:44"},"src":"4159:72:44"},{"anonymous":false,"eventSelector":"502689eeffd57ae8470e1d86a4a8cd293a44bfbbd2429cb375da3d901a3dd80f","id":19644,"name":"AppUnendorsedGracePeriodStarted","nameLocation":"4240:31:44","nodeType":"EventDefinition","parameters":{"id":19643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19638,"indexed":true,"mutability":"mutable","name":"appId","nameLocation":"4288:5:44","nodeType":"VariableDeclaration","scope":19644,"src":"4272:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19637,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4272:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19640,"indexed":false,"mutability":"mutable","name":"startBlock","nameLocation":"4302:10:44","nodeType":"VariableDeclaration","scope":19644,"src":"4295:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":19639,"name":"uint48","nodeType":"ElementaryTypeName","src":"4295:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":19642,"indexed":false,"mutability":"mutable","name":"endBlock","nameLocation":"4321:8:44","nodeType":"VariableDeclaration","scope":19644,"src":"4314:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":19641,"name":"uint48","nodeType":"ElementaryTypeName","src":"4314:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4271:59:44"},"src":"4234:97:44"},{"anonymous":false,"eventSelector":"55c7a79c45e9a972909cd640f9336a14a84adbaf756211f16267001854110191","id":19650,"name":"GracePeriodUpdated","nameLocation":"4340:18:44","nodeType":"EventDefinition","parameters":{"id":19649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19646,"indexed":false,"mutability":"mutable","name":"oldGracePeriod","nameLocation":"4367:14:44","nodeType":"VariableDeclaration","scope":19650,"src":"4359:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19645,"name":"uint256","nodeType":"ElementaryTypeName","src":"4359:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19648,"indexed":false,"mutability":"mutable","name":"newGracePeriod","nameLocation":"4391:14:44","nodeType":"VariableDeclaration","scope":19650,"src":"4383:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19647,"name":"uint256","nodeType":"ElementaryTypeName","src":"4383:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4358:48:44"},"src":"4334:73:44"},{"anonymous":false,"eventSelector":"98eaabfe135a9c40c420208962bf81e7926b4d6df3e23502164c0554b7b35224","id":19656,"name":"CooldownPeriodUpdated","nameLocation":"4416:21:44","nodeType":"EventDefinition","parameters":{"id":19655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19652,"indexed":false,"mutability":"mutable","name":"oldCooldownPeriod","nameLocation":"4446:17:44","nodeType":"VariableDeclaration","scope":19656,"src":"4438:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19651,"name":"uint256","nodeType":"ElementaryTypeName","src":"4438:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19654,"indexed":false,"mutability":"mutable","name":"newCooldownPeriod","nameLocation":"4473:17:44","nodeType":"VariableDeclaration","scope":19656,"src":"4465:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19653,"name":"uint256","nodeType":"ElementaryTypeName","src":"4465:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4437:54:44"},"src":"4410:82:44"},{"anonymous":false,"eventSelector":"c0d3753bc89284345726d88cd5c82025ebedac4070cdbc551a0ba27b5180a637","id":19662,"name":"EndorsementScoreThresholdUpdated","nameLocation":"4501:32:44","nodeType":"EventDefinition","parameters":{"id":19661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19658,"indexed":false,"mutability":"mutable","name":"oldThreshold","nameLocation":"4542:12:44","nodeType":"VariableDeclaration","scope":19662,"src":"4534:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19657,"name":"uint256","nodeType":"ElementaryTypeName","src":"4534:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19660,"indexed":false,"mutability":"mutable","name":"newThreshold","nameLocation":"4564:12:44","nodeType":"VariableDeclaration","scope":19662,"src":"4556:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19659,"name":"uint256","nodeType":"ElementaryTypeName","src":"4556:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4533:44:44"},"src":"4495:83:44"},{"anonymous":false,"eventSelector":"ff24fd32f78a666774cb7265d538935a108bff58375ccca2d01c4c9b66ac22a5","id":19668,"name":"MaxPointsPerNodePerAppUpdated","nameLocation":"4587:29:44","nodeType":"EventDefinition","parameters":{"id":19667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19664,"indexed":false,"mutability":"mutable","name":"oldMax","nameLocation":"4625:6:44","nodeType":"VariableDeclaration","scope":19668,"src":"4617:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19663,"name":"uint256","nodeType":"ElementaryTypeName","src":"4617:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19666,"indexed":false,"mutability":"mutable","name":"newMax","nameLocation":"4641:6:44","nodeType":"VariableDeclaration","scope":19668,"src":"4633:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19665,"name":"uint256","nodeType":"ElementaryTypeName","src":"4633:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4616:32:44"},"src":"4581:68:44"},{"anonymous":false,"eventSelector":"f4c290bd7ee941689bccbabc9dbd567d76db3be9871c7aa182dabf6737f7fc70","id":19674,"name":"MaxPointsPerAppUpdated","nameLocation":"4658:22:44","nodeType":"EventDefinition","parameters":{"id":19673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19670,"indexed":false,"mutability":"mutable","name":"oldMax","nameLocation":"4689:6:44","nodeType":"VariableDeclaration","scope":19674,"src":"4681:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19669,"name":"uint256","nodeType":"ElementaryTypeName","src":"4681:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19672,"indexed":false,"mutability":"mutable","name":"newMax","nameLocation":"4705:6:44","nodeType":"VariableDeclaration","scope":19674,"src":"4697:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19671,"name":"uint256","nodeType":"ElementaryTypeName","src":"4697:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4680:32:44"},"src":"4652:61:44"},{"body":{"id":19694,"nodeType":"Block","src":"5060:122:44","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19684,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"5081:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5104:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"5081:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5081:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19687,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5129:31:44","memberName":"_appEndorsementScoreCheckpoints","nodeType":"MemberAccess","referencedDeclaration":22971,"src":"5081:79:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(bytes32 => struct Checkpoints.Trace208 storage ref)"}},"id":19689,"indexExpression":{"id":19688,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19677,"src":"5161:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5081:86:44","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage","typeString":"struct Checkpoints.Trace208 storage ref"}},"id":19690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5168:6:44","memberName":"latest","nodeType":"MemberAccess","referencedDeclaration":5608,"src":"5081:93:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Trace208_$5383_storage_ptr_$returns$_t_uint208_$attached_to$_t_struct$_Trace208_$5383_storage_ptr_$","typeString":"function (struct Checkpoints.Trace208 storage pointer) view returns (uint208)"}},"id":19691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5081:95:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint208","typeString":"uint208"}],"id":19683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5073:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19682,"name":"uint256","nodeType":"ElementaryTypeName","src":"5073:7:44","typeDescriptions":{}}},"id":19692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5073:104:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19681,"id":19693,"nodeType":"Return","src":"5066:111:44"}]},"documentation":{"id":19675,"nodeType":"StructuredDocumentation","src":"4804:188:44","text":" @notice Returns the current endorsement score for an app.\n @param appId The unique identifier of the app.\n @return The total endorsement points the app has received."},"functionSelector":"7ba53285","id":19695,"implemented":true,"kind":"function","modifiers":[],"name":"getScore","nameLocation":"5004:8:44","nodeType":"FunctionDefinition","parameters":{"id":19678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19677,"mutability":"mutable","name":"appId","nameLocation":"5021:5:44","nodeType":"VariableDeclaration","scope":19695,"src":"5013:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19676,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5013:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5012:15:44"},"returnParameters":{"id":19681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19695,"src":"5051:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19679,"name":"uint256","nodeType":"ElementaryTypeName","src":"5051:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5050:9:44"},"scope":22803,"src":"4995:187:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19740,"nodeType":"Block","src":"5535:316:44","statements":[{"assignments":[19709],"declarations":[{"constant":false,"id":19709,"mutability":"mutable","name":"$","nameLocation":"5591:1:44","nodeType":"VariableDeclaration","scope":19740,"src":"5541:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":19708,"nodeType":"UserDefinedTypeName","pathNode":{"id":19707,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["5541:22:44","5564:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"5541:41:44"},"referencedDeclaration":22972,"src":"5541:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":19713,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19710,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"5595:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5618:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"5595:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5595:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5541:101:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19714,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19700,"src":"5652:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":19715,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5664:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5670:6:44","memberName":"number","nodeType":"MemberAccess","src":"5664:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5652:24:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19725,"nodeType":"IfStatement","src":"5648:89:44","trueBody":{"id":19724,"nodeType":"Block","src":"5678:59:44","statements":[{"errorCall":{"arguments":[{"id":19719,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19700,"src":"5706:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19720,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5717:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":19721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5723:6:44","memberName":"number","nodeType":"MemberAccess","src":"5717:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19718,"name":"FutureLookup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19593,"src":"5693:12:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":19722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5693:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19723,"nodeType":"RevertStatement","src":"5686:44:44"}]}},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":19735,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19700,"src":"5834:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19733,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"5816:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4849_$","typeString":"type(library SafeCast)"}},"id":19734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5825:8:44","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"5816:17:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":19736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"baseExpression":{"expression":{"id":19728,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19709,"src":"5757:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19729,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5759:31:44","memberName":"_appEndorsementScoreCheckpoints","nodeType":"MemberAccess","referencedDeclaration":22971,"src":"5757:33:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(bytes32 => struct Checkpoints.Trace208 storage ref)"}},"id":19731,"indexExpression":{"id":19730,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19698,"src":"5791:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5757:40:44","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage","typeString":"struct Checkpoints.Trace208 storage ref"}},"id":19732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5798:17:44","memberName":"upperLookupRecent","nodeType":"MemberAccess","referencedDeclaration":5578,"src":"5757:58:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Trace208_$5383_storage_ptr_$_t_uint48_$returns$_t_uint208_$attached_to$_t_struct$_Trace208_$5383_storage_ptr_$","typeString":"function (struct Checkpoints.Trace208 storage pointer,uint48) view returns (uint208)"}},"id":19737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5757:88:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint208","typeString":"uint208"}],"id":19727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5749:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19726,"name":"uint256","nodeType":"ElementaryTypeName","src":"5749:7:44","typeDescriptions":{}}},"id":19738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5749:97:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19704,"id":19739,"nodeType":"Return","src":"5742:104:44"}]},"documentation":{"id":19696,"nodeType":"StructuredDocumentation","src":"5186:251:44","text":" @notice Returns the endorsement score for an app at a specific block number.\n @param appId The unique identifier of the app.\n @param timepoint The block number to query.\n @return The endorsement score at the given timepoint."},"functionSelector":"9ab17c9b","id":19741,"implemented":true,"kind":"function","modifiers":[],"name":"getScoreAtTimepoint","nameLocation":"5449:19:44","nodeType":"FunctionDefinition","parameters":{"id":19701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19698,"mutability":"mutable","name":"appId","nameLocation":"5477:5:44","nodeType":"VariableDeclaration","scope":19741,"src":"5469:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5469:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":19700,"mutability":"mutable","name":"timepoint","nameLocation":"5492:9:44","nodeType":"VariableDeclaration","scope":19741,"src":"5484:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19699,"name":"uint256","nodeType":"ElementaryTypeName","src":"5484:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5468:34:44"},"returnParameters":{"id":19704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19741,"src":"5526:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19702,"name":"uint256","nodeType":"ElementaryTypeName","src":"5526:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5525:9:44"},"scope":22803,"src":"5440:411:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19841,"nodeType":"Block","src":"6200:657:44","statements":[{"assignments":[19754],"declarations":[{"constant":false,"id":19754,"mutability":"mutable","name":"$","nameLocation":"6256:1:44","nodeType":"VariableDeclaration","scope":19841,"src":"6206:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":19753,"nodeType":"UserDefinedTypeName","pathNode":{"id":19752,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["6206:22:44","6229:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"6206:41:44"},"referencedDeclaration":22972,"src":"6206:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":19758,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19755,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"6260:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6283:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"6260:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6260:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6206:101:44"},{"assignments":[19763],"declarations":[{"constant":false,"id":19763,"mutability":"mutable","name":"nodeIds","nameLocation":"6331:7:44","nodeType":"VariableDeclaration","scope":19841,"src":"6313:25:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":19761,"name":"uint256","nodeType":"ElementaryTypeName","src":"6313:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19762,"nodeType":"ArrayTypeName","src":"6313:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":19768,"initialValue":{"baseExpression":{"expression":{"id":19764,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19754,"src":"6341:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6343:17:44","memberName":"_appEndorserNodes","nodeType":"MemberAccess","referencedDeclaration":22952,"src":"6341:19:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[] storage ref)"}},"id":19767,"indexExpression":{"id":19766,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19744,"src":"6361:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6341:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"6313:54:44"},{"assignments":[19770],"declarations":[{"constant":false,"id":19770,"mutability":"mutable","name":"length","nameLocation":"6381:6:44","nodeType":"VariableDeclaration","scope":19841,"src":"6373:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19769,"name":"uint256","nodeType":"ElementaryTypeName","src":"6373:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19773,"initialValue":{"expression":{"id":19771,"name":"nodeIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19763,"src":"6390:7:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":19772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6398:6:44","memberName":"length","nodeType":"MemberAccess","src":"6390:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6373:31:44"},{"assignments":[19778],"declarations":[{"constant":false,"id":19778,"mutability":"mutable","name":"endorsers","nameLocation":"6427:9:44","nodeType":"VariableDeclaration","scope":19841,"src":"6410:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19776,"name":"address","nodeType":"ElementaryTypeName","src":"6410:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19777,"nodeType":"ArrayTypeName","src":"6410:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":19784,"initialValue":{"arguments":[{"id":19782,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19770,"src":"6453:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6439:13:44","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":19779,"name":"address","nodeType":"ElementaryTypeName","src":"6443:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19780,"nodeType":"ArrayTypeName","src":"6443:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":19783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:21:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6410:50:44"},{"assignments":[19786],"declarations":[{"constant":false,"id":19786,"mutability":"mutable","name":"count","nameLocation":"6474:5:44","nodeType":"VariableDeclaration","scope":19841,"src":"6466:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19785,"name":"uint256","nodeType":"ElementaryTypeName","src":"6466:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19787,"nodeType":"VariableDeclarationStatement","src":"6466:13:44"},{"body":{"id":19836,"nodeType":"Block","src":"6519:259:44","statements":[{"assignments":[19798],"declarations":[{"constant":false,"id":19798,"mutability":"mutable","name":"nodeId","nameLocation":"6535:6:44","nodeType":"VariableDeclaration","scope":19836,"src":"6527:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19797,"name":"uint256","nodeType":"ElementaryTypeName","src":"6527:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19802,"initialValue":{"baseExpression":{"id":19799,"name":"nodeIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19763,"src":"6544:7:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":19801,"indexExpression":{"id":19800,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19789,"src":"6552:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6544:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6527:27:44"},{"condition":{"id":19808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6566:35:44","subExpression":{"arguments":[{"id":19806,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19798,"src":"6594:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":19803,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19754,"src":"6567:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6569:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"6567:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":19805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6582:11:44","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":18678,"src":"6567:26:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view external returns (bool)"}},"id":19807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6567:34:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19810,"nodeType":"IfStatement","src":"6562:49:44","trueBody":{"id":19809,"nodeType":"Continue","src":"6603:8:44"}},{"assignments":[19812],"declarations":[{"constant":false,"id":19812,"mutability":"mutable","name":"manager","nameLocation":"6627:7:44","nodeType":"VariableDeclaration","scope":19836,"src":"6619:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19811,"name":"address","nodeType":"ElementaryTypeName","src":"6619:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":19818,"initialValue":{"arguments":[{"id":19816,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19798,"src":"6668:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":19813,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19754,"src":"6637:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6639:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"6637:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":19815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6652:15:44","memberName":"getTokenManager","nodeType":"MemberAccess","referencedDeclaration":18746,"src":"6637:30:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":19817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6637:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6619:56:44"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19819,"name":"manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19812,"src":"6687:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":19822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6706:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":19821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6698:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19820,"name":"address","nodeType":"ElementaryTypeName","src":"6698:7:44","typeDescriptions":{}}},"id":19823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6698:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6687:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19835,"nodeType":"IfStatement","src":"6683:89:44","trueBody":{"id":19834,"nodeType":"Block","src":"6710:62:44","statements":[{"expression":{"id":19829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19825,"name":"endorsers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19778,"src":"6720:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":19827,"indexExpression":{"id":19826,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19786,"src":"6730:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6720:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19828,"name":"manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19812,"src":"6739:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6720:26:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19830,"nodeType":"ExpressionStatement","src":"6720:26:44"},{"expression":{"id":19832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6756:7:44","subExpression":{"id":19831,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19786,"src":"6756:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19833,"nodeType":"ExpressionStatement","src":"6756:7:44"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19791,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19789,"src":"6502:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":19792,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19770,"src":"6506:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6502:10:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19837,"initializationExpression":{"assignments":[19789],"declarations":[{"constant":false,"id":19789,"mutability":"mutable","name":"i","nameLocation":"6499:1:44","nodeType":"VariableDeclaration","scope":19837,"src":"6491:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19788,"name":"uint256","nodeType":"ElementaryTypeName","src":"6491:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19790,"nodeType":"VariableDeclarationStatement","src":"6491:9:44"},"loopExpression":{"expression":{"id":19795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6514:3:44","subExpression":{"id":19794,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19789,"src":"6514:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19796,"nodeType":"ExpressionStatement","src":"6514:3:44"},"nodeType":"ForStatement","src":"6486:292:44"},{"AST":{"nodeType":"YulBlock","src":"6793:38:44","statements":[{"expression":{"arguments":[{"name":"endorsers","nodeType":"YulIdentifier","src":"6808:9:44"},{"name":"count","nodeType":"YulIdentifier","src":"6819:5:44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6801:6:44"},"nodeType":"YulFunctionCall","src":"6801:24:44"},"nodeType":"YulExpressionStatement","src":"6801:24:44"}]},"evmVersion":"paris","externalReferences":[{"declaration":19786,"isOffset":false,"isSlot":false,"src":"6819:5:44","valueSize":1},{"declaration":19778,"isOffset":false,"isSlot":false,"src":"6808:9:44","valueSize":1}],"id":19838,"nodeType":"InlineAssembly","src":"6784:47:44"},{"expression":{"id":19839,"name":"endorsers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19778,"src":"6843:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":19749,"id":19840,"nodeType":"Return","src":"6836:16:44"}]},"documentation":{"id":19742,"nodeType":"StructuredDocumentation","src":"5855:264:44","text":" @notice Returns all endorser addresses for an app.\n @dev Filters out burned nodes and returns only valid manager addresses.\n @param appId The unique identifier of the app.\n @return Array of addresses managing nodes that endorse this app."},"functionSelector":"44bb58f7","id":19842,"implemented":true,"kind":"function","modifiers":[],"name":"getEndorsers","nameLocation":"6131:12:44","nodeType":"FunctionDefinition","parameters":{"id":19745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19744,"mutability":"mutable","name":"appId","nameLocation":"6152:5:44","nodeType":"VariableDeclaration","scope":19842,"src":"6144:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19743,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6144:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6143:15:44"},"returnParameters":{"id":19749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19748,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19842,"src":"6182:16:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19746,"name":"address","nodeType":"ElementaryTypeName","src":"6182:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19747,"nodeType":"ArrayTypeName","src":"6182:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6181:18:44"},"scope":22803,"src":"6122:735:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19858,"nodeType":"Block","src":"7113:90:44","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19851,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"7126:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7149:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"7126:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7126:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7174:17:44","memberName":"_appEndorserNodes","nodeType":"MemberAccess","referencedDeclaration":22952,"src":"7126:65:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[] storage ref)"}},"id":19856,"indexExpression":{"id":19855,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19845,"src":"7192:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7126:72:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"functionReturnParameters":19850,"id":19857,"nodeType":"Return","src":"7119:79:44"}]},"documentation":{"id":19843,"nodeType":"StructuredDocumentation","src":"6861:167:44","text":" @notice Returns all node IDs that endorse an app.\n @param appId The unique identifier of the app.\n @return Array of node IDs endorsing this app."},"functionSelector":"5cfdd470","id":19859,"implemented":true,"kind":"function","modifiers":[],"name":"getEndorserNodes","nameLocation":"7040:16:44","nodeType":"FunctionDefinition","parameters":{"id":19846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19845,"mutability":"mutable","name":"appId","nameLocation":"7065:5:44","nodeType":"VariableDeclaration","scope":19859,"src":"7057:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19844,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7057:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7056:15:44"},"returnParameters":{"id":19850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19859,"src":"7095:16:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":19847,"name":"uint256","nodeType":"ElementaryTypeName","src":"7095:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19848,"nodeType":"ArrayTypeName","src":"7095:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7094:18:44"},"scope":22803,"src":"7031:172:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19915,"nodeType":"Block","src":"7504:363:44","statements":[{"assignments":[19871],"declarations":[{"constant":false,"id":19871,"mutability":"mutable","name":"$","nameLocation":"7560:1:44","nodeType":"VariableDeclaration","scope":19915,"src":"7510:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":19870,"nodeType":"UserDefinedTypeName","pathNode":{"id":19869,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["7510:22:44","7533:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"7510:41:44"},"referencedDeclaration":22972,"src":"7510:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":19875,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19872,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"7564:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7587:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"7564:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7564:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7510:101:44"},{"assignments":[19881],"declarations":[{"constant":false,"id":19881,"mutability":"mutable","name":"nodeLevels","nameLocation":"7642:10:44","nodeType":"VariableDeclaration","scope":19915,"src":"7617:35:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr","typeString":"struct DataTypes.Token[]"},"typeName":{"baseType":{"id":19879,"nodeType":"UserDefinedTypeName","pathNode":{"id":19878,"name":"DataTypes.Token","nameLocations":["7617:9:44","7627:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":17547,"src":"7617:15:44"},"referencedDeclaration":17547,"src":"7617:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_Token_$17547_storage_ptr","typeString":"struct DataTypes.Token"}},"id":19880,"nodeType":"ArrayTypeName","src":"7617:17:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_storage_$dyn_storage_ptr","typeString":"struct DataTypes.Token[]"}},"visibility":"internal"}],"id":19887,"initialValue":{"arguments":[{"id":19885,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19862,"src":"7686:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":19882,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19871,"src":"7655:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7657:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"7655:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":19884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7670:15:44","memberName":"tokensManagedBy","nodeType":"MemberAccess","referencedDeclaration":18765,"src":"7655:30:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr_$","typeString":"function (address) view external returns (struct DataTypes.Token memory[] memory)"}},"id":19886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7655:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr","typeString":"struct DataTypes.Token memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7617:74:44"},{"assignments":[19889],"declarations":[{"constant":false,"id":19889,"mutability":"mutable","name":"totalScore","nameLocation":"7705:10:44","nodeType":"VariableDeclaration","scope":19915,"src":"7697:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19888,"name":"uint256","nodeType":"ElementaryTypeName","src":"7697:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19890,"nodeType":"VariableDeclarationStatement","src":"7697:18:44"},{"body":{"id":19911,"nodeType":"Block","src":"7765:75:44","statements":[{"expression":{"id":19909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19901,"name":"totalScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19889,"src":"7773:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"expression":{"id":19902,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19871,"src":"7787:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7789:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"7787:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":19908,"indexExpression":{"expression":{"baseExpression":{"id":19904,"name":"nodeLevels","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19881,"src":"7811:10:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr","typeString":"struct DataTypes.Token memory[] memory"}},"id":19906,"indexExpression":{"id":19905,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19892,"src":"7822:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7811:13:44","typeDescriptions":{"typeIdentifier":"t_struct$_Token_$17547_memory_ptr","typeString":"struct DataTypes.Token memory"}},"id":19907,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7825:7:44","memberName":"levelId","nodeType":"MemberAccess","referencedDeclaration":17540,"src":"7811:21:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7787:46:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7773:60:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19910,"nodeType":"ExpressionStatement","src":"7773:60:44"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19894,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19892,"src":"7737:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":19895,"name":"nodeLevels","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19881,"src":"7741:10:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr","typeString":"struct DataTypes.Token memory[] memory"}},"id":19896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7752:6:44","memberName":"length","nodeType":"MemberAccess","src":"7741:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7737:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19912,"initializationExpression":{"assignments":[19892],"declarations":[{"constant":false,"id":19892,"mutability":"mutable","name":"i","nameLocation":"7734:1:44","nodeType":"VariableDeclaration","scope":19912,"src":"7726:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19891,"name":"uint256","nodeType":"ElementaryTypeName","src":"7726:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19893,"nodeType":"VariableDeclarationStatement","src":"7726:9:44"},"loopExpression":{"expression":{"id":19899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7760:3:44","subExpression":{"id":19898,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19892,"src":"7760:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19900,"nodeType":"ExpressionStatement","src":"7760:3:44"},"nodeType":"ForStatement","src":"7721:119:44"},{"expression":{"id":19913,"name":"totalScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19889,"src":"7852:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19866,"id":19914,"nodeType":"Return","src":"7845:17:44"}]},"documentation":{"id":19860,"nodeType":"StructuredDocumentation","src":"7207:214:44","text":" @notice Returns the total endorsement score a user has from all their managed nodes.\n @param user The address of the user.\n @return Total endorsement points across all nodes the user manages."},"functionSelector":"c996c624","id":19916,"implemented":true,"kind":"function","modifiers":[],"name":"getUsersEndorsementScore","nameLocation":"7433:24:44","nodeType":"FunctionDefinition","parameters":{"id":19863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19862,"mutability":"mutable","name":"user","nameLocation":"7466:4:44","nodeType":"VariableDeclaration","scope":19916,"src":"7458:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19861,"name":"address","nodeType":"ElementaryTypeName","src":"7458:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7457:14:44"},"returnParameters":{"id":19866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19916,"src":"7495:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19864,"name":"uint256","nodeType":"ElementaryTypeName","src":"7495:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7494:9:44"},"scope":22803,"src":"7424:443:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19946,"nodeType":"Block","src":"8178:219:44","statements":[{"assignments":[19928],"declarations":[{"constant":false,"id":19928,"mutability":"mutable","name":"$","nameLocation":"8234:1:44","nodeType":"VariableDeclaration","scope":19946,"src":"8184:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":19927,"nodeType":"UserDefinedTypeName","pathNode":{"id":19926,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["8184:22:44","8207:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"8184:41:44"},"referencedDeclaration":22972,"src":"8184:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":19932,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19929,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"8238:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8261:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"8238:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8238:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8184:101:44"},{"assignments":[19934],"declarations":[{"constant":false,"id":19934,"mutability":"mutable","name":"nodeLevel","nameLocation":"8297:9:44","nodeType":"VariableDeclaration","scope":19946,"src":"8291:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19933,"name":"uint8","nodeType":"ElementaryTypeName","src":"8291:5:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":19940,"initialValue":{"arguments":[{"id":19938,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19919,"src":"8338:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":19935,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19928,"src":"8309:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8311:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"8309:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":19937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8324:13:44","memberName":"getTokenLevel","nodeType":"MemberAccess","referencedDeclaration":18643,"src":"8309:28:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) view external returns (uint8)"}},"id":19939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8309:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"8291:54:44"},{"expression":{"baseExpression":{"expression":{"id":19941,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19928,"src":"8358:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8360:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"8358:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":19944,"indexExpression":{"id":19943,"name":"nodeLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19934,"src":"8382:9:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8358:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19923,"id":19945,"nodeType":"Return","src":"8351:41:44"}]},"documentation":{"id":19917,"nodeType":"StructuredDocumentation","src":"7871:223:44","text":" @notice Returns the endorsement score for a specific node based on its level.\n @param nodeId The unique identifier of the node.\n @return The endorsement score the node has based on its strength level."},"functionSelector":"42c89f52","id":19947,"implemented":true,"kind":"function","modifiers":[],"name":"getNodeEndorsementScore","nameLocation":"8106:23:44","nodeType":"FunctionDefinition","parameters":{"id":19920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19919,"mutability":"mutable","name":"nodeId","nameLocation":"8138:6:44","nodeType":"VariableDeclaration","scope":19947,"src":"8130:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19918,"name":"uint256","nodeType":"ElementaryTypeName","src":"8130:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8129:16:44"},"returnParameters":{"id":19923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19947,"src":"8169:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19921,"name":"uint256","nodeType":"ElementaryTypeName","src":"8169:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8168:9:44"},"scope":22803,"src":"8097:300:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19962,"nodeType":"Block","src":"8726:98:44","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19955,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"8739:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8762:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"8739:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8739:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8787:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"8739:69:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":19960,"indexExpression":{"id":19959,"name":"nodeLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19950,"src":"8809:9:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8739:80:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19954,"id":19961,"nodeType":"Return","src":"8732:87:44"}]},"documentation":{"id":19948,"nodeType":"StructuredDocumentation","src":"8401:238:44","text":" @notice Returns the endorsement score for a specific node strength level.\n @param nodeLevel The strength level (1-7 corresponding to different node types).\n @return The endorsement score assigned to that node level."},"functionSelector":"acdb9f05","id":19963,"implemented":true,"kind":"function","modifiers":[],"name":"nodeLevelEndorsementScore","nameLocation":"8651:25:44","nodeType":"FunctionDefinition","parameters":{"id":19951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19950,"mutability":"mutable","name":"nodeLevel","nameLocation":"8683:9:44","nodeType":"VariableDeclaration","scope":19963,"src":"8677:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19949,"name":"uint8","nodeType":"ElementaryTypeName","src":"8677:5:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"8676:17:44"},"returnParameters":{"id":19954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19963,"src":"8717:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19952,"name":"uint256","nodeType":"ElementaryTypeName","src":"8717:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8716:9:44"},"scope":22803,"src":"8642:182:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19974,"nodeType":"Block","src":"9097:86:44","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19969,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"9110:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9133:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"9110:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9110:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9158:20:44","memberName":"_gracePeriodDuration","nodeType":"MemberAccess","referencedDeclaration":22902,"src":"9110:68:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":19968,"id":19973,"nodeType":"Return","src":"9103:75:44"}]},"documentation":{"id":19964,"nodeType":"StructuredDocumentation","src":"8828:211:44","text":" @notice Returns the grace period duration in blocks.\n @dev Grace period is the time an app has to regain endorsement after losing eligibility.\n @return The grace period duration in blocks."},"functionSelector":"a06db7dc","id":19975,"implemented":true,"kind":"function","modifiers":[],"name":"gracePeriod","nameLocation":"9051:11:44","nodeType":"FunctionDefinition","parameters":{"id":19965,"nodeType":"ParameterList","parameters":[],"src":"9062:2:44"},"returnParameters":{"id":19968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19975,"src":"9088:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19966,"name":"uint256","nodeType":"ElementaryTypeName","src":"9088:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9087:9:44"},"scope":22803,"src":"9042:141:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19986,"nodeType":"Block","src":"9448:81:44","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19981,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"9461:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9484:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"9461:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9509:15:44","memberName":"_cooldownPeriod","nodeType":"MemberAccess","referencedDeclaration":22925,"src":"9461:63:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19980,"id":19985,"nodeType":"Return","src":"9454:70:44"}]},"documentation":{"id":19976,"nodeType":"StructuredDocumentation","src":"9187:200:44","text":" @notice Returns the cooldown period duration in rounds.\n @dev Cooldown prevents immediate un-endorsement after endorsing an app.\n @return The cooldown period duration in rounds."},"functionSelector":"04646a49","id":19987,"implemented":true,"kind":"function","modifiers":[],"name":"cooldownPeriod","nameLocation":"9399:14:44","nodeType":"FunctionDefinition","parameters":{"id":19977,"nodeType":"ParameterList","parameters":[],"src":"9413:2:44"},"returnParameters":{"id":19980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19979,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19987,"src":"9439:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19978,"name":"uint256","nodeType":"ElementaryTypeName","src":"9439:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9438:9:44"},"scope":22803,"src":"9390:139:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19998,"nodeType":"Block","src":"9761:92:44","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19993,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"9774:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":19994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9797:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"9774:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":19995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9774:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":19996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9822:26:44","memberName":"_endorsementScoreThreshold","nodeType":"MemberAccess","referencedDeclaration":22904,"src":"9774:74:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19992,"id":19997,"nodeType":"Return","src":"9767:81:44"}]},"documentation":{"id":19988,"nodeType":"StructuredDocumentation","src":"9533:156:44","text":" @notice Returns the minimum endorsement score required for an app to be eligible.\n @return The endorsement score threshold (default 100)."},"functionSelector":"f1a962ac","id":19999,"implemented":true,"kind":"function","modifiers":[],"name":"endorsementScoreThreshold","nameLocation":"9701:25:44","nodeType":"FunctionDefinition","parameters":{"id":19989,"nodeType":"ParameterList","parameters":[],"src":"9726:2:44"},"returnParameters":{"id":19992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19999,"src":"9752:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19990,"name":"uint256","nodeType":"ElementaryTypeName","src":"9752:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9751:9:44"},"scope":22803,"src":"9692:161:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20022,"nodeType":"Block","src":"10217:134:44","statements":[{"condition":{"id":20009,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20004,"src":"10227:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20012,"nodeType":"IfStatement","src":"10223:31:44","trueBody":{"expression":{"hexValue":"66616c7365","id":20010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10249:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":20008,"id":20011,"nodeType":"Return","src":"10242:12:44"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20013,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"10267:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10290:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"10267:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10267:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10315:20:44","memberName":"_unendorsedAppsIndex","nodeType":"MemberAccess","referencedDeclaration":22883,"src":"10267:68:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":20018,"indexExpression":{"id":20017,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20002,"src":"10336:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10267:75:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":20019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10345:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10267:79:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":20008,"id":20021,"nodeType":"Return","src":"10260:86:44"}]},"documentation":{"id":20000,"nodeType":"StructuredDocumentation","src":"9857:268:44","text":" @notice Checks if an app is in the unendorsed (pending endorsement) list.\n @param appId The unique identifier of the app.\n @param isBlacklisted Whether the app is blacklisted.\n @return True if the app is pending endorsement, false otherwise."},"functionSelector":"1e13ed7a","id":20023,"implemented":true,"kind":"function","modifiers":[],"name":"isAppUnendorsed","nameLocation":"10137:15:44","nodeType":"FunctionDefinition","parameters":{"id":20005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20002,"mutability":"mutable","name":"appId","nameLocation":"10161:5:44","nodeType":"VariableDeclaration","scope":20023,"src":"10153:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20001,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10153:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20004,"mutability":"mutable","name":"isBlacklisted","nameLocation":"10173:13:44","nodeType":"VariableDeclaration","scope":20023,"src":"10168:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20003,"name":"bool","nodeType":"ElementaryTypeName","src":"10168:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10152:35:44"},"returnParameters":{"id":20008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20023,"src":"10211:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20006,"name":"bool","nodeType":"ElementaryTypeName","src":"10211:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10210:6:44"},"scope":22803,"src":"10128:223:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20035,"nodeType":"Block","src":"10583:81:44","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20030,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"10596:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10619:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"10596:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10596:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20033,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10644:15:44","memberName":"_unendorsedApps","nodeType":"MemberAccess","referencedDeclaration":22879,"src":"10596:63:44","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"functionReturnParameters":20029,"id":20034,"nodeType":"Return","src":"10589:70:44"}]},"documentation":{"id":20024,"nodeType":"StructuredDocumentation","src":"10355:156:44","text":" @notice Returns all app IDs that are currently pending endorsement.\n @return Array of app IDs waiting to reach the endorsement threshold."},"functionSelector":"d6418b8a","id":20036,"implemented":true,"kind":"function","modifiers":[],"name":"unendorsedAppIds","nameLocation":"10523:16:44","nodeType":"FunctionDefinition","parameters":{"id":20025,"nodeType":"ParameterList","parameters":[],"src":"10539:2:44"},"returnParameters":{"id":20029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20028,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20036,"src":"10565:16:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":20026,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10565:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":20027,"nodeType":"ArrayTypeName","src":"10565:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"10564:18:44"},"scope":22803,"src":"10514:150:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20047,"nodeType":"Block","src":"10882:89:44","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20042,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"10895:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10918:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"10895:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10895:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10943:23:44","memberName":"_maxPointsPerNodePerApp","nodeType":"MemberAccess","referencedDeclaration":22960,"src":"10895:71:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20041,"id":20046,"nodeType":"Return","src":"10888:78:44"}]},"documentation":{"id":20037,"nodeType":"StructuredDocumentation","src":"10668:145:44","text":" @notice Returns the maximum points a single node can assign to one app.\n @return The max points per node per app (default 49)."},"functionSelector":"4a0c4a42","id":20048,"implemented":true,"kind":"function","modifiers":[],"name":"maxPointsPerNodePerApp","nameLocation":"10825:22:44","nodeType":"FunctionDefinition","parameters":{"id":20038,"nodeType":"ParameterList","parameters":[],"src":"10847:2:44"},"returnParameters":{"id":20041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20040,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20048,"src":"10873:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20039,"name":"uint256","nodeType":"ElementaryTypeName","src":"10873:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10872:9:44"},"scope":22803,"src":"10816:155:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20059,"nodeType":"Block","src":"11182:82:44","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20054,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"11195:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11218:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"11195:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11195:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11243:16:44","memberName":"_maxPointsPerApp","nodeType":"MemberAccess","referencedDeclaration":22962,"src":"11195:64:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20053,"id":20058,"nodeType":"Return","src":"11188:71:44"}]},"documentation":{"id":20049,"nodeType":"StructuredDocumentation","src":"10975:145:44","text":" @notice Returns the maximum total points an app can receive from all endorsers.\n @return The max points per app (default 110)."},"functionSelector":"5cbc2ffb","id":20060,"implemented":true,"kind":"function","modifiers":[],"name":"maxPointsPerApp","nameLocation":"11132:15:44","nodeType":"FunctionDefinition","parameters":{"id":20050,"nodeType":"ParameterList","parameters":[],"src":"11147:2:44"},"returnParameters":{"id":20053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20060,"src":"11173:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20051,"name":"uint256","nodeType":"ElementaryTypeName","src":"11173:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11172:9:44"},"scope":22803,"src":"11123:141:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20071,"nodeType":"Block","src":"11479:85:44","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20066,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"11492:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11515:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"11492:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11492:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11540:19:44","memberName":"_endorsementsPaused","nodeType":"MemberAccess","referencedDeclaration":22964,"src":"11492:67:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":20065,"id":20070,"nodeType":"Return","src":"11485:74:44"}]},"documentation":{"id":20061,"nodeType":"StructuredDocumentation","src":"11268:149:44","text":" @notice Checks if endorsements are currently paused (during migration).\n @return True if endorsements are paused, false otherwise."},"functionSelector":"b90a30ea","id":20072,"implemented":true,"kind":"function","modifiers":[],"name":"endorsementsPaused","nameLocation":"11429:18:44","nodeType":"FunctionDefinition","parameters":{"id":20062,"nodeType":"ParameterList","parameters":[],"src":"11447:2:44"},"returnParameters":{"id":20065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20072,"src":"11473:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20063,"name":"bool","nodeType":"ElementaryTypeName","src":"11473:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11472:6:44"},"scope":22803,"src":"11420:144:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20083,"nodeType":"Block","src":"11760:85:44","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20078,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"11773:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11796:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"11773:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11773:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11821:19:44","memberName":"_migrationCompleted","nodeType":"MemberAccess","referencedDeclaration":22966,"src":"11773:67:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":20077,"id":20082,"nodeType":"Return","src":"11766:74:44"}]},"documentation":{"id":20073,"nodeType":"StructuredDocumentation","src":"11568:130:44","text":" @notice Checks if the V8 migration has been completed.\n @return True if migration is complete, false otherwise."},"functionSelector":"31677980","id":20084,"implemented":true,"kind":"function","modifiers":[],"name":"migrationCompleted","nameLocation":"11710:18:44","nodeType":"FunctionDefinition","parameters":{"id":20074,"nodeType":"ParameterList","parameters":[],"src":"11728:2:44"},"returnParameters":{"id":20077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20076,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20084,"src":"11754:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20075,"name":"bool","nodeType":"ElementaryTypeName","src":"11754:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11753:6:44"},"scope":22803,"src":"11701:144:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20101,"nodeType":"Block","src":"12276:93:44","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20094,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"12289:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12312:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"12289:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12289:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20097,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12337:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"12289:67:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":20099,"indexExpression":{"id":20098,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20087,"src":"12357:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12289:75:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"functionReturnParameters":20093,"id":20100,"nodeType":"Return","src":"12282:82:44"}]},"documentation":{"id":20085,"nodeType":"StructuredDocumentation","src":"11849:297:44","text":" @notice Returns all active endorsements for a node.\n @dev Each endorsement contains appId, points, and endorsedAtRound for cooldown tracking.\n @param nodeId The unique identifier of the node.\n @return Array of Endorsement structs representing all apps the node endorses."},"functionSelector":"44532be2","id":20102,"implemented":true,"kind":"function","modifiers":[],"name":"getNodeActiveEndorsements","nameLocation":"12158:25:44","nodeType":"FunctionDefinition","parameters":{"id":20088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20087,"mutability":"mutable","name":"nodeId","nameLocation":"12197:6:44","nodeType":"VariableDeclaration","scope":20102,"src":"12189:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20086,"name":"uint256","nodeType":"ElementaryTypeName","src":"12189:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12183:24:44"},"returnParameters":{"id":20093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20092,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20102,"src":"12231:43:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_memory_ptr_$dyn_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":20090,"nodeType":"UserDefinedTypeName","pathNode":{"id":20089,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["12231:22:44","12254:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"12231:34:44"},"referencedDeclaration":22865,"src":"12231:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":20091,"nodeType":"ArrayTypeName","src":"12231:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"src":"12230:45:44"},"scope":22803,"src":"12149:220:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20167,"nodeType":"Block","src":"12729:442:44","statements":[{"assignments":[20116],"declarations":[{"constant":false,"id":20116,"mutability":"mutable","name":"$","nameLocation":"12785:1:44","nodeType":"VariableDeclaration","scope":20167,"src":"12735:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20115,"nodeType":"UserDefinedTypeName","pathNode":{"id":20114,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["12735:22:44","12758:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"12735:41:44"},"referencedDeclaration":22972,"src":"12735:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20120,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20117,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"12789:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12812:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"12789:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12789:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12735:101:44"},{"assignments":[20126],"declarations":[{"constant":false,"id":20126,"mutability":"mutable","name":"endorsements","nameLocation":"12887:12:44","nodeType":"VariableDeclaration","scope":20167,"src":"12842:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":20124,"nodeType":"UserDefinedTypeName","pathNode":{"id":20123,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["12842:22:44","12865:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"12842:34:44"},"referencedDeclaration":22865,"src":"12842:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":20125,"nodeType":"ArrayTypeName","src":"12842:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":20131,"initialValue":{"baseExpression":{"expression":{"id":20127,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20116,"src":"12902:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12904:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"12902:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":20130,"indexExpression":{"id":20129,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20105,"src":"12924:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12902:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12842:89:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20132,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20126,"src":"12941:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12954:6:44","memberName":"length","nodeType":"MemberAccess","src":"12941:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12964:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12941:24:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20138,"nodeType":"IfStatement","src":"12937:38:44","trueBody":{"expression":{"hexValue":"30","id":20136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12974:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":20111,"id":20137,"nodeType":"Return","src":"12967:8:44"}},{"assignments":[20140],"declarations":[{"constant":false,"id":20140,"mutability":"mutable","name":"index","nameLocation":"12989:5:44","nodeType":"VariableDeclaration","scope":20167,"src":"12981:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20139,"name":"uint256","nodeType":"ElementaryTypeName","src":"12981:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20147,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":20141,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20116,"src":"12997:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12999:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"12997:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":20144,"indexExpression":{"id":20143,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20105,"src":"13027:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12997:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":20146,"indexExpression":{"id":20145,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20107,"src":"13035:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12997:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12981:60:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20148,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20140,"src":"13051:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":20149,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20126,"src":"13060:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13073:6:44","memberName":"length","nodeType":"MemberAccess","src":"13060:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13051:28:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":20157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":20152,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20126,"src":"13083:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20154,"indexExpression":{"id":20153,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20140,"src":"13096:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13083:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":20155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13103:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"13083:25:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":20156,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20107,"src":"13112:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13083:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13051:66:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20161,"nodeType":"IfStatement","src":"13047:80:44","trueBody":{"expression":{"hexValue":"30","id":20159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13126:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":20111,"id":20160,"nodeType":"Return","src":"13119:8:44"}},{"expression":{"expression":{"baseExpression":{"id":20162,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20126,"src":"13140:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20164,"indexExpression":{"id":20163,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20140,"src":"13153:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13140:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":20165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13160:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"13140:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20111,"id":20166,"nodeType":"Return","src":"13133:33:44"}]},"documentation":{"id":20103,"nodeType":"StructuredDocumentation","src":"12373:261:44","text":" @notice Returns how many points a node has allocated to a specific app.\n @param nodeId The unique identifier of the node.\n @param appId The unique identifier of the app.\n @return The number of points the node has endorsed to this app."},"functionSelector":"72584102","id":20168,"implemented":true,"kind":"function","modifiers":[],"name":"getNodePointsForApp","nameLocation":"12646:19:44","nodeType":"FunctionDefinition","parameters":{"id":20108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20105,"mutability":"mutable","name":"nodeId","nameLocation":"12674:6:44","nodeType":"VariableDeclaration","scope":20168,"src":"12666:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20104,"name":"uint256","nodeType":"ElementaryTypeName","src":"12666:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20107,"mutability":"mutable","name":"appId","nameLocation":"12690:5:44","nodeType":"VariableDeclaration","scope":20168,"src":"12682:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20106,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12682:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12665:31:44"},"returnParameters":{"id":20111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20168,"src":"12720:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20109,"name":"uint256","nodeType":"ElementaryTypeName","src":"12720:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12719:9:44"},"scope":22803,"src":"12637:534:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20220,"nodeType":"Block","src":"13453:356:44","statements":[{"assignments":[20180],"declarations":[{"constant":false,"id":20180,"mutability":"mutable","name":"$","nameLocation":"13509:1:44","nodeType":"VariableDeclaration","scope":20220,"src":"13459:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20179,"nodeType":"UserDefinedTypeName","pathNode":{"id":20178,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["13459:22:44","13482:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"13459:41:44"},"referencedDeclaration":22972,"src":"13459:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20184,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20181,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"13513:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13536:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"13513:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13513:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"13459:101:44"},{"assignments":[20190],"declarations":[{"constant":false,"id":20190,"mutability":"mutable","name":"endorsements","nameLocation":"13611:12:44","nodeType":"VariableDeclaration","scope":20220,"src":"13566:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":20188,"nodeType":"UserDefinedTypeName","pathNode":{"id":20187,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["13566:22:44","13589:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"13566:34:44"},"referencedDeclaration":22865,"src":"13566:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":20189,"nodeType":"ArrayTypeName","src":"13566:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":20195,"initialValue":{"baseExpression":{"expression":{"id":20191,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20180,"src":"13626:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13628:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"13626:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":20194,"indexExpression":{"id":20193,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"13648:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13626:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13566:89:44"},{"assignments":[20197],"declarations":[{"constant":false,"id":20197,"mutability":"mutable","name":"usedPoints","nameLocation":"13669:10:44","nodeType":"VariableDeclaration","scope":20220,"src":"13661:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20196,"name":"uint256","nodeType":"ElementaryTypeName","src":"13661:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20198,"nodeType":"VariableDeclarationStatement","src":"13661:18:44"},{"body":{"id":20216,"nodeType":"Block","src":"13731:51:44","statements":[{"expression":{"id":20214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20209,"name":"usedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20197,"src":"13739:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":20210,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20190,"src":"13753:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20212,"indexExpression":{"id":20211,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20200,"src":"13766:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13753:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":20213,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13769:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"13753:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13739:36:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20215,"nodeType":"ExpressionStatement","src":"13739:36:44"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20202,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20200,"src":"13701:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":20203,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20190,"src":"13705:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13718:6:44","memberName":"length","nodeType":"MemberAccess","src":"13705:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13701:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20217,"initializationExpression":{"assignments":[20200],"declarations":[{"constant":false,"id":20200,"mutability":"mutable","name":"i","nameLocation":"13698:1:44","nodeType":"VariableDeclaration","scope":20217,"src":"13690:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20199,"name":"uint256","nodeType":"ElementaryTypeName","src":"13690:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20201,"nodeType":"VariableDeclarationStatement","src":"13690:9:44"},"loopExpression":{"expression":{"id":20207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13726:3:44","subExpression":{"id":20206,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20200,"src":"13726:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20208,"nodeType":"ExpressionStatement","src":"13726:3:44"},"nodeType":"ForStatement","src":"13685:97:44"},{"expression":{"id":20218,"name":"usedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20197,"src":"13794:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20175,"id":20219,"nodeType":"Return","src":"13787:17:44"}]},"documentation":{"id":20169,"nodeType":"StructuredDocumentation","src":"13175:200:44","text":" @notice Returns the total points a node has used across all endorsements.\n @param nodeId The unique identifier of the node.\n @return Total points the node has allocated to apps."},"functionSelector":"d76c3973","id":20221,"implemented":true,"kind":"function","modifiers":[],"name":"getNodeUsedPoints","nameLocation":"13387:17:44","nodeType":"FunctionDefinition","parameters":{"id":20172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20171,"mutability":"mutable","name":"nodeId","nameLocation":"13413:6:44","nodeType":"VariableDeclaration","scope":20221,"src":"13405:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20170,"name":"uint256","nodeType":"ElementaryTypeName","src":"13405:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13404:16:44"},"returnParameters":{"id":20175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20174,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20221,"src":"13444:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20173,"name":"uint256","nodeType":"ElementaryTypeName","src":"13444:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13443:9:44"},"scope":22803,"src":"13378:431:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20295,"nodeType":"Block","src":"14204:523:44","statements":[{"assignments":[20233],"declarations":[{"constant":false,"id":20233,"mutability":"mutable","name":"$","nameLocation":"14260:1:44","nodeType":"VariableDeclaration","scope":20295,"src":"14210:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20232,"nodeType":"UserDefinedTypeName","pathNode":{"id":20231,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["14210:22:44","14233:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"14210:41:44"},"referencedDeclaration":22972,"src":"14210:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20237,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20234,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"14264:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14287:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"14264:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14264:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14210:101:44"},{"assignments":[20239],"declarations":[{"constant":false,"id":20239,"mutability":"mutable","name":"nodeLevel","nameLocation":"14323:9:44","nodeType":"VariableDeclaration","scope":20295,"src":"14317:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20238,"name":"uint8","nodeType":"ElementaryTypeName","src":"14317:5:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":20245,"initialValue":{"arguments":[{"id":20243,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20224,"src":"14364:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":20240,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20233,"src":"14335:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14337:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"14335:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":20242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14350:13:44","memberName":"getTokenLevel","nodeType":"MemberAccess","referencedDeclaration":18643,"src":"14335:28:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) view external returns (uint8)"}},"id":20244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14335:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"14317:54:44"},{"assignments":[20247],"declarations":[{"constant":false,"id":20247,"mutability":"mutable","name":"totalPoints","nameLocation":"14385:11:44","nodeType":"VariableDeclaration","scope":20295,"src":"14377:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20246,"name":"uint256","nodeType":"ElementaryTypeName","src":"14377:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20252,"initialValue":{"baseExpression":{"expression":{"id":20248,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20233,"src":"14399:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14401:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"14399:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":20251,"indexExpression":{"id":20250,"name":"nodeLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20239,"src":"14423:9:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14399:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14377:56:44"},{"assignments":[20258],"declarations":[{"constant":false,"id":20258,"mutability":"mutable","name":"endorsements","nameLocation":"14484:12:44","nodeType":"VariableDeclaration","scope":20295,"src":"14439:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":20256,"nodeType":"UserDefinedTypeName","pathNode":{"id":20255,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["14439:22:44","14462:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"14439:34:44"},"referencedDeclaration":22865,"src":"14439:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":20257,"nodeType":"ArrayTypeName","src":"14439:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":20263,"initialValue":{"baseExpression":{"expression":{"id":20259,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20233,"src":"14499:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14501:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"14499:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":20262,"indexExpression":{"id":20261,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20224,"src":"14521:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14499:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14439:89:44"},{"assignments":[20265],"declarations":[{"constant":false,"id":20265,"mutability":"mutable","name":"usedPoints","nameLocation":"14542:10:44","nodeType":"VariableDeclaration","scope":20295,"src":"14534:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20264,"name":"uint256","nodeType":"ElementaryTypeName","src":"14534:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20266,"nodeType":"VariableDeclarationStatement","src":"14534:18:44"},{"body":{"id":20284,"nodeType":"Block","src":"14604:51:44","statements":[{"expression":{"id":20282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20277,"name":"usedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20265,"src":"14612:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":20278,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20258,"src":"14626:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20280,"indexExpression":{"id":20279,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20268,"src":"14639:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14626:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":20281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14642:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"14626:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14612:36:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20283,"nodeType":"ExpressionStatement","src":"14612:36:44"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20270,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20268,"src":"14574:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":20271,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20258,"src":"14578:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14591:6:44","memberName":"length","nodeType":"MemberAccess","src":"14578:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14574:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20285,"initializationExpression":{"assignments":[20268],"declarations":[{"constant":false,"id":20268,"mutability":"mutable","name":"i","nameLocation":"14571:1:44","nodeType":"VariableDeclaration","scope":20285,"src":"14563:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20267,"name":"uint256","nodeType":"ElementaryTypeName","src":"14563:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20269,"nodeType":"VariableDeclarationStatement","src":"14563:9:44"},"loopExpression":{"expression":{"id":20275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14599:3:44","subExpression":{"id":20274,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20268,"src":"14599:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20276,"nodeType":"ExpressionStatement","src":"14599:3:44"},"nodeType":"ForStatement","src":"14558:97:44"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20286,"name":"totalPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20247,"src":"14667:11:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":20287,"name":"usedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20265,"src":"14681:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14667:24:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":20292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14721:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":20293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14667:55:44","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20289,"name":"totalPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20247,"src":"14694:11:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20290,"name":"usedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20265,"src":"14708:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14694:24:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20228,"id":20294,"nodeType":"Return","src":"14660:62:44"}]},"documentation":{"id":20222,"nodeType":"StructuredDocumentation","src":"13813:308:44","text":" @notice Returns the available points a node can still allocate to apps.\n @dev Calculated as: totalPoints (based on node level) - usedPoints (sum of all endorsements).\n @param nodeId The unique identifier of the node.\n @return Available points the node can use for new endorsements."},"functionSelector":"e9f9739d","id":20296,"implemented":true,"kind":"function","modifiers":[],"name":"getNodeAvailablePoints","nameLocation":"14133:22:44","nodeType":"FunctionDefinition","parameters":{"id":20225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20224,"mutability":"mutable","name":"nodeId","nameLocation":"14164:6:44","nodeType":"VariableDeclaration","scope":20296,"src":"14156:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20223,"name":"uint256","nodeType":"ElementaryTypeName","src":"14156:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14155:16:44"},"returnParameters":{"id":20228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20296,"src":"14195:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20226,"name":"uint256","nodeType":"ElementaryTypeName","src":"14195:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14194:9:44"},"scope":22803,"src":"14124:603:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20407,"nodeType":"Block","src":"15183:755:44","statements":[{"assignments":[20309],"declarations":[{"constant":false,"id":20309,"mutability":"mutable","name":"$","nameLocation":"15239:1:44","nodeType":"VariableDeclaration","scope":20407,"src":"15189:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20308,"nodeType":"UserDefinedTypeName","pathNode":{"id":20307,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["15189:22:44","15212:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"15189:41:44"},"referencedDeclaration":22972,"src":"15189:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20313,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20310,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"15243:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15266:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"15243:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15243:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15189:101:44"},{"assignments":[20315],"declarations":[{"constant":false,"id":20315,"mutability":"mutable","name":"nodeLevel","nameLocation":"15302:9:44","nodeType":"VariableDeclaration","scope":20407,"src":"15296:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20314,"name":"uint8","nodeType":"ElementaryTypeName","src":"15296:5:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":20321,"initialValue":{"arguments":[{"id":20319,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20299,"src":"15343:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":20316,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20309,"src":"15314:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15316:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"15314:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":20318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15329:13:44","memberName":"getTokenLevel","nodeType":"MemberAccess","referencedDeclaration":18643,"src":"15314:28:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) view external returns (uint8)"}},"id":20320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15314:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"15296:54:44"},{"expression":{"id":20329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20322,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20303,"src":"15356:4:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo memory"}},"id":20324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15361:11:44","memberName":"totalPoints","nodeType":"MemberAccess","referencedDeclaration":22868,"src":"15356:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"id":20325,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20309,"src":"15375:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15377:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"15375:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":20328,"indexExpression":{"id":20327,"name":"nodeLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20315,"src":"15399:9:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15375:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15356:53:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20330,"nodeType":"ExpressionStatement","src":"15356:53:44"},{"assignments":[20336],"declarations":[{"constant":false,"id":20336,"mutability":"mutable","name":"endorsements","nameLocation":"15461:12:44","nodeType":"VariableDeclaration","scope":20407,"src":"15416:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":20334,"nodeType":"UserDefinedTypeName","pathNode":{"id":20333,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["15416:22:44","15439:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"15416:34:44"},"referencedDeclaration":22865,"src":"15416:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":20335,"nodeType":"ArrayTypeName","src":"15416:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":20341,"initialValue":{"baseExpression":{"expression":{"id":20337,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20309,"src":"15476:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15478:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"15476:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":20340,"indexExpression":{"id":20339,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20299,"src":"15498:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15476:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"15416:89:44"},{"assignments":[20343],"declarations":[{"constant":false,"id":20343,"mutability":"mutable","name":"currentRound","nameLocation":"15519:12:44","nodeType":"VariableDeclaration","scope":20407,"src":"15511:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20342,"name":"uint256","nodeType":"ElementaryTypeName","src":"15511:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20348,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20344,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20309,"src":"15534:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15536:26:44","memberName":"_xAllocationVotingGovernor","nodeType":"MemberAccess","referencedDeclaration":22928,"src":"15534:28:44","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":20346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15563:14:44","memberName":"currentRoundId","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"15534:43:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15534:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15511:68:44"},{"body":{"id":20388,"nodeType":"Block","src":"15632:197:44","statements":[{"expression":{"id":20366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20359,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20303,"src":"15640:4:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo memory"}},"id":20361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15645:10:44","memberName":"usedPoints","nodeType":"MemberAccess","referencedDeclaration":22870,"src":"15640:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":20362,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20336,"src":"15659:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20364,"indexExpression":{"id":20363,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20350,"src":"15672:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15659:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":20365,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15675:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"15659:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15640:41:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20367,"nodeType":"ExpressionStatement","src":"15640:41:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20368,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20343,"src":"15693:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":20369,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20336,"src":"15708:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20371,"indexExpression":{"id":20370,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20350,"src":"15721:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15708:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":20372,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15724:15:44","memberName":"endorsedAtRound","nodeType":"MemberAccess","referencedDeclaration":22864,"src":"15708:31:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":20373,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20309,"src":"15742:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15744:15:44","memberName":"_cooldownPeriod","nodeType":"MemberAccess","referencedDeclaration":22925,"src":"15742:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15708:51:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15693:66:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20387,"nodeType":"IfStatement","src":"15689:134:44","trueBody":{"id":20386,"nodeType":"Block","src":"15761:62:44","statements":[{"expression":{"id":20384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20377,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20303,"src":"15771:4:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo memory"}},"id":20379,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15776:12:44","memberName":"lockedPoints","nodeType":"MemberAccess","referencedDeclaration":22874,"src":"15771:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":20380,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20336,"src":"15792:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20382,"indexExpression":{"id":20381,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20350,"src":"15805:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15792:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":20383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15808:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"15792:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15771:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20385,"nodeType":"ExpressionStatement","src":"15771:43:44"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20352,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20350,"src":"15602:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":20353,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20336,"src":"15606:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15619:6:44","memberName":"length","nodeType":"MemberAccess","src":"15606:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15602:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20389,"initializationExpression":{"assignments":[20350],"declarations":[{"constant":false,"id":20350,"mutability":"mutable","name":"i","nameLocation":"15599:1:44","nodeType":"VariableDeclaration","scope":20389,"src":"15591:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20349,"name":"uint256","nodeType":"ElementaryTypeName","src":"15591:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20351,"nodeType":"VariableDeclarationStatement","src":"15591:9:44"},"loopExpression":{"expression":{"id":20357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15627:3:44","subExpression":{"id":20356,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20350,"src":"15627:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20358,"nodeType":"ExpressionStatement","src":"15627:3:44"},"nodeType":"ForStatement","src":"15586:243:44"},{"expression":{"id":20405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20390,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20303,"src":"15835:4:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo memory"}},"id":20392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15840:15:44","memberName":"availablePoints","nodeType":"MemberAccess","referencedDeclaration":22872,"src":"15835:20:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20393,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20303,"src":"15858:4:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo memory"}},"id":20394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15863:11:44","memberName":"totalPoints","nodeType":"MemberAccess","referencedDeclaration":22868,"src":"15858:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":20395,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20303,"src":"15877:4:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo memory"}},"id":20396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15882:10:44","memberName":"usedPoints","nodeType":"MemberAccess","referencedDeclaration":22870,"src":"15877:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15858:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":20403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15932:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":20404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15858:75:44","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20398,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20303,"src":"15895:4:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo memory"}},"id":20399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15900:11:44","memberName":"totalPoints","nodeType":"MemberAccess","referencedDeclaration":22868,"src":"15895:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":20400,"name":"info","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20303,"src":"15914:4:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo memory"}},"id":20401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15919:10:44","memberName":"usedPoints","nodeType":"MemberAccess","referencedDeclaration":22870,"src":"15914:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15895:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15835:98:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20406,"nodeType":"ExpressionStatement","src":"15835:98:44"}]},"documentation":{"id":20297,"nodeType":"StructuredDocumentation","src":"14731:332:44","text":" @notice Returns comprehensive info about a node's endorsement points.\n @dev Calculates total, used, available, and locked (under cooldown) points in a single call.\n @param nodeId The unique identifier of the node.\n @return info Struct containing totalPoints, usedPoints, availablePoints, and lockedPoints."},"functionSelector":"5dd3a4f1","id":20408,"implemented":true,"kind":"function","modifiers":[],"name":"getNodePointsInfo","nameLocation":"15075:17:44","nodeType":"FunctionDefinition","parameters":{"id":20300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20299,"mutability":"mutable","name":"nodeId","nameLocation":"15101:6:44","nodeType":"VariableDeclaration","scope":20408,"src":"15093:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20298,"name":"uint256","nodeType":"ElementaryTypeName","src":"15093:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15092:16:44"},"returnParameters":{"id":20304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20303,"mutability":"mutable","name":"info","nameLocation":"15177:4:44","nodeType":"VariableDeclaration","scope":20408,"src":"15132:49:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo"},"typeName":{"id":20302,"nodeType":"UserDefinedTypeName","pathNode":{"id":20301,"name":"X2EarnAppsStorageTypes.NodePointsInfo","nameLocations":["15132:22:44","15155:14:44"],"nodeType":"IdentifierPath","referencedDeclaration":22875,"src":"15132:37:44"},"referencedDeclaration":22875,"src":"15132:37:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodePointsInfo_$22875_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.NodePointsInfo"}},"visibility":"internal"}],"src":"15131:51:44"},"scope":22803,"src":"15066:872:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20481,"nodeType":"Block","src":"16452:528:44","statements":[{"assignments":[20422],"declarations":[{"constant":false,"id":20422,"mutability":"mutable","name":"$","nameLocation":"16508:1:44","nodeType":"VariableDeclaration","scope":20481,"src":"16458:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20421,"nodeType":"UserDefinedTypeName","pathNode":{"id":20420,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["16458:22:44","16481:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"16458:41:44"},"referencedDeclaration":22972,"src":"16458:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20426,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20423,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"16512:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16535:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"16512:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16512:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16458:101:44"},{"assignments":[20432],"declarations":[{"constant":false,"id":20432,"mutability":"mutable","name":"endorsements","nameLocation":"16610:12:44","nodeType":"VariableDeclaration","scope":20481,"src":"16565:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":20430,"nodeType":"UserDefinedTypeName","pathNode":{"id":20429,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["16565:22:44","16588:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"16565:34:44"},"referencedDeclaration":22865,"src":"16565:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":20431,"nodeType":"ArrayTypeName","src":"16565:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":20437,"initialValue":{"baseExpression":{"expression":{"id":20433,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"16625:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16627:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"16625:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":20436,"indexExpression":{"id":20435,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"16647:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16625:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16565:89:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20438,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20432,"src":"16664:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16677:6:44","memberName":"length","nodeType":"MemberAccess","src":"16664:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16687:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16664:24:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20444,"nodeType":"IfStatement","src":"16660:42:44","trueBody":{"expression":{"hexValue":"66616c7365","id":20442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16697:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":20417,"id":20443,"nodeType":"Return","src":"16690:12:44"}},{"assignments":[20446],"declarations":[{"constant":false,"id":20446,"mutability":"mutable","name":"index","nameLocation":"16716:5:44","nodeType":"VariableDeclaration","scope":20481,"src":"16708:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20445,"name":"uint256","nodeType":"ElementaryTypeName","src":"16708:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20453,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":20447,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"16724:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16726:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"16724:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":20450,"indexExpression":{"id":20449,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20411,"src":"16754:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16724:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":20452,"indexExpression":{"id":20451,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20413,"src":"16762:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16724:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16708:60:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":20464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20454,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20446,"src":"16778:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":20455,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20432,"src":"16787:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16800:6:44","memberName":"length","nodeType":"MemberAccess","src":"16787:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16778:28:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":20463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":20458,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20432,"src":"16810:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20460,"indexExpression":{"id":20459,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20446,"src":"16823:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16810:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":20461,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16830:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"16810:25:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":20462,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20413,"src":"16839:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16810:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16778:66:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20467,"nodeType":"IfStatement","src":"16774:84:44","trueBody":{"expression":{"hexValue":"66616c7365","id":20465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16853:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":20417,"id":20466,"nodeType":"Return","src":"16846:12:44"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20468,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"16871:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20469,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16873:26:44","memberName":"_xAllocationVotingGovernor","nodeType":"MemberAccess","referencedDeclaration":22928,"src":"16871:28:44","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":20470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16900:14:44","memberName":"currentRoundId","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"16871:43:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16871:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":20472,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20432,"src":"16920:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":20474,"indexExpression":{"id":20473,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20446,"src":"16933:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16920:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":20475,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16940:15:44","memberName":"endorsedAtRound","nodeType":"MemberAccess","referencedDeclaration":22864,"src":"16920:35:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":20476,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20422,"src":"16958:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16960:15:44","memberName":"_cooldownPeriod","nodeType":"MemberAccess","referencedDeclaration":22925,"src":"16958:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16920:55:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16871:104:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":20417,"id":20480,"nodeType":"Return","src":"16864:111:44"}]},"documentation":{"id":20409,"nodeType":"StructuredDocumentation","src":"15942:425:44","text":" @notice Checks if a node can unendorse a specific app (cooldown expired).\n @dev Returns false if node doesn't endorse the app or if cooldown hasn't expired.\n      Cooldown is measured in rounds (VeBetterDAO allocation rounds).\n @param nodeId The unique identifier of the node.\n @param appId The unique identifier of the app.\n @return True if the node can unendorse the app, false otherwise."},"functionSelector":"ccd4baca","id":20482,"implemented":true,"kind":"function","modifiers":[],"name":"canUnendorse","nameLocation":"16379:12:44","nodeType":"FunctionDefinition","parameters":{"id":20414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20411,"mutability":"mutable","name":"nodeId","nameLocation":"16400:6:44","nodeType":"VariableDeclaration","scope":20482,"src":"16392:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20410,"name":"uint256","nodeType":"ElementaryTypeName","src":"16392:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20413,"mutability":"mutable","name":"appId","nameLocation":"16416:5:44","nodeType":"VariableDeclaration","scope":20482,"src":"16408:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20412,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16408:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16391:31:44"},"returnParameters":{"id":20417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20482,"src":"16446:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20415,"name":"bool","nodeType":"ElementaryTypeName","src":"16446:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16445:6:44"},"scope":22803,"src":"16370:610:44","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20565,"nodeType":"Block","src":"17424:600:44","statements":[{"assignments":[20493],"declarations":[{"constant":false,"id":20493,"mutability":"mutable","name":"$","nameLocation":"17480:1:44","nodeType":"VariableDeclaration","scope":20565,"src":"17430:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20492,"nodeType":"UserDefinedTypeName","pathNode":{"id":20491,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["17430:22:44","17453:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"17430:41:44"},"referencedDeclaration":22972,"src":"17430:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20497,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20494,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"17484:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17507:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"17484:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17484:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17430:101:44"},{"expression":{"id":20505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20498,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20493,"src":"17537:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17539:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"17537:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":20502,"indexExpression":{"hexValue":"31","id":20500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17561:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17537:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20503,"name":"nodeStrengthScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"17566:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores calldata"}},"id":20504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17585:8:44","memberName":"strength","nodeType":"MemberAccess","referencedDeclaration":19490,"src":"17566:27:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17537:56:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20506,"nodeType":"ExpressionStatement","src":"17537:56:44"},{"expression":{"id":20514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20507,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20493,"src":"17599:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20510,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17601:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"17599:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":20511,"indexExpression":{"hexValue":"32","id":20509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17623:1:44","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17599:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20512,"name":"nodeStrengthScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"17628:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores calldata"}},"id":20513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17647:7:44","memberName":"thunder","nodeType":"MemberAccess","referencedDeclaration":19492,"src":"17628:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17599:55:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20515,"nodeType":"ExpressionStatement","src":"17599:55:44"},{"expression":{"id":20523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20516,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20493,"src":"17660:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17662:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"17660:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":20520,"indexExpression":{"hexValue":"33","id":20518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17684:1:44","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17660:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20521,"name":"nodeStrengthScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"17689:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores calldata"}},"id":20522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17708:7:44","memberName":"mjolnir","nodeType":"MemberAccess","referencedDeclaration":19494,"src":"17689:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17660:55:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20524,"nodeType":"ExpressionStatement","src":"17660:55:44"},{"expression":{"id":20532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20525,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20493,"src":"17721:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20528,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17723:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"17721:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":20529,"indexExpression":{"hexValue":"34","id":20527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17745:1:44","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17721:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20530,"name":"nodeStrengthScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"17750:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores calldata"}},"id":20531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17769:7:44","memberName":"veThorX","nodeType":"MemberAccess","referencedDeclaration":19496,"src":"17750:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17721:55:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20533,"nodeType":"ExpressionStatement","src":"17721:55:44"},{"expression":{"id":20541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20534,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20493,"src":"17782:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20537,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17784:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"17782:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":20538,"indexExpression":{"hexValue":"35","id":20536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17806:1:44","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17782:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20539,"name":"nodeStrengthScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"17811:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores calldata"}},"id":20540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17830:9:44","memberName":"strengthX","nodeType":"MemberAccess","referencedDeclaration":19498,"src":"17811:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17782:57:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20542,"nodeType":"ExpressionStatement","src":"17782:57:44"},{"expression":{"id":20550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20543,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20493,"src":"17845:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17847:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"17845:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":20547,"indexExpression":{"hexValue":"36","id":20545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17869:1:44","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17845:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20548,"name":"nodeStrengthScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"17874:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores calldata"}},"id":20549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17893:8:44","memberName":"thunderX","nodeType":"MemberAccess","referencedDeclaration":19500,"src":"17874:27:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17845:56:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20551,"nodeType":"ExpressionStatement","src":"17845:56:44"},{"expression":{"id":20559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20552,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20493,"src":"17907:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17909:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"17907:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":20556,"indexExpression":{"hexValue":"37","id":20554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17931:1:44","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17907:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20557,"name":"nodeStrengthScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"17936:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores calldata"}},"id":20558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17955:8:44","memberName":"mjolnirX","nodeType":"MemberAccess","referencedDeclaration":19502,"src":"17936:27:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17907:56:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20560,"nodeType":"ExpressionStatement","src":"17907:56:44"},{"eventCall":{"arguments":[{"id":20562,"name":"nodeStrengthScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"18000:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores calldata"}],"id":20561,"name":"NodeStrengthScoresUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19630,"src":"17974:25:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_NodeStrengthScores_$19503_memory_ptr_$returns$__$","typeString":"function (struct EndorsementUtils.NodeStrengthScores memory)"}},"id":20563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17974:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20564,"nodeType":"EmitStatement","src":"17969:50:44"}]},"documentation":{"id":20483,"nodeType":"StructuredDocumentation","src":"17071:256:44","text":" @notice Updates the endorsement scores for all node strength levels.\n @dev Called by governance to adjust how many endorsement points each node type provides.\n @param nodeStrengthScores Struct containing scores for all 7 node levels."},"functionSelector":"38114221","id":20566,"implemented":true,"kind":"function","modifiers":[],"name":"updateNodeEndorsementScores","nameLocation":"17339:27:44","nodeType":"FunctionDefinition","parameters":{"id":20487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20486,"mutability":"mutable","name":"nodeStrengthScores","nameLocation":"17395:18:44","nodeType":"VariableDeclaration","scope":20566,"src":"17367:46:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_calldata_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores"},"typeName":{"id":20485,"nodeType":"UserDefinedTypeName","pathNode":{"id":20484,"name":"NodeStrengthScores","nameLocations":["17367:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":19503,"src":"17367:18:44"},"referencedDeclaration":19503,"src":"17367:18:44","typeDescriptions":{"typeIdentifier":"t_struct$_NodeStrengthScores_$19503_storage_ptr","typeString":"struct EndorsementUtils.NodeStrengthScores"}},"visibility":"internal"}],"src":"17366:48:44"},"returnParameters":{"id":20488,"nodeType":"ParameterList","parameters":[],"src":"17424:0:44"},"scope":22803,"src":"17330:694:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20660,"nodeType":"Block","src":"18448:591:44","statements":[{"assignments":[20578],"declarations":[{"constant":false,"id":20578,"mutability":"mutable","name":"$","nameLocation":"18504:1:44","nodeType":"VariableDeclaration","scope":20660,"src":"18454:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20577,"nodeType":"UserDefinedTypeName","pathNode":{"id":20576,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["18454:22:44","18477:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"18454:41:44"},"referencedDeclaration":22972,"src":"18454:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20582,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20579,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"18508:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18531:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"18508:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18508:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"18454:101:44"},{"condition":{"id":20583,"name":"remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20571,"src":"18565:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":20658,"nodeType":"Block","src":"18927:108:44","statements":[{"expression":{"arguments":[{"id":20645,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20569,"src":"18958:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":20640,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"18935:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18937:15:44","memberName":"_unendorsedApps","nodeType":"MemberAccess","referencedDeclaration":22879,"src":"18935:17:44","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":20644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18953:4:44","memberName":"push","nodeType":"MemberAccess","src":"18935:22:44","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer,bytes32)"}},"id":20646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18935:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20647,"nodeType":"ExpressionStatement","src":"18935:29:44"},{"expression":{"id":20656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20648,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"18972:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18974:20:44","memberName":"_unendorsedAppsIndex","nodeType":"MemberAccess","referencedDeclaration":22883,"src":"18972:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":20652,"indexExpression":{"id":20650,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20569,"src":"18995:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18972:29:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":20653,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"19004:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20654,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19006:15:44","memberName":"_unendorsedApps","nodeType":"MemberAccess","referencedDeclaration":22879,"src":"19004:17:44","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":20655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19022:6:44","memberName":"length","nodeType":"MemberAccess","src":"19004:24:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18972:56:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20657,"nodeType":"ExpressionStatement","src":"18972:56:44"}]},"id":20659,"nodeType":"IfStatement","src":"18561:474:44","trueBody":{"id":20639,"nodeType":"Block","src":"18573:348:44","statements":[{"assignments":[20585],"declarations":[{"constant":false,"id":20585,"mutability":"mutable","name":"index","nameLocation":"18589:5:44","nodeType":"VariableDeclaration","scope":20639,"src":"18581:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20584,"name":"uint256","nodeType":"ElementaryTypeName","src":"18581:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20592,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":20586,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"18597:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18599:20:44","memberName":"_unendorsedAppsIndex","nodeType":"MemberAccess","referencedDeclaration":22883,"src":"18597:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":20589,"indexExpression":{"id":20588,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20569,"src":"18620:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18597:29:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":20590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18629:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18597:33:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18581:49:44"},{"assignments":[20594],"declarations":[{"constant":false,"id":20594,"mutability":"mutable","name":"lastIndex","nameLocation":"18646:9:44","nodeType":"VariableDeclaration","scope":20639,"src":"18638:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20593,"name":"uint256","nodeType":"ElementaryTypeName","src":"18638:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20600,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":20595,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"18658:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20596,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18660:15:44","memberName":"_unendorsedApps","nodeType":"MemberAccess","referencedDeclaration":22879,"src":"18658:17:44","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":20597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18676:6:44","memberName":"length","nodeType":"MemberAccess","src":"18658:24:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":20598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18685:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18658:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18638:48:44"},{"assignments":[20602],"declarations":[{"constant":false,"id":20602,"mutability":"mutable","name":"lastAppId","nameLocation":"18702:9:44","nodeType":"VariableDeclaration","scope":20639,"src":"18694:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18694:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":20607,"initialValue":{"baseExpression":{"expression":{"id":20603,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"18714:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20604,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18716:15:44","memberName":"_unendorsedApps","nodeType":"MemberAccess","referencedDeclaration":22879,"src":"18714:17:44","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":20606,"indexExpression":{"id":20605,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20594,"src":"18732:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18714:28:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"18694:48:44"},{"expression":{"id":20614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20608,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"18750:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18752:15:44","memberName":"_unendorsedApps","nodeType":"MemberAccess","referencedDeclaration":22879,"src":"18750:17:44","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":20612,"indexExpression":{"id":20610,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20585,"src":"18768:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18750:24:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20613,"name":"lastAppId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20602,"src":"18777:9:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"18750:36:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":20615,"nodeType":"ExpressionStatement","src":"18750:36:44"},{"expression":{"id":20624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":20616,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"18794:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18796:20:44","memberName":"_unendorsedAppsIndex","nodeType":"MemberAccess","referencedDeclaration":22883,"src":"18794:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":20620,"indexExpression":{"id":20618,"name":"lastAppId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20602,"src":"18817:9:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18794:33:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20621,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20585,"src":"18830:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":20622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18838:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18830:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18794:45:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20625,"nodeType":"ExpressionStatement","src":"18794:45:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20626,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"18847:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20629,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18849:15:44","memberName":"_unendorsedApps","nodeType":"MemberAccess","referencedDeclaration":22879,"src":"18847:17:44","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":20630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18865:3:44","memberName":"pop","nodeType":"MemberAccess","src":"18847:21:44","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer)"}},"id":20631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18847:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20632,"nodeType":"ExpressionStatement","src":"18847:23:44"},{"expression":{"id":20637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"18878:36:44","subExpression":{"baseExpression":{"expression":{"id":20633,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20578,"src":"18885:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20634,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18887:20:44","memberName":"_unendorsedAppsIndex","nodeType":"MemberAccess","referencedDeclaration":22883,"src":"18885:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":20636,"indexExpression":{"id":20635,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20569,"src":"18908:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18885:29:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20638,"nodeType":"ExpressionStatement","src":"18878:36:44"}]}}]},"documentation":{"id":20567,"nodeType":"StructuredDocumentation","src":"18028:352:44","text":" @notice Adds or removes an app from the unendorsed apps list.\n @dev Apps in this list have been submitted but haven't reached the endorsement threshold yet.\n      Uses swap-and-pop pattern for O(1) removal.\n @param appId The unique identifier of the app.\n @param remove If true, removes from list; if false, adds to list."},"functionSelector":"fcaf9a76","id":20661,"implemented":true,"kind":"function","modifiers":[],"name":"updateUnendorsedApps","nameLocation":"18392:20:44","nodeType":"FunctionDefinition","parameters":{"id":20572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20569,"mutability":"mutable","name":"appId","nameLocation":"18421:5:44","nodeType":"VariableDeclaration","scope":20661,"src":"18413:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20568,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18413:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20571,"mutability":"mutable","name":"remove","nameLocation":"18433:6:44","nodeType":"VariableDeclaration","scope":20661,"src":"18428:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20570,"name":"bool","nodeType":"ElementaryTypeName","src":"18428:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18412:28:44"},"returnParameters":{"id":20573,"nodeType":"ParameterList","parameters":[],"src":"18448:0:44"},"scope":22803,"src":"18383:656:44","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":20688,"nodeType":"Block","src":"19319:236:44","statements":[{"assignments":[20671],"declarations":[{"constant":false,"id":20671,"mutability":"mutable","name":"$","nameLocation":"19375:1:44","nodeType":"VariableDeclaration","scope":20688,"src":"19325:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20670,"nodeType":"UserDefinedTypeName","pathNode":{"id":20669,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["19325:22:44","19348:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"19325:41:44"},"referencedDeclaration":22972,"src":"19325:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20675,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20672,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"19379:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19402:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"19379:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19379:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"19325:101:44"},{"eventCall":{"arguments":[{"expression":{"id":20677,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20671,"src":"19456:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19458:20:44","memberName":"_gracePeriodDuration","nodeType":"MemberAccess","referencedDeclaration":22902,"src":"19456:22:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":20679,"name":"gracePeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20664,"src":"19480:19:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":20676,"name":"GracePeriodUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19650,"src":"19437:18:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":20680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19437:63:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20681,"nodeType":"EmitStatement","src":"19432:68:44"},{"expression":{"id":20686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20682,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20671,"src":"19506:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19508:20:44","memberName":"_gracePeriodDuration","nodeType":"MemberAccess","referencedDeclaration":22902,"src":"19506:22:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20685,"name":"gracePeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20664,"src":"19531:19:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"19506:44:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":20687,"nodeType":"ExpressionStatement","src":"19506:44:44"}]},"documentation":{"id":20662,"nodeType":"StructuredDocumentation","src":"19043:212:44","text":" @notice Sets the grace period duration.\n @dev Grace period is the time an app has to regain endorsement after losing eligibility.\n @param gracePeriodDuration The new grace period in blocks."},"functionSelector":"a11bd9fb","id":20689,"implemented":true,"kind":"function","modifiers":[],"name":"setGracePeriod","nameLocation":"19267:14:44","nodeType":"FunctionDefinition","parameters":{"id":20665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20664,"mutability":"mutable","name":"gracePeriodDuration","nameLocation":"19289:19:44","nodeType":"VariableDeclaration","scope":20689,"src":"19282:26:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":20663,"name":"uint48","nodeType":"ElementaryTypeName","src":"19282:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"19281:28:44"},"returnParameters":{"id":20666,"nodeType":"ParameterList","parameters":[],"src":"19319:0:44"},"scope":22803,"src":"19258:297:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20716,"nodeType":"Block","src":"19834:235:44","statements":[{"assignments":[20699],"declarations":[{"constant":false,"id":20699,"mutability":"mutable","name":"$","nameLocation":"19890:1:44","nodeType":"VariableDeclaration","scope":20716,"src":"19840:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20698,"nodeType":"UserDefinedTypeName","pathNode":{"id":20697,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["19840:22:44","19863:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"19840:41:44"},"referencedDeclaration":22972,"src":"19840:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20703,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20700,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"19894:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19917:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"19894:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19894:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"19840:101:44"},{"eventCall":{"arguments":[{"expression":{"id":20705,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20699,"src":"19974:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19976:15:44","memberName":"_cooldownPeriod","nodeType":"MemberAccess","referencedDeclaration":22925,"src":"19974:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20707,"name":"cooldownPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20692,"src":"19993:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20704,"name":"CooldownPeriodUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19656,"src":"19952:21:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":20708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19952:64:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20709,"nodeType":"EmitStatement","src":"19947:69:44"},{"expression":{"id":20714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20710,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20699,"src":"20022:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20024:15:44","memberName":"_cooldownPeriod","nodeType":"MemberAccess","referencedDeclaration":22925,"src":"20022:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20713,"name":"cooldownPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20692,"src":"20042:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20022:42:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20715,"nodeType":"ExpressionStatement","src":"20022:42:44"}]},"documentation":{"id":20690,"nodeType":"StructuredDocumentation","src":"19559:204:44","text":" @notice Sets the cooldown period duration.\n @dev Cooldown prevents immediate un-endorsement after endorsing an app.\n @param cooldownPeriodDuration The new cooldown period in rounds."},"functionSelector":"80ea3de1","id":20717,"implemented":true,"kind":"function","modifiers":[],"name":"setCooldownPeriod","nameLocation":"19775:17:44","nodeType":"FunctionDefinition","parameters":{"id":20693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20692,"mutability":"mutable","name":"cooldownPeriodDuration","nameLocation":"19801:22:44","nodeType":"VariableDeclaration","scope":20717,"src":"19793:30:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20691,"name":"uint256","nodeType":"ElementaryTypeName","src":"19793:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19792:32:44"},"returnParameters":{"id":20694,"nodeType":"ParameterList","parameters":[],"src":"19834:0:44"},"scope":22803,"src":"19766:303:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20756,"nodeType":"Block","src":"20394:387:44","statements":[{"assignments":[20727],"declarations":[{"constant":false,"id":20727,"mutability":"mutable","name":"$","nameLocation":"20450:1:44","nodeType":"VariableDeclaration","scope":20756,"src":"20400:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20726,"nodeType":"UserDefinedTypeName","pathNode":{"id":20725,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["20400:22:44","20423:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"20400:41:44"},"referencedDeclaration":22972,"src":"20400:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20731,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20728,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"20454:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20477:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"20454:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20454:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"20400:101:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20732,"name":"scoreThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20720,"src":"20511:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":20733,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20727,"src":"20528:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20734,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20530:16:44","memberName":"_maxPointsPerApp","nodeType":"MemberAccess","referencedDeclaration":22962,"src":"20528:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20511:35:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20743,"nodeType":"IfStatement","src":"20507:130:44","trueBody":{"id":20742,"nodeType":"Block","src":"20548:89:44","statements":[{"errorCall":{"arguments":[{"id":20737,"name":"scoreThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20720,"src":"20595:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20738,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20727,"src":"20611:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20613:16:44","memberName":"_maxPointsPerApp","nodeType":"MemberAccess","referencedDeclaration":22962,"src":"20611:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20736,"name":"ThresholdExceedsMaxPointsPerApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19587,"src":"20563:31:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":20740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20563:67:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20741,"nodeType":"RevertStatement","src":"20556:74:44"}]}},{"eventCall":{"arguments":[{"expression":{"id":20745,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20727,"src":"20680:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20682:26:44","memberName":"_endorsementScoreThreshold","nodeType":"MemberAccess","referencedDeclaration":22904,"src":"20680:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20747,"name":"scoreThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20720,"src":"20710:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20744,"name":"EndorsementScoreThresholdUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19662,"src":"20647:32:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":20748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20647:78:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20749,"nodeType":"EmitStatement","src":"20642:83:44"},{"expression":{"id":20754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20750,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20727,"src":"20731:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20733:26:44","memberName":"_endorsementScoreThreshold","nodeType":"MemberAccess","referencedDeclaration":22904,"src":"20731:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20753,"name":"scoreThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20720,"src":"20762:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20731:45:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20755,"nodeType":"ExpressionStatement","src":"20731:45:44"}]},"documentation":{"id":20718,"nodeType":"StructuredDocumentation","src":"20073:244:44","text":" @notice Updates the minimum endorsement score required for app eligibility.\n @dev Reverts if scoreThreshold > maxPointsPerApp (would make threshold unreachable).\n @param scoreThreshold The new endorsement score threshold."},"functionSelector":"4f77fe12","id":20757,"implemented":true,"kind":"function","modifiers":[],"name":"updateEndorsementScoreThreshold","nameLocation":"20329:31:44","nodeType":"FunctionDefinition","parameters":{"id":20721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20720,"mutability":"mutable","name":"scoreThreshold","nameLocation":"20369:14:44","nodeType":"VariableDeclaration","scope":20757,"src":"20361:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20719,"name":"uint256","nodeType":"ElementaryTypeName","src":"20361:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20360:24:44"},"returnParameters":{"id":20722,"nodeType":"ParameterList","parameters":[],"src":"20394:0:44"},"scope":22803,"src":"20320:461:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20775,"nodeType":"Block","src":"21082:103:44","statements":[{"expression":{"arguments":[{"id":20766,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20760,"src":"21109:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":20767,"name":"endorsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"21116:8:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":20765,"name":"updateUnendorsedApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20661,"src":"21088:20:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":20768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21088:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20769,"nodeType":"ExpressionStatement","src":"21088:37:44"},{"eventCall":{"arguments":[{"id":20771,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20760,"src":"21164:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":20772,"name":"endorsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"21171:8:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":20770,"name":"AppEndorsementStatusUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19636,"src":"21136:27:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":20773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21136:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20774,"nodeType":"EmitStatement","src":"21131:49:44"}]},"documentation":{"id":20758,"nodeType":"StructuredDocumentation","src":"20785:227:44","text":" @notice Sets the endorsement status of an app and updates pending list.\n @param appId The unique identifier of the app.\n @param endorsed If true, removes from pending list; if false, adds to pending list."},"functionSelector":"9fcb2b41","id":20776,"implemented":true,"kind":"function","modifiers":[],"name":"setEndorsementStatus","nameLocation":"21024:20:44","nodeType":"FunctionDefinition","parameters":{"id":20763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20760,"mutability":"mutable","name":"appId","nameLocation":"21053:5:44","nodeType":"VariableDeclaration","scope":20776,"src":"21045:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20759,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21045:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20762,"mutability":"mutable","name":"endorsed","nameLocation":"21065:8:44","nodeType":"VariableDeclaration","scope":20776,"src":"21060:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20761,"name":"bool","nodeType":"ElementaryTypeName","src":"21060:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21044:30:44"},"returnParameters":{"id":20764,"nodeType":"ParameterList","parameters":[],"src":"21082:0:44"},"scope":22803,"src":"21015:170:44","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":20803,"nodeType":"Block","src":"21507:233:44","statements":[{"assignments":[20786],"declarations":[{"constant":false,"id":20786,"mutability":"mutable","name":"$","nameLocation":"21563:1:44","nodeType":"VariableDeclaration","scope":20803,"src":"21513:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20785,"nodeType":"UserDefinedTypeName","pathNode":{"id":20784,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["21513:22:44","21536:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"21513:41:44"},"referencedDeclaration":22972,"src":"21513:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20790,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20787,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"21567:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21590:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"21567:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21567:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"21513:101:44"},{"eventCall":{"arguments":[{"expression":{"id":20792,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20786,"src":"21655:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20793,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21657:23:44","memberName":"_maxPointsPerNodePerApp","nodeType":"MemberAccess","referencedDeclaration":22960,"src":"21655:25:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20794,"name":"maxPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20779,"src":"21682:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20791,"name":"MaxPointsPerNodePerAppUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19668,"src":"21625:29:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":20795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21625:67:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20796,"nodeType":"EmitStatement","src":"21620:72:44"},{"expression":{"id":20801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20797,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20786,"src":"21698:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21700:23:44","memberName":"_maxPointsPerNodePerApp","nodeType":"MemberAccess","referencedDeclaration":22960,"src":"21698:25:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20800,"name":"maxPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20779,"src":"21726:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21698:37:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20802,"nodeType":"ExpressionStatement","src":"21698:37:44"}]},"documentation":{"id":20777,"nodeType":"StructuredDocumentation","src":"21189:252:44","text":" @notice Sets the maximum points a single node can assign to one app.\n @dev Enforces decentralization by preventing one node from dominating an app's endorsement.\n @param maxPoints The new max points per node per app (default 49)."},"functionSelector":"6fb44f5f","id":20804,"implemented":true,"kind":"function","modifiers":[],"name":"setMaxPointsPerNodePerApp","nameLocation":"21453:25:44","nodeType":"FunctionDefinition","parameters":{"id":20780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20779,"mutability":"mutable","name":"maxPoints","nameLocation":"21487:9:44","nodeType":"VariableDeclaration","scope":20804,"src":"21479:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20778,"name":"uint256","nodeType":"ElementaryTypeName","src":"21479:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21478:19:44"},"returnParameters":{"id":20781,"nodeType":"ParameterList","parameters":[],"src":"21507:0:44"},"scope":22803,"src":"21444:296:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20843,"nodeType":"Block","src":"22130:355:44","statements":[{"assignments":[20814],"declarations":[{"constant":false,"id":20814,"mutability":"mutable","name":"$","nameLocation":"22186:1:44","nodeType":"VariableDeclaration","scope":20843,"src":"22136:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20813,"nodeType":"UserDefinedTypeName","pathNode":{"id":20812,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["22136:22:44","22159:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"22136:41:44"},"referencedDeclaration":22972,"src":"22136:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20818,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20815,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"22190:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22213:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"22190:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22190:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"22136:101:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20819,"name":"maxPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20807,"src":"22247:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":20820,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20814,"src":"22259:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22261:26:44","memberName":"_endorsementScoreThreshold","nodeType":"MemberAccess","referencedDeclaration":22904,"src":"22259:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22247:40:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20830,"nodeType":"IfStatement","src":"22243:138:44","trueBody":{"id":20829,"nodeType":"Block","src":"22289:92:44","statements":[{"errorCall":{"arguments":[{"id":20824,"name":"maxPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20807,"src":"22334:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20825,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20814,"src":"22345:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22347:26:44","memberName":"_endorsementScoreThreshold","nodeType":"MemberAccess","referencedDeclaration":22904,"src":"22345:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20823,"name":"MaxPointsPerAppBelowThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19581,"src":"22304:29:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":20827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22304:70:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20828,"nodeType":"RevertStatement","src":"22297:77:44"}]}},{"eventCall":{"arguments":[{"expression":{"id":20832,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20814,"src":"22414:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22416:16:44","memberName":"_maxPointsPerApp","nodeType":"MemberAccess","referencedDeclaration":22962,"src":"22414:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20834,"name":"maxPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20807,"src":"22434:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20831,"name":"MaxPointsPerAppUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19674,"src":"22391:22:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":20835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22391:53:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20836,"nodeType":"EmitStatement","src":"22386:58:44"},{"expression":{"id":20841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20837,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20814,"src":"22450:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22452:16:44","memberName":"_maxPointsPerApp","nodeType":"MemberAccess","referencedDeclaration":22962,"src":"22450:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20840,"name":"maxPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20807,"src":"22471:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22450:30:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20842,"nodeType":"ExpressionStatement","src":"22450:30:44"}]},"documentation":{"id":20805,"nodeType":"StructuredDocumentation","src":"21744:327:44","text":" @notice Sets the maximum total points an app can receive from all endorsers.\n @dev Provides a buffer above the threshold to prevent over-endorsement.\n      Reverts if maxPoints < endorsementScoreThreshold (would make threshold unreachable).\n @param maxPoints The new max points per app (default 110)."},"functionSelector":"51d2a6e3","id":20844,"implemented":true,"kind":"function","modifiers":[],"name":"setMaxPointsPerApp","nameLocation":"22083:18:44","nodeType":"FunctionDefinition","parameters":{"id":20808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20807,"mutability":"mutable","name":"maxPoints","nameLocation":"22110:9:44","nodeType":"VariableDeclaration","scope":20844,"src":"22102:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20806,"name":"uint256","nodeType":"ElementaryTypeName","src":"22102:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22101:19:44"},"returnParameters":{"id":20809,"nodeType":"ParameterList","parameters":[],"src":"22130:0:44"},"scope":22803,"src":"22074:411:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20869,"nodeType":"Block","src":"22764:192:44","statements":[{"assignments":[20854],"declarations":[{"constant":false,"id":20854,"mutability":"mutable","name":"$","nameLocation":"22820:1:44","nodeType":"VariableDeclaration","scope":20869,"src":"22770:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20853,"nodeType":"UserDefinedTypeName","pathNode":{"id":20852,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["22770:22:44","22793:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"22770:41:44"},"referencedDeclaration":22972,"src":"22770:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20858,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20855,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"22824:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22847:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"22824:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22824:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"22770:101:44"},{"expression":{"id":20863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20859,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20854,"src":"22877:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20861,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22879:19:44","memberName":"_endorsementsPaused","nodeType":"MemberAccess","referencedDeclaration":22964,"src":"22877:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20862,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20847,"src":"22901:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22877:30:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20864,"nodeType":"ExpressionStatement","src":"22877:30:44"},{"eventCall":{"arguments":[{"id":20866,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20847,"src":"22944:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":20865,"name":"EndorsementsPausedUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19625,"src":"22918:25:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":20867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22918:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20868,"nodeType":"EmitStatement","src":"22913:38:44"}]},"documentation":{"id":20845,"nodeType":"StructuredDocumentation","src":"22489:219:44","text":" @notice Pauses or unpauses endorsement operations.\n @dev Used during migration to prevent state changes while data is being seeded.\n @param paused If true, pauses endorsements; if false, unpauses."},"functionSelector":"fcd190c4","id":20870,"implemented":true,"kind":"function","modifiers":[],"name":"setEndorsementsPaused","nameLocation":"22720:21:44","nodeType":"FunctionDefinition","parameters":{"id":20848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20847,"mutability":"mutable","name":"paused","nameLocation":"22747:6:44","nodeType":"VariableDeclaration","scope":20870,"src":"22742:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20846,"name":"bool","nodeType":"ElementaryTypeName","src":"22742:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22741:13:44"},"returnParameters":{"id":20849,"nodeType":"ParameterList","parameters":[],"src":"22764:0:44"},"scope":22803,"src":"22711:245:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20884,"nodeType":"Block","src":"23219:90:44","statements":[{"expression":{"id":20882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20876,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"23225:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23248:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"23225:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23225:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20880,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"23273:19:44","memberName":"_migrationCompleted","nodeType":"MemberAccess","referencedDeclaration":22966,"src":"23225:67:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20881,"name":"completed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20873,"src":"23295:9:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"23225:79:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20883,"nodeType":"ExpressionStatement","src":"23225:79:44"}]},"documentation":{"id":20871,"nodeType":"StructuredDocumentation","src":"22960:200:44","text":" @notice Marks the V8 migration as complete or incomplete.\n @dev Once complete, seedEndorsement() can no longer be called.\n @param completed If true, marks migration as complete."},"functionSelector":"47e5dcbc","id":20885,"implemented":true,"kind":"function","modifiers":[],"name":"setMigrationCompleted","nameLocation":"23172:21:44","nodeType":"FunctionDefinition","parameters":{"id":20874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20873,"mutability":"mutable","name":"completed","nameLocation":"23199:9:44","nodeType":"VariableDeclaration","scope":20885,"src":"23194:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20872,"name":"bool","nodeType":"ElementaryTypeName","src":"23194:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"23193:16:44"},"returnParameters":{"id":20875,"nodeType":"ParameterList","parameters":[],"src":"23219:0:44"},"scope":22803,"src":"23163:146:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20993,"nodeType":"Block","src":"24303:870:44","statements":[{"assignments":[20905],"declarations":[{"constant":false,"id":20905,"mutability":"mutable","name":"appsStorage","nameLocation":"24359:11:44","nodeType":"VariableDeclaration","scope":20993,"src":"24309:61:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"},"typeName":{"id":20904,"nodeType":"UserDefinedTypeName","pathNode":{"id":20903,"name":"X2EarnAppsStorageTypes.AppsStorageStorage","nameLocations":["24309:22:44","24332:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22986,"src":"24309:41:44"},"referencedDeclaration":22986,"src":"24309:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"}},"visibility":"internal"}],"id":20909,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20906,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"24373:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24396:22:44","memberName":"_getAppsStorageStorage","nodeType":"MemberAccess","referencedDeclaration":23061,"src":"24373:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AppsStorageStorage_$22986_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer)"}},"id":20908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24373:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"24309:111:44"},{"assignments":[20914],"declarations":[{"constant":false,"id":20914,"mutability":"mutable","name":"$","nameLocation":"24476:1:44","nodeType":"VariableDeclaration","scope":20993,"src":"24426:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20913,"nodeType":"UserDefinedTypeName","pathNode":{"id":20912,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["24426:22:44","24449:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"24426:41:44"},"referencedDeclaration":22972,"src":"24426:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":20918,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20915,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"24480:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":20916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24503:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"24480:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":20917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24480:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"24426:101:44"},{"expression":{"arguments":[{"id":20920,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"24555:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":20921,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20905,"src":"24558:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},{"id":20922,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20888,"src":"24571:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":20923,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20890,"src":"24578:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20924,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20892,"src":"24586:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20925,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20894,"src":"24594:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":20919,"name":"_validateEndorsement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21168,"src":"24534:20:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_struct$_AppsStorageStorage_$22986_storage_ptr_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer,bytes32,uint256,uint256,bool) view"}},"id":20926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24534:74:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20927,"nodeType":"ExpressionStatement","src":"24534:74:44"},{"assignments":[20929],"declarations":[{"constant":false,"id":20929,"mutability":"mutable","name":"currentAppPoints","nameLocation":"24623:16:44","nodeType":"VariableDeclaration","scope":20993,"src":"24615:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20928,"name":"uint256","nodeType":"ElementaryTypeName","src":"24615:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20935,"initialValue":{"arguments":[{"id":20931,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"24671:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":20932,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20890,"src":"24674:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20933,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20888,"src":"24682:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":20930,"name":"_getNodePointsForAppInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22381,"src":"24642:28:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_uint256_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,uint256,bytes32) view returns (uint256)"}},"id":20934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24642:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24615:73:44"},{"expression":{"arguments":[{"id":20937,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"24713:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":20938,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20890,"src":"24716:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20939,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20888,"src":"24724:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":20940,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20892,"src":"24731:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20941,"name":"currentAppPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20929,"src":"24739:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20942,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"24757:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24759:26:44","memberName":"_xAllocationVotingGovernor","nodeType":"MemberAccess","referencedDeclaration":22928,"src":"24757:28:44","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":20944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24786:14:44","memberName":"currentRoundId","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"24757:43:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24757:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20936,"name":"_updateEndorsement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21279,"src":"24694:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,uint256,bytes32,uint256,uint256,uint256)"}},"id":20946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24694:109:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20947,"nodeType":"ExpressionStatement","src":"24694:109:44"},{"assignments":[20949],"declarations":[{"constant":false,"id":20949,"mutability":"mutable","name":"newScore","nameLocation":"24817:8:44","nodeType":"VariableDeclaration","scope":20993,"src":"24809:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20948,"name":"uint256","nodeType":"ElementaryTypeName","src":"24809:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20956,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":20951,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"24838:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":20952,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20888,"src":"24841:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":20950,"name":"_getScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22661,"src":"24828:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32) view returns (uint256)"}},"id":20953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24828:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":20954,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20892,"src":"24850:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24828:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24809:47:44"},{"expression":{"arguments":[{"id":20958,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"24872:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":20959,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20888,"src":"24875:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":20960,"name":"newScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20949,"src":"24882:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20957,"name":"_setScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22689,"src":"24862:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32,uint256)"}},"id":20961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24862:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20962,"nodeType":"ExpressionStatement","src":"24862:29:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20963,"name":"newScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20949,"src":"24902:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":20964,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"24914:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24916:26:44","memberName":"_endorsementScoreThreshold","nodeType":"MemberAccess","referencedDeclaration":22904,"src":"24914:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24902:40:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20977,"nodeType":"IfStatement","src":"24898:152:44","trueBody":{"id":20976,"nodeType":"Block","src":"24944:106:44","statements":[{"expression":{"arguments":[{"id":20968,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"24980:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":20969,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20905,"src":"24983:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},{"id":20970,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20888,"src":"24996:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":20971,"name":"appExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20896,"src":"25003:9:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":20972,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20898,"src":"25014:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":20973,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20894,"src":"25029:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":20967,"name":"_updateStatusIfThresholdMet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22640,"src":"24952:27:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_struct$_AppsStorageStorage_$22986_storage_ptr_$_t_bytes32_$_t_bool_$_t_bool_$_t_bool_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer,bytes32,bool,bool,bool)"}},"id":20974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24952:91:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20975,"nodeType":"ExpressionStatement","src":"24952:91:44"}]}},{"assignments":[20979],"declarations":[{"constant":false,"id":20979,"mutability":"mutable","name":"endorser","nameLocation":"25064:8:44","nodeType":"VariableDeclaration","scope":20993,"src":"25056:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20978,"name":"address","nodeType":"ElementaryTypeName","src":"25056:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20985,"initialValue":{"arguments":[{"id":20983,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20890,"src":"25106:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":20980,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20914,"src":"25075:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":20981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25077:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"25075:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":20982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25090:15:44","memberName":"getTokenManager","nodeType":"MemberAccess","referencedDeclaration":18746,"src":"25075:30:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":20984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25075:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"25056:57:44"},{"eventCall":{"arguments":[{"id":20987,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20888,"src":"25136:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":20988,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20890,"src":"25143:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20989,"name":"endorser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20979,"src":"25151:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20990,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20892,"src":"25161:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20986,"name":"AppEndorsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19613,"src":"25124:11:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,address,uint256)"}},"id":20991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25124:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20992,"nodeType":"EmitStatement","src":"25119:49:44"}]},"documentation":{"id":20886,"nodeType":"StructuredDocumentation","src":"23404:736:44","text":" @notice Endorses an app with a specified number of points from a node.\n @dev Validates all constraints (paused, caps, node ownership) before creating endorsement.\n      If node already endorses this app, adds points and resets cooldown.\n      Cooldown is tracked per-app using the current round ID.\n @param appId The unique identifier of the app to endorse.\n @param nodeId The unique identifier of the endorsing node.\n @param points The number of points to endorse with.\n @param isBlacklisted Whether the app is currently blacklisted.\n @param appExists Whether the app has been fully created (not just submitted).\n @param isEligibleNow Whether the app is currently eligible for voting."},"functionSelector":"9a116641","id":20994,"implemented":true,"kind":"function","modifiers":[],"name":"endorseApp","nameLocation":"24152:10:44","nodeType":"FunctionDefinition","parameters":{"id":20899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20888,"mutability":"mutable","name":"appId","nameLocation":"24176:5:44","nodeType":"VariableDeclaration","scope":20994,"src":"24168:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24168:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20890,"mutability":"mutable","name":"nodeId","nameLocation":"24195:6:44","nodeType":"VariableDeclaration","scope":20994,"src":"24187:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20889,"name":"uint256","nodeType":"ElementaryTypeName","src":"24187:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20892,"mutability":"mutable","name":"points","nameLocation":"24215:6:44","nodeType":"VariableDeclaration","scope":20994,"src":"24207:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20891,"name":"uint256","nodeType":"ElementaryTypeName","src":"24207:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20894,"mutability":"mutable","name":"isBlacklisted","nameLocation":"24232:13:44","nodeType":"VariableDeclaration","scope":20994,"src":"24227:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20893,"name":"bool","nodeType":"ElementaryTypeName","src":"24227:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20896,"mutability":"mutable","name":"appExists","nameLocation":"24256:9:44","nodeType":"VariableDeclaration","scope":20994,"src":"24251:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20895,"name":"bool","nodeType":"ElementaryTypeName","src":"24251:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20898,"mutability":"mutable","name":"isEligibleNow","nameLocation":"24276:13:44","nodeType":"VariableDeclaration","scope":20994,"src":"24271:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20897,"name":"bool","nodeType":"ElementaryTypeName","src":"24271:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24162:131:44"},"returnParameters":{"id":20900,"nodeType":"ParameterList","parameters":[],"src":"24303:0:44"},"scope":22803,"src":"24143:1030:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21167,"nodeType":"Block","src":"25431:1302:44","statements":[{"condition":{"expression":{"id":21011,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"25441:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21012,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25443:19:44","memberName":"_endorsementsPaused","nodeType":"MemberAccess","referencedDeclaration":22964,"src":"25441:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21016,"nodeType":"IfStatement","src":"25437:54:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21013,"name":"EndorsementsPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19535,"src":"25471:18:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25471:20:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21015,"nodeType":"RevertStatement","src":"25464:27:44"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":21017,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21000,"src":"25501:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":21018,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25513:5:44","memberName":"_apps","nodeType":"MemberAccess","referencedDeclaration":22982,"src":"25501:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App storage ref)"}},"id":21020,"indexExpression":{"id":21019,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21002,"src":"25519:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25501:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage","typeString":"struct X2EarnAppsDataTypes.App storage ref"}},"id":21021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25526:2:44","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":17350,"src":"25501:27:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":21024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25540:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":21023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25532:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":21022,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25532:7:44","typeDescriptions":{}}},"id":21025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25532:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25501:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21031,"nodeType":"IfStatement","src":"25497:81:44","trueBody":{"errorCall":{"arguments":[{"id":21028,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21002,"src":"25572:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21027,"name":"X2EarnNonexistentApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19511,"src":"25551:20:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":21029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25551:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21030,"nodeType":"RevertStatement","src":"25544:34:44"}},{"condition":{"id":21032,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21008,"src":"25588:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21037,"nodeType":"IfStatement","src":"25584:53:44","trueBody":{"errorCall":{"arguments":[{"id":21034,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21002,"src":"25631:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21033,"name":"X2EarnAppBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19515,"src":"25610:20:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":21035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25610:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21036,"nodeType":"RevertStatement","src":"25603:34:44"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21038,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"25647:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":21039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25657:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25647:11:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21041,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21006,"src":"25662:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":21042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25672:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25662:11:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25647:26:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21048,"nodeType":"IfStatement","src":"25643:60:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21045,"name":"InvalidPointsAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19567,"src":"25682:19:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25682:21:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21047,"nodeType":"RevertStatement","src":"25675:28:44"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"25713:35:44","subExpression":{"arguments":[{"id":21052,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"25741:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":21049,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"25714:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21050,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25716:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"25714:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":21051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25729:11:44","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":18678,"src":"25714:26:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view external returns (bool)"}},"id":21053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25714:34:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":21062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"25752:50:44","subExpression":{"arguments":[{"expression":{"id":21058,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"25783:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25787:6:44","memberName":"sender","nodeType":"MemberAccess","src":"25783:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21060,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"25795:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":21055,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"25753:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25755:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"25753:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":21057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25768:14:44","memberName":"isTokenManager","nodeType":"MemberAccess","referencedDeclaration":18775,"src":"25753:29:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view external returns (bool)"}},"id":21061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25753:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25713:89:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21068,"nodeType":"IfStatement","src":"25709:138:44","trueBody":{"id":21067,"nodeType":"Block","src":"25804:43:44","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21064,"name":"X2EarnNonNodeHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19517,"src":"25819:19:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25819:21:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21066,"nodeType":"RevertStatement","src":"25812:28:44"}]}},{"assignments":[21070],"declarations":[{"constant":false,"id":21070,"mutability":"mutable","name":"nodeLevel","nameLocation":"25859:9:44","nodeType":"VariableDeclaration","scope":21167,"src":"25853:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21069,"name":"uint8","nodeType":"ElementaryTypeName","src":"25853:5:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":21076,"initialValue":{"arguments":[{"id":21074,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"25900:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":21071,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"25871:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25873:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"25871:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":21073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25886:13:44","memberName":"getTokenLevel","nodeType":"MemberAccess","referencedDeclaration":18643,"src":"25871:28:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) view external returns (uint8)"}},"id":21075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25871:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"25853:54:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":21077,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"25917:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25919:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"25917:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":21080,"indexExpression":{"id":21079,"name":"nodeLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"25941:9:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25917:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":21081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25955:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25917:39:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21086,"nodeType":"IfStatement","src":"25913:77:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21083,"name":"NodeNotAllowedToEndorse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19523,"src":"25965:23:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25965:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21085,"nodeType":"RevertStatement","src":"25958:32:44"}},{"assignments":[21088],"declarations":[{"constant":false,"id":21088,"mutability":"mutable","name":"totalNodePoints","nameLocation":"26005:15:44","nodeType":"VariableDeclaration","scope":21167,"src":"25997:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21087,"name":"uint256","nodeType":"ElementaryTypeName","src":"25997:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21093,"initialValue":{"baseExpression":{"expression":{"id":21089,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"26023:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26025:21:44","memberName":"_nodeEnodorsmentScore","nodeType":"MemberAccess","referencedDeclaration":22892,"src":"26023:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"}},"id":21092,"indexExpression":{"id":21091,"name":"nodeLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21070,"src":"26047:9:44","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26023:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25997:60:44"},{"assignments":[21095],"declarations":[{"constant":false,"id":21095,"mutability":"mutable","name":"usedPoints","nameLocation":"26071:10:44","nodeType":"VariableDeclaration","scope":21167,"src":"26063:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21094,"name":"uint256","nodeType":"ElementaryTypeName","src":"26063:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21100,"initialValue":{"arguments":[{"id":21097,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"26103:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21098,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"26106:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21096,"name":"_getNodeUsedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22322,"src":"26084:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,uint256) view returns (uint256)"}},"id":21099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26084:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26063:50:44"},{"assignments":[21102],"declarations":[{"constant":false,"id":21102,"mutability":"mutable","name":"availablePoints","nameLocation":"26127:15:44","nodeType":"VariableDeclaration","scope":21167,"src":"26119:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21101,"name":"uint256","nodeType":"ElementaryTypeName","src":"26119:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21111,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21103,"name":"totalNodePoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21088,"src":"26145:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":21104,"name":"usedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21095,"src":"26163:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26145:28:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26207:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"26145:63:44","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21106,"name":"totalNodePoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21088,"src":"26176:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21107,"name":"usedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21095,"src":"26194:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26176:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26119:89:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21112,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21006,"src":"26218:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":21113,"name":"availablePoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21102,"src":"26227:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26218:24:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21121,"nodeType":"IfStatement","src":"26214:97:44","trueBody":{"errorCall":{"arguments":[{"id":21116,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"26279:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21117,"name":"availablePoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21102,"src":"26287:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21118,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21006,"src":"26304:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21115,"name":"InsufficientAvailablePoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19565,"src":"26251:27:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":21119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26251:60:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21120,"nodeType":"RevertStatement","src":"26244:67:44"}},{"assignments":[21123],"declarations":[{"constant":false,"id":21123,"mutability":"mutable","name":"currentAppPoints","nameLocation":"26326:16:44","nodeType":"VariableDeclaration","scope":21167,"src":"26318:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21122,"name":"uint256","nodeType":"ElementaryTypeName","src":"26318:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21129,"initialValue":{"arguments":[{"id":21125,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"26374:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21126,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"26377:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21127,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21002,"src":"26385:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21124,"name":"_getNodePointsForAppInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22381,"src":"26345:28:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_uint256_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,uint256,bytes32) view returns (uint256)"}},"id":21128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26345:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26318:73:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21130,"name":"currentAppPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21123,"src":"26401:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21131,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21006,"src":"26420:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26401:25:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":21133,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"26429:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26431:23:44","memberName":"_maxPointsPerNodePerApp","nodeType":"MemberAccess","referencedDeclaration":22960,"src":"26429:25:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26401:53:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21144,"nodeType":"IfStatement","src":"26397:146:44","trueBody":{"id":21143,"nodeType":"Block","src":"26456:87:44","statements":[{"errorCall":{"arguments":[{"id":21137,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21004,"src":"26495:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21138,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21002,"src":"26503:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":21139,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"26510:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26512:23:44","memberName":"_maxPointsPerNodePerApp","nodeType":"MemberAccess","referencedDeclaration":22960,"src":"26510:25:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21136,"name":"ExceedsMaxPointsPerNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19557,"src":"26471:23:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (uint256,bytes32,uint256) pure"}},"id":21141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26471:65:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21142,"nodeType":"RevertStatement","src":"26464:72:44"}]}},{"assignments":[21146],"declarations":[{"constant":false,"id":21146,"mutability":"mutable","name":"currentScore","nameLocation":"26556:12:44","nodeType":"VariableDeclaration","scope":21167,"src":"26548:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21145,"name":"uint256","nodeType":"ElementaryTypeName","src":"26548:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21151,"initialValue":{"arguments":[{"id":21148,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"26581:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21149,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21002,"src":"26584:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21147,"name":"_getScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22661,"src":"26571:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32) view returns (uint256)"}},"id":21150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26571:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26548:42:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21152,"name":"currentScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21146,"src":"26600:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21153,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21006,"src":"26615:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26600:21:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":21155,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"26624:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26626:16:44","memberName":"_maxPointsPerApp","nodeType":"MemberAccess","referencedDeclaration":22962,"src":"26624:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26600:42:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21166,"nodeType":"IfStatement","src":"26596:133:44","trueBody":{"id":21165,"nodeType":"Block","src":"26644:85:44","statements":[{"errorCall":{"arguments":[{"id":21159,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21002,"src":"26682:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21160,"name":"currentScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21146,"src":"26689:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":21161,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20997,"src":"26703:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26705:16:44","memberName":"_maxPointsPerApp","nodeType":"MemberAccess","referencedDeclaration":22962,"src":"26703:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21158,"name":"ExceedsMaxPointsPerApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19549,"src":"26659:22:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,uint256) pure"}},"id":21163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26659:63:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21164,"nodeType":"RevertStatement","src":"26652:70:44"}]}}]},"id":21168,"implemented":true,"kind":"function","modifiers":[],"name":"_validateEndorsement","nameLocation":"25186:20:44","nodeType":"FunctionDefinition","parameters":{"id":21009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20997,"mutability":"mutable","name":"$","nameLocation":"25262:1:44","nodeType":"VariableDeclaration","scope":21168,"src":"25212:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":20996,"nodeType":"UserDefinedTypeName","pathNode":{"id":20995,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["25212:22:44","25235:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"25212:41:44"},"referencedDeclaration":22972,"src":"25212:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":21000,"mutability":"mutable","name":"appsStorage","nameLocation":"25319:11:44","nodeType":"VariableDeclaration","scope":21168,"src":"25269:61:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"},"typeName":{"id":20999,"nodeType":"UserDefinedTypeName","pathNode":{"id":20998,"name":"X2EarnAppsStorageTypes.AppsStorageStorage","nameLocations":["25269:22:44","25292:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22986,"src":"25269:41:44"},"referencedDeclaration":22986,"src":"25269:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"}},"visibility":"internal"},{"constant":false,"id":21002,"mutability":"mutable","name":"appId","nameLocation":"25344:5:44","nodeType":"VariableDeclaration","scope":21168,"src":"25336:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21001,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25336:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":21004,"mutability":"mutable","name":"nodeId","nameLocation":"25363:6:44","nodeType":"VariableDeclaration","scope":21168,"src":"25355:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21003,"name":"uint256","nodeType":"ElementaryTypeName","src":"25355:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21006,"mutability":"mutable","name":"points","nameLocation":"25383:6:44","nodeType":"VariableDeclaration","scope":21168,"src":"25375:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21005,"name":"uint256","nodeType":"ElementaryTypeName","src":"25375:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21008,"mutability":"mutable","name":"isBlacklisted","nameLocation":"25400:13:44","nodeType":"VariableDeclaration","scope":21168,"src":"25395:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21007,"name":"bool","nodeType":"ElementaryTypeName","src":"25395:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25206:211:44"},"returnParameters":{"id":21010,"nodeType":"ParameterList","parameters":[],"src":"25431:0:44"},"scope":22803,"src":"25177:1556:44","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":21278,"nodeType":"Block","src":"26949:758:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21184,"name":"currentAppPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21179,"src":"26959:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":21185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26978:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26959:20:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21276,"nodeType":"Block","src":"27216:487:44","statements":[{"expression":{"arguments":[{"arguments":[{"id":21229,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21175,"src":"27348:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21230,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21177,"src":"27363:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21231,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21181,"src":"27388:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21227,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"27304:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":21228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27327:11:44","memberName":"Endorsement","nodeType":"MemberAccess","referencedDeclaration":22865,"src":"27304:34:44","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Endorsement_$22865_storage_ptr_$","typeString":"type(struct X2EarnAppsStorageTypes.Endorsement storage pointer)"}},"id":21232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["27341:5:44","27355:6:44","27371:15:44"],"names":["appId","points","endorsedAtRound"],"nodeType":"FunctionCall","src":"27304:99:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Endorsement_$22865_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement memory"}],"expression":{"baseExpression":{"expression":{"id":21221,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"27260:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27262:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"27260:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":21225,"indexExpression":{"id":21223,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"27282:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27260:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"id":21226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27290:4:44","memberName":"push","nodeType":"MemberAccess","src":"27260:34:44","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr_$_t_struct$_Endorsement_$22865_storage_$returns$__$attached_to$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr_$","typeString":"function (struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer,struct X2EarnAppsStorageTypes.Endorsement storage ref)"}},"id":21233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27260:151:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21234,"nodeType":"ExpressionStatement","src":"27260:151:44"},{"expression":{"id":21249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":21235,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"27419:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27421:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"27419:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":21240,"indexExpression":{"id":21237,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"27449:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27419:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":21241,"indexExpression":{"id":21238,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21175,"src":"27457:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27419:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":21242,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"27466:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27468:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"27466:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":21245,"indexExpression":{"id":21244,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"27488:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27466:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"id":21246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27496:6:44","memberName":"length","nodeType":"MemberAccess","src":"27466:36:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":21247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27505:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27466:40:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27419:87:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21250,"nodeType":"ExpressionStatement","src":"27419:87:44"},{"expression":{"arguments":[{"id":21257,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"27602:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"expression":{"id":21251,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"27570:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27572:17:44","memberName":"_appEndorserNodes","nodeType":"MemberAccess","referencedDeclaration":22952,"src":"27570:19:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[] storage ref)"}},"id":21255,"indexExpression":{"id":21253,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21175,"src":"27590:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27570:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":21256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27597:4:44","memberName":"push","nodeType":"MemberAccess","src":"27570:31:44","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":21258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27570:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21259,"nodeType":"ExpressionStatement","src":"27570:39:44"},{"expression":{"id":21274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":21260,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"27617:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27619:22:44","memberName":"_appEndorserNodesIndex","nodeType":"MemberAccess","referencedDeclaration":22958,"src":"27617:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(uint256 => uint256))"}},"id":21265,"indexExpression":{"id":21262,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21175,"src":"27642:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27617:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":21266,"indexExpression":{"id":21263,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"27649:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27617:39:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":21267,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"27659:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27661:17:44","memberName":"_appEndorserNodes","nodeType":"MemberAccess","referencedDeclaration":22952,"src":"27659:19:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[] storage ref)"}},"id":21270,"indexExpression":{"id":21269,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21175,"src":"27679:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27659:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":21271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27686:6:44","memberName":"length","nodeType":"MemberAccess","src":"27659:33:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":21272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27695:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27659:37:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27617:79:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21275,"nodeType":"ExpressionStatement","src":"27617:79:44"}]},"id":21277,"nodeType":"IfStatement","src":"26955:748:44","trueBody":{"id":21220,"nodeType":"Block","src":"26981:229:44","statements":[{"assignments":[21188],"declarations":[{"constant":false,"id":21188,"mutability":"mutable","name":"index","nameLocation":"26997:5:44","nodeType":"VariableDeclaration","scope":21220,"src":"26989:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21187,"name":"uint256","nodeType":"ElementaryTypeName","src":"26989:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21195,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":21189,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"27005:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27007:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"27005:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":21192,"indexExpression":{"id":21191,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"27035:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27005:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":21194,"indexExpression":{"id":21193,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21175,"src":"27043:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27005:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26989:60:44"},{"expression":{"id":21207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":21196,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"27057:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27059:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"27057:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":21201,"indexExpression":{"id":21198,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"27079:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27057:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"id":21202,"indexExpression":{"id":21199,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21188,"src":"27087:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27057:36:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"27094:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"27057:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21204,"name":"currentAppPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21179,"src":"27103:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21205,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21177,"src":"27122:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27103:25:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27057:71:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21208,"nodeType":"ExpressionStatement","src":"27057:71:44"},{"expression":{"id":21218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":21209,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21171,"src":"27136:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21213,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27138:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"27136:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":21214,"indexExpression":{"id":21211,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"27158:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27136:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"id":21215,"indexExpression":{"id":21212,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21188,"src":"27166:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27136:36:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"27173:15:44","memberName":"endorsedAtRound","nodeType":"MemberAccess","referencedDeclaration":22864,"src":"27136:52:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21217,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21181,"src":"27191:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27136:67:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21219,"nodeType":"ExpressionStatement","src":"27136:67:44"}]}}]},"id":21279,"implemented":true,"kind":"function","modifiers":[],"name":"_updateEndorsement","nameLocation":"26746:18:44","nodeType":"FunctionDefinition","parameters":{"id":21182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21171,"mutability":"mutable","name":"$","nameLocation":"26820:1:44","nodeType":"VariableDeclaration","scope":21279,"src":"26770:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":21170,"nodeType":"UserDefinedTypeName","pathNode":{"id":21169,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["26770:22:44","26793:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"26770:41:44"},"referencedDeclaration":22972,"src":"26770:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":21173,"mutability":"mutable","name":"nodeId","nameLocation":"26835:6:44","nodeType":"VariableDeclaration","scope":21279,"src":"26827:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21172,"name":"uint256","nodeType":"ElementaryTypeName","src":"26827:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21175,"mutability":"mutable","name":"appId","nameLocation":"26855:5:44","nodeType":"VariableDeclaration","scope":21279,"src":"26847:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26847:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":21177,"mutability":"mutable","name":"points","nameLocation":"26874:6:44","nodeType":"VariableDeclaration","scope":21279,"src":"26866:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21176,"name":"uint256","nodeType":"ElementaryTypeName","src":"26866:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21179,"mutability":"mutable","name":"currentAppPoints","nameLocation":"26894:16:44","nodeType":"VariableDeclaration","scope":21279,"src":"26886:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21178,"name":"uint256","nodeType":"ElementaryTypeName","src":"26886:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21181,"mutability":"mutable","name":"currentRound","nameLocation":"26924:12:44","nodeType":"VariableDeclaration","scope":21279,"src":"26916:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21180,"name":"uint256","nodeType":"ElementaryTypeName","src":"26916:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26764:176:44"},"returnParameters":{"id":21183,"nodeType":"ParameterList","parameters":[],"src":"26949:0:44"},"scope":22803,"src":"26737:970:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":21512,"nodeType":"Block","src":"28585:1885:44","statements":[{"assignments":[21301],"declarations":[{"constant":false,"id":21301,"mutability":"mutable","name":"$","nameLocation":"28641:1:44","nodeType":"VariableDeclaration","scope":21512,"src":"28591:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":21300,"nodeType":"UserDefinedTypeName","pathNode":{"id":21299,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["28591:22:44","28614:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"28591:41:44"},"referencedDeclaration":22972,"src":"28591:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":21305,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21302,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"28645:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":21303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28668:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"28645:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":21304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28645:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"28591:101:44"},{"id":21336,"nodeType":"Block","src":"28699:277:44","statements":[{"assignments":[21310],"declarations":[{"constant":false,"id":21310,"mutability":"mutable","name":"appsStorage","nameLocation":"28757:11:44","nodeType":"VariableDeclaration","scope":21336,"src":"28707:61:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"},"typeName":{"id":21309,"nodeType":"UserDefinedTypeName","pathNode":{"id":21308,"name":"X2EarnAppsStorageTypes.AppsStorageStorage","nameLocations":["28707:22:44","28730:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22986,"src":"28707:41:44"},"referencedDeclaration":22986,"src":"28707:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"}},"visibility":"internal"}],"id":21314,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21311,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"28771:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":21312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28794:22:44","memberName":"_getAppsStorageStorage","nodeType":"MemberAccess","referencedDeclaration":23061,"src":"28771:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AppsStorageStorage_$22986_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer)"}},"id":21313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28771:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"28707:111:44"},{"condition":{"expression":{"id":21315,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"28830:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28832:19:44","memberName":"_endorsementsPaused","nodeType":"MemberAccess","referencedDeclaration":22964,"src":"28830:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21320,"nodeType":"IfStatement","src":"28826:54:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21317,"name":"EndorsementsPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19535,"src":"28860:18:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28860:20:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21319,"nodeType":"RevertStatement","src":"28853:27:44"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":21321,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21310,"src":"28892:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":21322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28904:5:44","memberName":"_apps","nodeType":"MemberAccess","referencedDeclaration":22982,"src":"28892:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App storage ref)"}},"id":21324,"indexExpression":{"id":21323,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"28910:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28892:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage","typeString":"struct X2EarnAppsDataTypes.App storage ref"}},"id":21325,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28917:2:44","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":17350,"src":"28892:27:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":21328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28931:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":21327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28923:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":21326,"name":"bytes32","nodeType":"ElementaryTypeName","src":"28923:7:44","typeDescriptions":{}}},"id":21329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28923:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"28892:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21335,"nodeType":"IfStatement","src":"28888:81:44","trueBody":{"errorCall":{"arguments":[{"id":21332,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"28963:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21331,"name":"X2EarnNonexistentApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19511,"src":"28942:20:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":21333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28942:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21334,"nodeType":"RevertStatement","src":"28935:34:44"}}]},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"28986:35:44","subExpression":{"arguments":[{"id":21340,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21284,"src":"29014:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":21337,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"28987:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28989:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"28987:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":21339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29002:11:44","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":18678,"src":"28987:26:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view external returns (bool)"}},"id":21341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28987:34:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":21350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"29025:50:44","subExpression":{"arguments":[{"expression":{"id":21346,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"29056:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29060:6:44","memberName":"sender","nodeType":"MemberAccess","src":"29056:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21348,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21284,"src":"29068:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":21343,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"29026:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29028:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"29026:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":21345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29041:14:44","memberName":"isTokenManager","nodeType":"MemberAccess","referencedDeclaration":18775,"src":"29026:29:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view external returns (bool)"}},"id":21349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29026:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28986:89:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21356,"nodeType":"IfStatement","src":"28982:138:44","trueBody":{"id":21355,"nodeType":"Block","src":"29077:43:44","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21352,"name":"X2EarnNonNodeHolder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19517,"src":"29092:19:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29092:21:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21354,"nodeType":"RevertStatement","src":"29085:28:44"}]}},{"assignments":[21358],"declarations":[{"constant":false,"id":21358,"mutability":"mutable","name":"pointsToRemove","nameLocation":"29134:14:44","nodeType":"VariableDeclaration","scope":21512,"src":"29126:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21357,"name":"uint256","nodeType":"ElementaryTypeName","src":"29126:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21359,"nodeType":"VariableDeclarationStatement","src":"29126:22:44"},{"id":21466,"nodeType":"Block","src":"29154:905:44","statements":[{"assignments":[21365],"declarations":[{"constant":false,"id":21365,"mutability":"mutable","name":"endorsements","nameLocation":"29207:12:44","nodeType":"VariableDeclaration","scope":21466,"src":"29162:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":21363,"nodeType":"UserDefinedTypeName","pathNode":{"id":21362,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["29162:22:44","29185:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"29162:34:44"},"referencedDeclaration":22865,"src":"29162:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":21364,"nodeType":"ArrayTypeName","src":"29162:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":21370,"initialValue":{"baseExpression":{"expression":{"id":21366,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"29222:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29224:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"29222:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":21369,"indexExpression":{"id":21368,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21284,"src":"29244:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29222:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"29162:89:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21371,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21365,"src":"29263:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29276:6:44","memberName":"length","nodeType":"MemberAccess","src":"29263:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":21373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29286:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29263:24:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21378,"nodeType":"IfStatement","src":"29259:56:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21375,"name":"X2EarnNonEndorser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"29296:17:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29296:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21377,"nodeType":"RevertStatement","src":"29289:26:44"}},{"assignments":[21380],"declarations":[{"constant":false,"id":21380,"mutability":"mutable","name":"index","nameLocation":"29332:5:44","nodeType":"VariableDeclaration","scope":21466,"src":"29324:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21379,"name":"uint256","nodeType":"ElementaryTypeName","src":"29324:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21387,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":21381,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"29340:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29342:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"29340:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":21384,"indexExpression":{"id":21383,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21284,"src":"29370:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29340:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":21386,"indexExpression":{"id":21385,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"29378:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29340:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29324:60:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21388,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21380,"src":"29396:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":21389,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21365,"src":"29405:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29418:6:44","memberName":"length","nodeType":"MemberAccess","src":"29405:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29396:28:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":21392,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21365,"src":"29428:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21394,"indexExpression":{"id":21393,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21380,"src":"29441:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29428:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29448:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"29428:25:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":21396,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"29457:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29428:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"29396:66:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21403,"nodeType":"IfStatement","src":"29392:117:44","trueBody":{"id":21402,"nodeType":"Block","src":"29464:45:44","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21399,"name":"X2EarnNonEndorser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"29481:17:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29481:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21401,"nodeType":"RevertStatement","src":"29474:26:44"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":21404,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"29521:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29523:26:44","memberName":"_xAllocationVotingGovernor","nodeType":"MemberAccess","referencedDeclaration":22928,"src":"29521:28:44","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":21406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29550:14:44","memberName":"currentRoundId","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"29521:43:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":21407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29521:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":21408,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21365,"src":"29569:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21410,"indexExpression":{"id":21409,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21380,"src":"29582:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29569:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29589:15:44","memberName":"endorsedAtRound","nodeType":"MemberAccess","referencedDeclaration":22864,"src":"29569:35:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":21412,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"29607:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29609:15:44","memberName":"_cooldownPeriod","nodeType":"MemberAccess","referencedDeclaration":22925,"src":"29607:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29569:55:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29521:103:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21422,"nodeType":"IfStatement","src":"29517:168:44","trueBody":{"id":21421,"nodeType":"Block","src":"29626:59:44","statements":[{"errorCall":{"arguments":[{"id":21417,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21284,"src":"29662:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21418,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"29670:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21416,"name":"CooldownNotExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19541,"src":"29643:18:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,bytes32) pure"}},"id":21419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29643:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21420,"nodeType":"RevertStatement","src":"29636:40:44"}]}},{"assignments":[21424],"declarations":[{"constant":false,"id":21424,"mutability":"mutable","name":"currentPoints","nameLocation":"29701:13:44","nodeType":"VariableDeclaration","scope":21466,"src":"29693:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21423,"name":"uint256","nodeType":"ElementaryTypeName","src":"29693:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21429,"initialValue":{"expression":{"baseExpression":{"id":21425,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21365,"src":"29717:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21427,"indexExpression":{"id":21426,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21380,"src":"29730:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29717:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29737:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"29717:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29693:50:44"},{"expression":{"id":21437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21430,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21358,"src":"29751:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21431,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21286,"src":"29768:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":21432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29778:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29768:11:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":21435,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21286,"src":"29798:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"29768:36:44","trueExpression":{"id":21434,"name":"currentPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21424,"src":"29782:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29751:53:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21438,"nodeType":"ExpressionStatement","src":"29751:53:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21439,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21358,"src":"29816:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":21440,"name":"currentPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21424,"src":"29833:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29816:30:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21445,"nodeType":"IfStatement","src":"29812:64:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21442,"name":"InvalidPointsAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19567,"src":"29855:19:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29855:21:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21444,"nodeType":"RevertStatement","src":"29848:28:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21446,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21358,"src":"29889:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":21447,"name":"currentPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21424,"src":"29907:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29889:31:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21464,"nodeType":"Block","src":"29990:63:44","statements":[{"expression":{"id":21462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":21457,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21365,"src":"30000:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21459,"indexExpression":{"id":21458,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21380,"src":"30013:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30000:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21460,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"30020:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"30000:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":21461,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21358,"src":"30030:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30000:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21463,"nodeType":"ExpressionStatement","src":"30000:44:44"}]},"id":21465,"nodeType":"IfStatement","src":"29885:168:44","trueBody":{"id":21456,"nodeType":"Block","src":"29922:62:44","statements":[{"expression":{"arguments":[{"id":21450,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"29951:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21451,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21284,"src":"29954:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21452,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"29962:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21453,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21380,"src":"29969:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21449,"name":"_removeEndorsement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22522,"src":"29932:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,uint256,bytes32,uint256)"}},"id":21454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29932:43:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21455,"nodeType":"ExpressionStatement","src":"29932:43:44"}]}}]},{"assignments":[21468],"declarations":[{"constant":false,"id":21468,"mutability":"mutable","name":"newScore","nameLocation":"30073:8:44","nodeType":"VariableDeclaration","scope":21512,"src":"30065:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21467,"name":"uint256","nodeType":"ElementaryTypeName","src":"30065:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21475,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":21470,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"30094:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21471,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"30097:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21469,"name":"_getScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22661,"src":"30084:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32) view returns (uint256)"}},"id":21472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30084:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21473,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21358,"src":"30106:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30084:36:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30065:55:44"},{"expression":{"arguments":[{"id":21477,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"30136:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21478,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"30139:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21479,"name":"newScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21468,"src":"30146:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21476,"name":"_setScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22689,"src":"30126:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32,uint256)"}},"id":21480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30126:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21481,"nodeType":"ExpressionStatement","src":"30126:29:44"},{"eventCall":{"arguments":[{"id":21483,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"30181:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21484,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21284,"src":"30188:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21485,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21358,"src":"30196:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21482,"name":"AppUnendorsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19621,"src":"30167:13:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,uint256)"}},"id":21486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30167:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21487,"nodeType":"EmitStatement","src":"30162:49:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"30222:14:44","subExpression":{"id":21488,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21290,"src":"30223:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":21490,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21288,"src":"30240:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30222:31:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21495,"nodeType":"IfStatement","src":"30218:72:44","trueBody":{"id":21494,"nodeType":"Block","src":"30255:35:44","statements":[{"expression":{"id":21492,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21290,"src":"30270:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21296,"id":21493,"nodeType":"Return","src":"30263:20:44"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21496,"name":"newScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21468,"src":"30300:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":21497,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"30311:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21498,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30313:26:44","memberName":"_endorsementScoreThreshold","nodeType":"MemberAccess","referencedDeclaration":22904,"src":"30311:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30300:39:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21509,"nodeType":"IfStatement","src":"30296:152:44","trueBody":{"id":21508,"nodeType":"Block","src":"30341:107:44","statements":[{"expression":{"arguments":[{"id":21501,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21301,"src":"30395:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21502,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21282,"src":"30398:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21503,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21288,"src":"30405:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":21504,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21290,"src":"30420:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":21505,"name":"clock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21292,"src":"30435:5:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":21500,"name":"_updateStatusIfThresholdNotMetWithVote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22802,"src":"30356:38:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$_t_bool_$_t_bool_$_t_uint48_$returns$_t_bool_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32,bool,bool,uint48) returns (bool)"}},"id":21506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30356:85:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21296,"id":21507,"nodeType":"Return","src":"30349:92:44"}]}},{"expression":{"hexValue":"74727565","id":21510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30461:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":21296,"id":21511,"nodeType":"Return","src":"30454:11:44"}]},"documentation":{"id":21280,"nodeType":"StructuredDocumentation","src":"27711:682:44","text":" @notice Removes points from an endorsement (partial or full un-endorsement).\n @dev Requires cooldown to have expired. If points=0, removes entire endorsement.\n @param appId The unique identifier of the app to unendorse.\n @param nodeId The unique identifier of the endorsing node.\n @param points The number of points to remove (0 = remove all).\n @param isBlacklisted Whether the app is currently blacklisted.\n @param isEligibleNow Whether the app is currently eligible for voting.\n @param clock The current block timestamp for grace period calculations.\n @return stillEligible Whether the app remains eligible after this un-endorsement."},"functionSelector":"4fd4e1b8","id":21513,"implemented":true,"kind":"function","modifiers":[],"name":"unendorseApp","nameLocation":"28405:12:44","nodeType":"FunctionDefinition","parameters":{"id":21293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21282,"mutability":"mutable","name":"appId","nameLocation":"28431:5:44","nodeType":"VariableDeclaration","scope":21513,"src":"28423:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21281,"name":"bytes32","nodeType":"ElementaryTypeName","src":"28423:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":21284,"mutability":"mutable","name":"nodeId","nameLocation":"28450:6:44","nodeType":"VariableDeclaration","scope":21513,"src":"28442:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21283,"name":"uint256","nodeType":"ElementaryTypeName","src":"28442:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21286,"mutability":"mutable","name":"points","nameLocation":"28470:6:44","nodeType":"VariableDeclaration","scope":21513,"src":"28462:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21285,"name":"uint256","nodeType":"ElementaryTypeName","src":"28462:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21288,"mutability":"mutable","name":"isBlacklisted","nameLocation":"28487:13:44","nodeType":"VariableDeclaration","scope":21513,"src":"28482:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21287,"name":"bool","nodeType":"ElementaryTypeName","src":"28482:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":21290,"mutability":"mutable","name":"isEligibleNow","nameLocation":"28511:13:44","nodeType":"VariableDeclaration","scope":21513,"src":"28506:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21289,"name":"bool","nodeType":"ElementaryTypeName","src":"28506:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":21292,"mutability":"mutable","name":"clock","nameLocation":"28537:5:44","nodeType":"VariableDeclaration","scope":21513,"src":"28530:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":21291,"name":"uint48","nodeType":"ElementaryTypeName","src":"28530:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"28417:129:44"},"returnParameters":{"id":21296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21295,"mutability":"mutable","name":"stillEligible","nameLocation":"28570:13:44","nodeType":"VariableDeclaration","scope":21513,"src":"28565:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21294,"name":"bool","nodeType":"ElementaryTypeName","src":"28565:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28564:20:44"},"scope":22803,"src":"28396:2074:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21670,"nodeType":"Block","src":"31252:1238:44","statements":[{"assignments":[21533],"declarations":[{"constant":false,"id":21533,"mutability":"mutable","name":"$","nameLocation":"31308:1:44","nodeType":"VariableDeclaration","scope":21670,"src":"31258:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":21532,"nodeType":"UserDefinedTypeName","pathNode":{"id":21531,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["31258:22:44","31281:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"31258:41:44"},"referencedDeclaration":22972,"src":"31258:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":21537,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21534,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"31312:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":21535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31335:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"31312:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":21536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31312:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"31258:101:44"},{"id":21562,"nodeType":"Block","src":"31366:215:44","statements":[{"assignments":[21542],"declarations":[{"constant":false,"id":21542,"mutability":"mutable","name":"appsStorage","nameLocation":"31424:11:44","nodeType":"VariableDeclaration","scope":21562,"src":"31374:61:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"},"typeName":{"id":21541,"nodeType":"UserDefinedTypeName","pathNode":{"id":21540,"name":"X2EarnAppsStorageTypes.AppsStorageStorage","nameLocations":["31374:22:44","31397:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22986,"src":"31374:41:44"},"referencedDeclaration":22986,"src":"31374:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"}},"visibility":"internal"}],"id":21546,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21543,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"31438:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":21544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31461:22:44","memberName":"_getAppsStorageStorage","nodeType":"MemberAccess","referencedDeclaration":23061,"src":"31438:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AppsStorageStorage_$22986_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer)"}},"id":21545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31438:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"31374:111:44"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":21547,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21542,"src":"31497:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":21548,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31509:5:44","memberName":"_apps","nodeType":"MemberAccess","referencedDeclaration":22982,"src":"31497:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App storage ref)"}},"id":21550,"indexExpression":{"id":21549,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21516,"src":"31515:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31497:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage","typeString":"struct X2EarnAppsDataTypes.App storage ref"}},"id":21551,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31522:2:44","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":17350,"src":"31497:27:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":21554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31536:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":21553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31528:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":21552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31528:7:44","typeDescriptions":{}}},"id":21555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31528:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31497:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21561,"nodeType":"IfStatement","src":"31493:81:44","trueBody":{"errorCall":{"arguments":[{"id":21558,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21516,"src":"31568:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21557,"name":"X2EarnNonexistentApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19511,"src":"31547:20:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":21559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31547:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21560,"nodeType":"RevertStatement","src":"31540:34:44"}}]},{"assignments":[21564],"declarations":[{"constant":false,"id":21564,"mutability":"mutable","name":"pointsToRemove","nameLocation":"31595:14:44","nodeType":"VariableDeclaration","scope":21670,"src":"31587:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21563,"name":"uint256","nodeType":"ElementaryTypeName","src":"31587:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21565,"nodeType":"VariableDeclarationStatement","src":"31587:22:44"},{"id":21624,"nodeType":"Block","src":"31615:464:44","statements":[{"assignments":[21571],"declarations":[{"constant":false,"id":21571,"mutability":"mutable","name":"endorsements","nameLocation":"31668:12:44","nodeType":"VariableDeclaration","scope":21624,"src":"31623:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":21569,"nodeType":"UserDefinedTypeName","pathNode":{"id":21568,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["31623:22:44","31646:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"31623:34:44"},"referencedDeclaration":22865,"src":"31623:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":21570,"nodeType":"ArrayTypeName","src":"31623:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":21576,"initialValue":{"baseExpression":{"expression":{"id":21572,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21533,"src":"31683:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21573,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31685:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"31683:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":21575,"indexExpression":{"id":21574,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21518,"src":"31705:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31683:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"31623:89:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21577,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21571,"src":"31724:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31737:6:44","memberName":"length","nodeType":"MemberAccess","src":"31724:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":21579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31747:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31724:24:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21584,"nodeType":"IfStatement","src":"31720:56:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21581,"name":"X2EarnNonEndorser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"31757:17:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31757:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21583,"nodeType":"RevertStatement","src":"31750:26:44"}},{"assignments":[21586],"declarations":[{"constant":false,"id":21586,"mutability":"mutable","name":"index","nameLocation":"31793:5:44","nodeType":"VariableDeclaration","scope":21624,"src":"31785:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21585,"name":"uint256","nodeType":"ElementaryTypeName","src":"31785:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21593,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":21587,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21533,"src":"31801:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31803:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"31801:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":21590,"indexExpression":{"id":21589,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21518,"src":"31831:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31801:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":21592,"indexExpression":{"id":21591,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21516,"src":"31839:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31801:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31785:60:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21594,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21586,"src":"31857:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":21595,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21571,"src":"31866:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31879:6:44","memberName":"length","nodeType":"MemberAccess","src":"31866:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31857:28:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":21598,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21571,"src":"31889:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21600,"indexExpression":{"id":21599,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21586,"src":"31902:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31889:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21601,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31909:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"31889:25:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":21602,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21516,"src":"31918:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31889:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31857:66:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21609,"nodeType":"IfStatement","src":"31853:117:44","trueBody":{"id":21608,"nodeType":"Block","src":"31925:45:44","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21605,"name":"X2EarnNonEndorser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19525,"src":"31942:17:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":21606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31942:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21607,"nodeType":"RevertStatement","src":"31935:26:44"}]}},{"expression":{"id":21615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21610,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21564,"src":"31978:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":21611,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21571,"src":"31995:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21613,"indexExpression":{"id":21612,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21586,"src":"32008:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31995:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21614,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32015:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"31995:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31978:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21616,"nodeType":"ExpressionStatement","src":"31978:43:44"},{"expression":{"arguments":[{"id":21618,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21533,"src":"32048:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21619,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21518,"src":"32051:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21620,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21516,"src":"32059:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21621,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21586,"src":"32066:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21617,"name":"_removeEndorsement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22522,"src":"32029:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,uint256,bytes32,uint256)"}},"id":21622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32029:43:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21623,"nodeType":"ExpressionStatement","src":"32029:43:44"}]},{"assignments":[21626],"declarations":[{"constant":false,"id":21626,"mutability":"mutable","name":"newScore","nameLocation":"32093:8:44","nodeType":"VariableDeclaration","scope":21670,"src":"32085:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21625,"name":"uint256","nodeType":"ElementaryTypeName","src":"32085:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21633,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":21628,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21533,"src":"32114:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21629,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21516,"src":"32117:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21627,"name":"_getScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22661,"src":"32104:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32) view returns (uint256)"}},"id":21630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32104:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21631,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21564,"src":"32126:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32104:36:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32085:55:44"},{"expression":{"arguments":[{"id":21635,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21533,"src":"32156:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21636,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21516,"src":"32159:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21637,"name":"newScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21626,"src":"32166:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21634,"name":"_setScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22689,"src":"32146:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32,uint256)"}},"id":21638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32146:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21639,"nodeType":"ExpressionStatement","src":"32146:29:44"},{"eventCall":{"arguments":[{"id":21641,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21516,"src":"32201:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21642,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21518,"src":"32208:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21643,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21564,"src":"32216:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21640,"name":"AppUnendorsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19621,"src":"32187:13:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,uint256)"}},"id":21644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32187:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21645,"nodeType":"EmitStatement","src":"32182:49:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"32242:14:44","subExpression":{"id":21646,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21522,"src":"32243:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":21648,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21520,"src":"32260:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"32242:31:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21653,"nodeType":"IfStatement","src":"32238:72:44","trueBody":{"id":21652,"nodeType":"Block","src":"32275:35:44","statements":[{"expression":{"id":21650,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21522,"src":"32290:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21528,"id":21651,"nodeType":"Return","src":"32283:20:44"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21654,"name":"newScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21626,"src":"32320:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":21655,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21533,"src":"32331:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32333:26:44","memberName":"_endorsementScoreThreshold","nodeType":"MemberAccess","referencedDeclaration":22904,"src":"32331:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32320:39:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21667,"nodeType":"IfStatement","src":"32316:152:44","trueBody":{"id":21666,"nodeType":"Block","src":"32361:107:44","statements":[{"expression":{"arguments":[{"id":21659,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21533,"src":"32415:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21660,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21516,"src":"32418:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21661,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21520,"src":"32425:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":21662,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21522,"src":"32440:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":21663,"name":"clock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21524,"src":"32455:5:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":21658,"name":"_updateStatusIfThresholdNotMetWithVote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22802,"src":"32376:38:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$_t_bool_$_t_bool_$_t_uint48_$returns$_t_bool_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32,bool,bool,uint48) returns (bool)"}},"id":21664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32376:85:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21528,"id":21665,"nodeType":"Return","src":"32369:92:44"}]}},{"expression":{"hexValue":"74727565","id":21668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"32481:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":21528,"id":21669,"nodeType":"Return","src":"32474:11:44"}]},"documentation":{"id":21514,"nodeType":"StructuredDocumentation","src":"30474:599:44","text":" @notice Removes a node's endorsement from an app (called by app admin).\n @dev Unlike unendorseApp, this bypasses cooldown check. Used by app admins to remove endorsers.\n @param appId The unique identifier of the app.\n @param nodeId The unique identifier of the node to remove.\n @param isBlacklisted Whether the app is currently blacklisted.\n @param isEligibleNow Whether the app is currently eligible for voting.\n @param clock The current block timestamp for grace period calculations.\n @return stillEligible Whether the app remains eligible after removal."},"functionSelector":"e8786a58","id":21671,"implemented":true,"kind":"function","modifiers":[],"name":"removeNodeEndorsement","nameLocation":"31085:21:44","nodeType":"FunctionDefinition","parameters":{"id":21525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21516,"mutability":"mutable","name":"appId","nameLocation":"31120:5:44","nodeType":"VariableDeclaration","scope":21671,"src":"31112:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21515,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31112:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":21518,"mutability":"mutable","name":"nodeId","nameLocation":"31139:6:44","nodeType":"VariableDeclaration","scope":21671,"src":"31131:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21517,"name":"uint256","nodeType":"ElementaryTypeName","src":"31131:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21520,"mutability":"mutable","name":"isBlacklisted","nameLocation":"31156:13:44","nodeType":"VariableDeclaration","scope":21671,"src":"31151:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21519,"name":"bool","nodeType":"ElementaryTypeName","src":"31151:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":21522,"mutability":"mutable","name":"isEligibleNow","nameLocation":"31180:13:44","nodeType":"VariableDeclaration","scope":21671,"src":"31175:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21521,"name":"bool","nodeType":"ElementaryTypeName","src":"31175:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":21524,"mutability":"mutable","name":"clock","nameLocation":"31206:5:44","nodeType":"VariableDeclaration","scope":21671,"src":"31199:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":21523,"name":"uint48","nodeType":"ElementaryTypeName","src":"31199:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"31106:109:44"},"returnParameters":{"id":21528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21527,"mutability":"mutable","name":"stillEligible","nameLocation":"31237:13:44","nodeType":"VariableDeclaration","scope":21671,"src":"31232:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21526,"name":"bool","nodeType":"ElementaryTypeName","src":"31232:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"31231:20:44"},"scope":22803,"src":"31076:1414:44","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":21718,"nodeType":"Block","src":"32801:355:44","statements":[{"assignments":[21681],"declarations":[{"constant":false,"id":21681,"mutability":"mutable","name":"appsStorage","nameLocation":"32857:11:44","nodeType":"VariableDeclaration","scope":21718,"src":"32807:61:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"},"typeName":{"id":21680,"nodeType":"UserDefinedTypeName","pathNode":{"id":21679,"name":"X2EarnAppsStorageTypes.AppsStorageStorage","nameLocations":["32807:22:44","32830:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22986,"src":"32807:41:44"},"referencedDeclaration":22986,"src":"32807:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"}},"visibility":"internal"}],"id":21685,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21682,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"32871:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":21683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32894:22:44","memberName":"_getAppsStorageStorage","nodeType":"MemberAccess","referencedDeclaration":23061,"src":"32871:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AppsStorageStorage_$22986_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer)"}},"id":21684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32871:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"32807:111:44"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":21686,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21681,"src":"32928:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":21687,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32940:5:44","memberName":"_apps","nodeType":"MemberAccess","referencedDeclaration":22982,"src":"32928:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App storage ref)"}},"id":21689,"indexExpression":{"id":21688,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21674,"src":"32946:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32928:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage","typeString":"struct X2EarnAppsDataTypes.App storage ref"}},"id":21690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32953:2:44","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":17350,"src":"32928:27:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":21693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32967:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":21692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32959:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":21691,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32959:7:44","typeDescriptions":{}}},"id":21694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32959:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"32928:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21700,"nodeType":"IfStatement","src":"32924:81:44","trueBody":{"errorCall":{"arguments":[{"id":21697,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21674,"src":"32999:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21696,"name":"X2EarnNonexistentApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19511,"src":"32978:20:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":21698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32978:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21699,"nodeType":"RevertStatement","src":"32971:34:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":21701,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21681,"src":"33015:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":21702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33027:5:44","memberName":"_apps","nodeType":"MemberAccess","referencedDeclaration":22982,"src":"33015:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App storage ref)"}},"id":21704,"indexExpression":{"id":21703,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21674,"src":"33033:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33015:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage","typeString":"struct X2EarnAppsDataTypes.App storage ref"}},"id":21705,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33040:18:44","memberName":"createdAtTimestamp","nodeType":"MemberAccess","referencedDeclaration":17354,"src":"33015:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33062:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"33015:48:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21712,"nodeType":"IfStatement","src":"33011:101:44","trueBody":{"errorCall":{"arguments":[{"id":21709,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21674,"src":"33106:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21708,"name":"NodeManagementXAppAlreadyIncluded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19529,"src":"33072:33:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":21710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33072:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21711,"nodeType":"RevertStatement","src":"33065:47:44"}},{"expression":{"arguments":[{"id":21714,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21674,"src":"33139:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":21715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33146:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":21713,"name":"updateUnendorsedApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20661,"src":"33118:20:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":21716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33118:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21717,"nodeType":"ExpressionStatement","src":"33118:33:44"}]},"documentation":{"id":21672,"nodeType":"StructuredDocumentation","src":"32494:250:44","text":" @notice Removes an app submission that hasn't been fully created yet.\n @dev Can only be called on apps that were submitted but not yet created (createdAtTimestamp == 0).\n @param appId The unique identifier of the app to remove."},"functionSelector":"0ab12e14","id":21719,"implemented":true,"kind":"function","modifiers":[],"name":"removeXAppSubmission","nameLocation":"32756:20:44","nodeType":"FunctionDefinition","parameters":{"id":21675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21674,"mutability":"mutable","name":"appId","nameLocation":"32785:5:44","nodeType":"VariableDeclaration","scope":21719,"src":"32777:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21673,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32777:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"32776:15:44"},"returnParameters":{"id":21676,"nodeType":"ParameterList","parameters":[],"src":"32801:0:44"},"scope":22803,"src":"32747:409:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21838,"nodeType":"Block","src":"33711:1133:44","statements":[{"assignments":[21733],"declarations":[{"constant":false,"id":21733,"mutability":"mutable","name":"appsStorage","nameLocation":"33767:11:44","nodeType":"VariableDeclaration","scope":21838,"src":"33717:61:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"},"typeName":{"id":21732,"nodeType":"UserDefinedTypeName","pathNode":{"id":21731,"name":"X2EarnAppsStorageTypes.AppsStorageStorage","nameLocations":["33717:22:44","33740:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22986,"src":"33717:41:44"},"referencedDeclaration":22986,"src":"33717:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"}},"visibility":"internal"}],"id":21737,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21734,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"33781:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":21735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33804:22:44","memberName":"_getAppsStorageStorage","nodeType":"MemberAccess","referencedDeclaration":23061,"src":"33781:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AppsStorageStorage_$22986_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer)"}},"id":21736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33781:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"33717:111:44"},{"assignments":[21742],"declarations":[{"constant":false,"id":21742,"mutability":"mutable","name":"voteStorage","nameLocation":"33888:11:44","nodeType":"VariableDeclaration","scope":21838,"src":"33834:65:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_VoteEligibilityStorage_$22857_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.VoteEligibilityStorage"},"typeName":{"id":21741,"nodeType":"UserDefinedTypeName","pathNode":{"id":21740,"name":"X2EarnAppsStorageTypes.VoteEligibilityStorage","nameLocations":["33834:22:44","33857:22:44"],"nodeType":"IdentifierPath","referencedDeclaration":22857,"src":"33834:45:44"},"referencedDeclaration":22857,"src":"33834:45:44","typeDescriptions":{"typeIdentifier":"t_struct$_VoteEligibilityStorage_$22857_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.VoteEligibilityStorage"}},"visibility":"internal"}],"id":21746,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21743,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"33902:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":21744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33932:26:44","memberName":"_getVoteEligibilityStorage","nodeType":"MemberAccess","referencedDeclaration":23037,"src":"33902:56:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_VoteEligibilityStorage_$22857_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.VoteEligibilityStorage storage pointer)"}},"id":21745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33902:58:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_VoteEligibilityStorage_$22857_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.VoteEligibilityStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"33834:126:44"},{"assignments":[21751],"declarations":[{"constant":false,"id":21751,"mutability":"mutable","name":"$","nameLocation":"34016:1:44","nodeType":"VariableDeclaration","scope":21838,"src":"33966:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":21750,"nodeType":"UserDefinedTypeName","pathNode":{"id":21749,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["33966:22:44","33989:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"33966:41:44"},"referencedDeclaration":22972,"src":"33966:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":21755,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21752,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"34020:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":21753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34043:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"34020:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":21754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34020:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"33966:101:44"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":21756,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21733,"src":"34078:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":21757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34090:5:44","memberName":"_apps","nodeType":"MemberAccess","referencedDeclaration":22982,"src":"34078:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App storage ref)"}},"id":21759,"indexExpression":{"id":21758,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21722,"src":"34096:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34078:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage","typeString":"struct X2EarnAppsDataTypes.App storage ref"}},"id":21760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34103:2:44","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":17350,"src":"34078:27:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":21763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34117:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":21762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34109:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":21761,"name":"bytes32","nodeType":"ElementaryTypeName","src":"34109:7:44","typeDescriptions":{}}},"id":21764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34109:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"34078:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21770,"nodeType":"IfStatement","src":"34074:81:44","trueBody":{"errorCall":{"arguments":[{"id":21767,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21722,"src":"34149:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21766,"name":"X2EarnNonexistentApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19511,"src":"34128:20:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":21768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34128:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21769,"nodeType":"RevertStatement","src":"34121:34:44"}},{"assignments":[21772],"declarations":[{"constant":false,"id":21772,"mutability":"mutable","name":"isBlacklisted","nameLocation":"34167:13:44","nodeType":"VariableDeclaration","scope":21838,"src":"34162:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21771,"name":"bool","nodeType":"ElementaryTypeName","src":"34162:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":21777,"initialValue":{"baseExpression":{"expression":{"id":21773,"name":"voteStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21742,"src":"34183:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_VoteEligibilityStorage_$22857_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.VoteEligibilityStorage storage pointer"}},"id":21774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34195:10:44","memberName":"_blackList","nodeType":"MemberAccess","referencedDeclaration":22856,"src":"34183:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":21776,"indexExpression":{"id":21775,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21722,"src":"34206:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34183:29:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"34162:50:44"},{"condition":{"id":21778,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21772,"src":"34222:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21781,"nodeType":"IfStatement","src":"34218:31:44","trueBody":{"expression":{"hexValue":"66616c7365","id":21779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"34244:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":21728,"id":21780,"nodeType":"Return","src":"34237:12:44"}},{"assignments":[21783],"declarations":[{"constant":false,"id":21783,"mutability":"mutable","name":"score","nameLocation":"34338:5:44","nodeType":"VariableDeclaration","scope":21838,"src":"34330:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21782,"name":"uint256","nodeType":"ElementaryTypeName","src":"34330:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21788,"initialValue":{"arguments":[{"id":21785,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21751,"src":"34376:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21786,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21722,"src":"34379:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21784,"name":"_validateAndCleanEndorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22092,"src":"34346:29:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32) returns (uint256)"}},"id":21787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34346:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34330:55:44"},{"assignments":[21790],"declarations":[{"constant":false,"id":21790,"mutability":"mutable","name":"existsNow","nameLocation":"34396:9:44","nodeType":"VariableDeclaration","scope":21838,"src":"34391:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21789,"name":"bool","nodeType":"ElementaryTypeName","src":"34391:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":21798,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":21791,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21733,"src":"34408:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":21792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34420:5:44","memberName":"_apps","nodeType":"MemberAccess","referencedDeclaration":22982,"src":"34408:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App storage ref)"}},"id":21794,"indexExpression":{"id":21793,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21722,"src":"34426:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34408:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage","typeString":"struct X2EarnAppsDataTypes.App storage ref"}},"id":21795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34433:18:44","memberName":"createdAtTimestamp","nodeType":"MemberAccess","referencedDeclaration":17354,"src":"34408:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34455:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"34408:48:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"34391:65:44"},{"assignments":[21800],"declarations":[{"constant":false,"id":21800,"mutability":"mutable","name":"isEligibleNow","nameLocation":"34467:13:44","nodeType":"VariableDeclaration","scope":21838,"src":"34462:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21799,"name":"bool","nodeType":"ElementaryTypeName","src":"34462:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":21811,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21801,"name":"existsNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21790,"src":"34483:9:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint208","typeString":"uint208"},"id":21809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"expression":{"id":21802,"name":"voteStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21742,"src":"34496:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_VoteEligibilityStorage_$22857_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.VoteEligibilityStorage storage pointer"}},"id":21803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34508:25:44","memberName":"_isAppEligibleCheckpoints","nodeType":"MemberAccess","referencedDeclaration":22852,"src":"34496:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(bytes32 => struct Checkpoints.Trace208 storage ref)"}},"id":21805,"indexExpression":{"id":21804,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21722,"src":"34534:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34496:44:44","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage","typeString":"struct Checkpoints.Trace208 storage ref"}},"id":21806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34541:6:44","memberName":"latest","nodeType":"MemberAccess","referencedDeclaration":5608,"src":"34496:51:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Trace208_$5383_storage_ptr_$returns$_t_uint208_$attached_to$_t_struct$_Trace208_$5383_storage_ptr_$","typeString":"function (struct Checkpoints.Trace208 storage pointer) view returns (uint208)"}},"id":21807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34496:53:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":21808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34553:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"34496:58:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"34483:71:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"34462:92:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21812,"name":"score","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21783,"src":"34565:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":21813,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21751,"src":"34573:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34575:26:44","memberName":"_endorsementScoreThreshold","nodeType":"MemberAccess","referencedDeclaration":22904,"src":"34573:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34565:36:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21834,"nodeType":"Block","src":"34716:106:44","statements":[{"expression":{"arguments":[{"id":21826,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21751,"src":"34752:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21827,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21733,"src":"34755:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},{"id":21828,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21722,"src":"34768:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21829,"name":"existsNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21790,"src":"34775:9:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":21830,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21800,"src":"34786:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":21831,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21772,"src":"34801:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":21825,"name":"_updateStatusIfThresholdMet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22640,"src":"34724:27:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_struct$_AppsStorageStorage_$22986_storage_ptr_$_t_bytes32_$_t_bool_$_t_bool_$_t_bool_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer,bytes32,bool,bool,bool)"}},"id":21832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34724:91:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21833,"nodeType":"ExpressionStatement","src":"34724:91:44"}]},"id":21835,"nodeType":"IfStatement","src":"34561:261:44","trueBody":{"id":21824,"nodeType":"Block","src":"34603:107:44","statements":[{"expression":{"arguments":[{"id":21817,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21751,"src":"34657:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":21818,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21722,"src":"34660:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":21819,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21772,"src":"34667:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":21820,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21800,"src":"34682:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":21821,"name":"clock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21724,"src":"34697:5:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":21816,"name":"_updateStatusIfThresholdNotMetWithVote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22802,"src":"34618:38:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$_t_bool_$_t_bool_$_t_uint48_$returns$_t_bool_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32,bool,bool,uint48) returns (bool)"}},"id":21822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34618:85:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21728,"id":21823,"nodeType":"Return","src":"34611:92:44"}]}},{"expression":{"hexValue":"74727565","id":21836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"34835:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":21728,"id":21837,"nodeType":"Return","src":"34828:11:44"}]},"documentation":{"id":21720,"nodeType":"StructuredDocumentation","src":"33160:469:44","text":" @notice Validates an app's endorsement status and cleans up invalid endorsements.\n @dev Removes endorsements from burned/invalid nodes and updates eligibility status.\n      Triggers grace period if score drops below threshold.\n @param appId The unique identifier of the app to check.\n @param clock The current block timestamp for grace period calculations.\n @return True if the app is still eligible after validation, false otherwise."},"functionSelector":"6e054773","id":21839,"implemented":true,"kind":"function","modifiers":[],"name":"checkEndorsement","nameLocation":"33641:16:44","nodeType":"FunctionDefinition","parameters":{"id":21725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21722,"mutability":"mutable","name":"appId","nameLocation":"33666:5:44","nodeType":"VariableDeclaration","scope":21839,"src":"33658:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21721,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33658:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":21724,"mutability":"mutable","name":"clock","nameLocation":"33680:5:44","nodeType":"VariableDeclaration","scope":21839,"src":"33673:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":21723,"name":"uint48","nodeType":"ElementaryTypeName","src":"33673:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"33657:29:44"},"returnParameters":{"id":21728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21727,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21839,"src":"33705:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21726,"name":"bool","nodeType":"ElementaryTypeName","src":"33705:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"33704:6:44"},"scope":22803,"src":"33632:1212:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":22091,"nodeType":"Block","src":"35088:2309:44","statements":[{"assignments":[21854],"declarations":[{"constant":false,"id":21854,"mutability":"mutable","name":"nodeIds","nameLocation":"35112:7:44","nodeType":"VariableDeclaration","scope":22091,"src":"35094:25:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":21852,"name":"uint256","nodeType":"ElementaryTypeName","src":"35094:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21853,"nodeType":"ArrayTypeName","src":"35094:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":21859,"initialValue":{"baseExpression":{"expression":{"id":21855,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"35122:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21856,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35124:17:44","memberName":"_appEndorserNodes","nodeType":"MemberAccess","referencedDeclaration":22952,"src":"35122:19:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[] storage ref)"}},"id":21858,"indexExpression":{"id":21857,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"35142:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35122:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"35094:54:44"},{"assignments":[21861],"declarations":[{"constant":false,"id":21861,"mutability":"mutable","name":"validScore","nameLocation":"35162:10:44","nodeType":"VariableDeclaration","scope":22091,"src":"35154:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21860,"name":"uint256","nodeType":"ElementaryTypeName","src":"35154:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21862,"nodeType":"VariableDeclarationStatement","src":"35154:18:44"},{"assignments":[21864],"declarations":[{"constant":false,"id":21864,"mutability":"mutable","name":"i","nameLocation":"35186:1:44","nodeType":"VariableDeclaration","scope":22091,"src":"35178:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21863,"name":"uint256","nodeType":"ElementaryTypeName","src":"35178:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21865,"nodeType":"VariableDeclarationStatement","src":"35178:9:44"},{"body":{"id":22081,"nodeType":"Block","src":"35221:2084:44","statements":[{"assignments":[21871],"declarations":[{"constant":false,"id":21871,"mutability":"mutable","name":"nodeId","nameLocation":"35237:6:44","nodeType":"VariableDeclaration","scope":22081,"src":"35229:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21870,"name":"uint256","nodeType":"ElementaryTypeName","src":"35229:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21875,"initialValue":{"baseExpression":{"id":21872,"name":"nodeIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21854,"src":"35246:7:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":21874,"indexExpression":{"id":21873,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21864,"src":"35254:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35246:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35229:27:44"},{"assignments":[21877],"declarations":[{"constant":false,"id":21877,"mutability":"mutable","name":"isValid","nameLocation":"35269:7:44","nodeType":"VariableDeclaration","scope":22081,"src":"35264:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21876,"name":"bool","nodeType":"ElementaryTypeName","src":"35264:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":21883,"initialValue":{"arguments":[{"id":21881,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"35306:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":21878,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"35279:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35281:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"35279:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":21880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35294:11:44","memberName":"tokenExists","nodeType":"MemberAccess","referencedDeclaration":18678,"src":"35279:26:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view external returns (bool)"}},"id":21882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35279:34:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"35264:49:44"},{"condition":{"id":21885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"35326:8:44","subExpression":{"id":21884,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"35327:7:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22079,"nodeType":"Block","src":"36776:523:44","statements":[{"assignments":[22036],"declarations":[{"constant":false,"id":22036,"mutability":"mutable","name":"endorsements","nameLocation":"36875:12:44","nodeType":"VariableDeclaration","scope":22079,"src":"36830:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":22034,"nodeType":"UserDefinedTypeName","pathNode":{"id":22033,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["36830:22:44","36853:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"36830:34:44"},"referencedDeclaration":22865,"src":"36830:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":22035,"nodeType":"ArrayTypeName","src":"36830:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":22041,"initialValue":{"baseExpression":{"expression":{"id":22037,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"36890:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36892:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"36890:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":22040,"indexExpression":{"id":22039,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"36912:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36890:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"36830:89:44"},{"assignments":[22043],"declarations":[{"constant":false,"id":22043,"mutability":"mutable","name":"endorseIndex","nameLocation":"36937:12:44","nodeType":"VariableDeclaration","scope":22079,"src":"36929:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22042,"name":"uint256","nodeType":"ElementaryTypeName","src":"36929:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22050,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":22044,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"36952:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36954:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"36952:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":22047,"indexExpression":{"id":22046,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"36982:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36952:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":22049,"indexExpression":{"id":22048,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"36990:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36952:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36929:67:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22051,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22043,"src":"37070:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":22052,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22036,"src":"37086:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37099:6:44","memberName":"length","nodeType":"MemberAccess","src":"37086:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37070:35:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":22060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":22055,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22036,"src":"37109:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22057,"indexExpression":{"id":22056,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22043,"src":"37122:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37109:26:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22058,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37136:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"37109:32:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":22059,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"37145:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"37109:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"37070:80:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22068,"nodeType":"IfStatement","src":"37066:154:44","trueBody":{"id":22067,"nodeType":"Block","src":"37152:68:44","statements":[{"errorCall":{"arguments":[{"id":22063,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"37195:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22064,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"37203:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":22062,"name":"InvalidEndorsementIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19575,"src":"37171:23:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,bytes32) pure"}},"id":22065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37171:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22066,"nodeType":"RevertStatement","src":"37164:45:44"}]}},{"expression":{"id":22074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22069,"name":"validScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21861,"src":"37230:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":22070,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22036,"src":"37244:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22072,"indexExpression":{"id":22071,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22043,"src":"37257:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37244:26:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37271:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"37244:33:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37230:47:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22075,"nodeType":"ExpressionStatement","src":"37230:47:44"},{"expression":{"id":22077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"37287:3:44","subExpression":{"id":22076,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21864,"src":"37287:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22078,"nodeType":"ExpressionStatement","src":"37287:3:44"}]},"id":22080,"nodeType":"IfStatement","src":"35322:1977:44","trueBody":{"id":22030,"nodeType":"Block","src":"35336:1434:44","statements":[{"assignments":[21891],"declarations":[{"constant":false,"id":21891,"mutability":"mutable","name":"endorsements","nameLocation":"35435:12:44","nodeType":"VariableDeclaration","scope":22030,"src":"35390:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":21889,"nodeType":"UserDefinedTypeName","pathNode":{"id":21888,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["35390:22:44","35413:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"35390:34:44"},"referencedDeclaration":22865,"src":"35390:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":21890,"nodeType":"ArrayTypeName","src":"35390:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":21896,"initialValue":{"baseExpression":{"expression":{"id":21892,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"35450:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35452:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"35450:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":21895,"indexExpression":{"id":21894,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"35472:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35450:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"35390:89:44"},{"assignments":[21898],"declarations":[{"constant":false,"id":21898,"mutability":"mutable","name":"endorseIndex","nameLocation":"35497:12:44","nodeType":"VariableDeclaration","scope":22030,"src":"35489:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21897,"name":"uint256","nodeType":"ElementaryTypeName","src":"35489:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21905,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":21899,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"35512:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35514:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"35512:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":21902,"indexExpression":{"id":21901,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"35542:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35512:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":21904,"indexExpression":{"id":21903,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"35550:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35512:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35489:67:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21906,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21898,"src":"35630:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":21907,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21891,"src":"35646:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35659:6:44","memberName":"length","nodeType":"MemberAccess","src":"35646:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35630:35:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":21915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":21910,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21891,"src":"35669:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21912,"indexExpression":{"id":21911,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21898,"src":"35682:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35669:26:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35696:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"35669:32:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":21914,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"35705:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"35669:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"35630:80:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21923,"nodeType":"IfStatement","src":"35626:154:44","trueBody":{"id":21922,"nodeType":"Block","src":"35712:68:44","statements":[{"errorCall":{"arguments":[{"id":21918,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"35755:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21919,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"35763:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21917,"name":"InvalidEndorsementIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19575,"src":"35731:23:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,bytes32) pure"}},"id":21920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35731:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21921,"nodeType":"RevertStatement","src":"35724:45:44"}]}},{"assignments":[21925],"declarations":[{"constant":false,"id":21925,"mutability":"mutable","name":"pointsToRemove","nameLocation":"35798:14:44","nodeType":"VariableDeclaration","scope":22030,"src":"35790:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21924,"name":"uint256","nodeType":"ElementaryTypeName","src":"35790:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21930,"initialValue":{"expression":{"baseExpression":{"id":21926,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21891,"src":"35815:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21928,"indexExpression":{"id":21927,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21898,"src":"35828:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35815:26:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35842:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"35815:33:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35790:58:44"},{"assignments":[21932],"declarations":[{"constant":false,"id":21932,"mutability":"mutable","name":"lastEndorseIndex","nameLocation":"35914:16:44","nodeType":"VariableDeclaration","scope":22030,"src":"35906:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21931,"name":"uint256","nodeType":"ElementaryTypeName","src":"35906:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21937,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21933,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21891,"src":"35933:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35946:6:44","memberName":"length","nodeType":"MemberAccess","src":"35933:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":21935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35955:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"35933:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35906:50:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21938,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21898,"src":"35970:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":21939,"name":"lastEndorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21932,"src":"35986:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35970:32:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21963,"nodeType":"IfStatement","src":"35966:218:44","trueBody":{"id":21962,"nodeType":"Block","src":"36004:180:44","statements":[{"expression":{"id":21947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21941,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21891,"src":"36016:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21943,"indexExpression":{"id":21942,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21898,"src":"36029:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"36016:26:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":21944,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21891,"src":"36045:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21946,"indexExpression":{"id":21945,"name":"lastEndorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21932,"src":"36058:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36045:30:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"src":"36016:59:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21948,"nodeType":"ExpressionStatement","src":"36016:59:44"},{"expression":{"id":21960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":21949,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"36087:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36089:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"36087:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":21957,"indexExpression":{"id":21951,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"36117:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36087:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":21958,"indexExpression":{"expression":{"baseExpression":{"id":21952,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21891,"src":"36125:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21954,"indexExpression":{"id":21953,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21898,"src":"36138:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36125:26:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":21955,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36152:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"36125:32:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"36087:71:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21959,"name":"endorseIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21898,"src":"36161:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36087:86:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21961,"nodeType":"ExpressionStatement","src":"36087:86:44"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21964,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21891,"src":"36193:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":21966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36206:3:44","memberName":"pop","nodeType":"MemberAccess","src":"36193:16:44","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr_$","typeString":"function (struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer)"}},"id":21967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36193:18:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21968,"nodeType":"ExpressionStatement","src":"36193:18:44"},{"expression":{"id":21975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"36221:51:44","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":21969,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"36228:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":21970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36230:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"36228:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":21972,"indexExpression":{"id":21971,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"36258:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36228:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":21974,"indexExpression":{"id":21973,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"36266:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"36228:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21976,"nodeType":"ExpressionStatement","src":"36221:51:44"},{"assignments":[21978],"declarations":[{"constant":false,"id":21978,"mutability":"mutable","name":"lastNodeIndex","nameLocation":"36349:13:44","nodeType":"VariableDeclaration","scope":22030,"src":"36341:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21977,"name":"uint256","nodeType":"ElementaryTypeName","src":"36341:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21983,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21979,"name":"nodeIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21854,"src":"36365:7:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":21980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36373:6:44","memberName":"length","nodeType":"MemberAccess","src":"36365:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":21981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36382:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"36365:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36341:42:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21984,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21864,"src":"36397:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":21985,"name":"lastNodeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21978,"src":"36402:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36397:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22010,"nodeType":"IfStatement","src":"36393:184:44","trueBody":{"id":22009,"nodeType":"Block","src":"36417:160:44","statements":[{"assignments":[21988],"declarations":[{"constant":false,"id":21988,"mutability":"mutable","name":"lastNodeId","nameLocation":"36437:10:44","nodeType":"VariableDeclaration","scope":22009,"src":"36429:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21987,"name":"uint256","nodeType":"ElementaryTypeName","src":"36429:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21992,"initialValue":{"baseExpression":{"id":21989,"name":"nodeIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21854,"src":"36450:7:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":21991,"indexExpression":{"id":21990,"name":"lastNodeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21978,"src":"36458:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36450:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"36429:43:44"},{"expression":{"id":21997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21993,"name":"nodeIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21854,"src":"36484:7:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":21995,"indexExpression":{"id":21994,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21864,"src":"36492:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"36484:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21996,"name":"lastNodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21988,"src":"36497:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36484:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21998,"nodeType":"ExpressionStatement","src":"36484:23:44"},{"expression":{"id":22007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":21999,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"36519:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22003,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36521:22:44","memberName":"_appEndorserNodesIndex","nodeType":"MemberAccess","referencedDeclaration":22958,"src":"36519:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(uint256 => uint256))"}},"id":22004,"indexExpression":{"id":22001,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"36544:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36519:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":22005,"indexExpression":{"id":22002,"name":"lastNodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21988,"src":"36551:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"36519:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22006,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21864,"src":"36565:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36519:47:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22008,"nodeType":"ExpressionStatement","src":"36519:47:44"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22011,"name":"nodeIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21854,"src":"36586:7:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":22013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36594:3:44","memberName":"pop","nodeType":"MemberAccess","src":"36586:11:44","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":22014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36586:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22015,"nodeType":"ExpressionStatement","src":"36586:13:44"},{"expression":{"id":22022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"36609:46:44","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":22016,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"36616:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36618:22:44","memberName":"_appEndorserNodesIndex","nodeType":"MemberAccess","referencedDeclaration":22958,"src":"36616:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(uint256 => uint256))"}},"id":22019,"indexExpression":{"id":22018,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"36641:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36616:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":22021,"indexExpression":{"id":22020,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"36648:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"36616:39:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22023,"nodeType":"ExpressionStatement","src":"36609:46:44"},{"eventCall":{"arguments":[{"id":22025,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"36685:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":22026,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"36692:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22027,"name":"pointsToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21925,"src":"36700:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22024,"name":"AppUnendorsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19621,"src":"36671:13:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,uint256)"}},"id":22028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36671:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22029,"nodeType":"EmitStatement","src":"36666:49:44"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21866,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21864,"src":"35201:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":21867,"name":"nodeIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21854,"src":"35205:7:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":21868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35213:6:44","memberName":"length","nodeType":"MemberAccess","src":"35205:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35201:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22082,"nodeType":"WhileStatement","src":"35194:2111:44"},{"expression":{"arguments":[{"id":22084,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21843,"src":"37348:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":22085,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21845,"src":"37351:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":22086,"name":"validScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21861,"src":"37358:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22083,"name":"_setScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22689,"src":"37338:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32,uint256)"}},"id":22087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37338:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22088,"nodeType":"ExpressionStatement","src":"37338:31:44"},{"expression":{"id":22089,"name":"validScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21861,"src":"37382:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21849,"id":22090,"nodeType":"Return","src":"37375:17:44"}]},"documentation":{"id":21840,"nodeType":"StructuredDocumentation","src":"34848:92:44","text":"@dev Validate all endorsements for an app, remove invalid ones, and return updated score"},"id":22092,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAndCleanEndorsements","nameLocation":"34952:29:44","nodeType":"FunctionDefinition","parameters":{"id":21846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21843,"mutability":"mutable","name":"$","nameLocation":"35037:1:44","nodeType":"VariableDeclaration","scope":22092,"src":"34987:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":21842,"nodeType":"UserDefinedTypeName","pathNode":{"id":21841,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["34987:22:44","35010:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"34987:41:44"},"referencedDeclaration":22972,"src":"34987:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":21845,"mutability":"mutable","name":"appId","nameLocation":"35052:5:44","nodeType":"VariableDeclaration","scope":22092,"src":"35044:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21844,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35044:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"34981:80:44"},"returnParameters":{"id":21849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22092,"src":"35079:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21847,"name":"uint256","nodeType":"ElementaryTypeName","src":"35079:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35078:9:44"},"scope":22803,"src":"34943:2454:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":22275,"nodeType":"Block","src":"37482:1718:44","statements":[{"assignments":[22105],"declarations":[{"constant":false,"id":22105,"mutability":"mutable","name":"$","nameLocation":"37538:1:44","nodeType":"VariableDeclaration","scope":22275,"src":"37488:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":22104,"nodeType":"UserDefinedTypeName","pathNode":{"id":22103,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["37488:22:44","37511:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"37488:41:44"},"referencedDeclaration":22972,"src":"37488:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"id":22109,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22106,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"37542:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":22107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37565:22:44","memberName":"_getEndorsementStorage","nodeType":"MemberAccess","referencedDeclaration":23045,"src":"37542:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EndorsementStorage_$22972_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer)"}},"id":22108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37542:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"37488:101:44"},{"condition":{"expression":{"id":22110,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"37600:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37602:19:44","memberName":"_migrationCompleted","nodeType":"MemberAccess","referencedDeclaration":22966,"src":"37600:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22115,"nodeType":"IfStatement","src":"37596:61:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22112,"name":"MigrationAlreadyCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19569,"src":"37630:25:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":22113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37630:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22114,"nodeType":"RevertStatement","src":"37623:34:44"}},{"assignments":[22117],"declarations":[{"constant":false,"id":22117,"mutability":"mutable","name":"currentRound","nameLocation":"37672:12:44","nodeType":"VariableDeclaration","scope":22275,"src":"37664:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22116,"name":"uint256","nodeType":"ElementaryTypeName","src":"37664:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22122,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":22118,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"37687:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37689:26:44","memberName":"_xAllocationVotingGovernor","nodeType":"MemberAccess","referencedDeclaration":22928,"src":"37687:28:44","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"id":22120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37716:14:44","memberName":"currentRoundId","nodeType":"MemberAccess","referencedDeclaration":17242,"src":"37687:43:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":22121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37687:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"37664:68:44"},{"assignments":[22128],"declarations":[{"constant":false,"id":22128,"mutability":"mutable","name":"endorsements","nameLocation":"37783:12:44","nodeType":"VariableDeclaration","scope":22275,"src":"37738:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":22126,"nodeType":"UserDefinedTypeName","pathNode":{"id":22125,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["37738:22:44","37761:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"37738:34:44"},"referencedDeclaration":22865,"src":"37738:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":22127,"nodeType":"ArrayTypeName","src":"37738:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":22133,"initialValue":{"baseExpression":{"expression":{"id":22129,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"37798:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37800:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"37798:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":22132,"indexExpression":{"id":22131,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22096,"src":"37820:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37798:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"37738:89:44"},{"assignments":[22135],"declarations":[{"constant":false,"id":22135,"mutability":"mutable","name":"existingIndex","nameLocation":"37841:13:44","nodeType":"VariableDeclaration","scope":22275,"src":"37833:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22134,"name":"uint256","nodeType":"ElementaryTypeName","src":"37833:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22142,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":22136,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"37857:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37859:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"37857:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":22139,"indexExpression":{"id":22138,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22096,"src":"37887:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37857:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":22141,"indexExpression":{"id":22140,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"37895:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37857:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"37833:68:44"},{"assignments":[22144],"declarations":[{"constant":false,"id":22144,"mutability":"mutable","name":"exists","nameLocation":"37981:6:44","nodeType":"VariableDeclaration","scope":22275,"src":"37976:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22143,"name":"bool","nodeType":"ElementaryTypeName","src":"37976:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":22161,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22145,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22128,"src":"37990:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38003:6:44","memberName":"length","nodeType":"MemberAccess","src":"37990:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":22147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38012:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37990:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22149,"name":"existingIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22135,"src":"38023:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":22150,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22128,"src":"38039:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38052:6:44","memberName":"length","nodeType":"MemberAccess","src":"38039:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38023:35:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"37990:68:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":22159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":22154,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22128,"src":"38068:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22156,"indexExpression":{"id":22155,"name":"existingIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22135,"src":"38081:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"38068:27:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38096:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"38068:33:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":22158,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"38105:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"38068:42:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"37990:120:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"37976:134:44"},{"condition":{"id":22162,"name":"exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22144,"src":"38121:6:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22258,"nodeType":"Block","src":"38496:535:44","statements":[{"expression":{"arguments":[{"arguments":[{"id":22203,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"38607:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":22204,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22098,"src":"38622:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22205,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22117,"src":"38647:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22201,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"38563:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":22202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38586:11:44","memberName":"Endorsement","nodeType":"MemberAccess","referencedDeclaration":22865,"src":"38563:34:44","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Endorsement_$22865_storage_ptr_$","typeString":"type(struct X2EarnAppsStorageTypes.Endorsement storage pointer)"}},"id":22206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["38600:5:44","38614:6:44","38630:15:44"],"names":["appId","points","endorsedAtRound"],"nodeType":"FunctionCall","src":"38563:99:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Endorsement_$22865_memory_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement memory"}],"expression":{"id":22198,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22128,"src":"38536:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38549:4:44","memberName":"push","nodeType":"MemberAccess","src":"38536:17:44","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr_$_t_struct$_Endorsement_$22865_storage_$returns$__$attached_to$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr_$","typeString":"function (struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer,struct X2EarnAppsStorageTypes.Endorsement storage ref)"}},"id":22207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38536:134:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22208,"nodeType":"ExpressionStatement","src":"38536:134:44"},{"expression":{"id":22220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":22209,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"38678:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22213,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38680:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"38678:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":22214,"indexExpression":{"id":22211,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22096,"src":"38708:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"38678:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":22215,"indexExpression":{"id":22212,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"38716:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"38678:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22216,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22128,"src":"38725:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38738:6:44","memberName":"length","nodeType":"MemberAccess","src":"38725:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":22218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38747:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"38725:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38678:70:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22221,"nodeType":"ExpressionStatement","src":"38678:70:44"},{"expression":{"arguments":[{"id":22228,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22096,"src":"38872:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"expression":{"id":22222,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"38840:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38842:17:44","memberName":"_appEndorserNodes","nodeType":"MemberAccess","referencedDeclaration":22952,"src":"38840:19:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[] storage ref)"}},"id":22226,"indexExpression":{"id":22224,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"38860:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"38840:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":22227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38867:4:44","memberName":"push","nodeType":"MemberAccess","src":"38840:31:44","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":22229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38840:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22230,"nodeType":"ExpressionStatement","src":"38840:39:44"},{"expression":{"id":22245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":22231,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"38887:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38889:22:44","memberName":"_appEndorserNodesIndex","nodeType":"MemberAccess","referencedDeclaration":22958,"src":"38887:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(uint256 => uint256))"}},"id":22236,"indexExpression":{"id":22233,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"38912:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"38887:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":22237,"indexExpression":{"id":22234,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22096,"src":"38919:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"38887:39:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":22238,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"38929:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38931:17:44","memberName":"_appEndorserNodes","nodeType":"MemberAccess","referencedDeclaration":22952,"src":"38929:19:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[] storage ref)"}},"id":22241,"indexExpression":{"id":22240,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"38949:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"38929:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":22242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38956:6:44","memberName":"length","nodeType":"MemberAccess","src":"38929:33:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":22243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38965:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"38929:37:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38887:79:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22246,"nodeType":"ExpressionStatement","src":"38887:79:44"},{"expression":{"arguments":[{"id":22248,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"38985:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":22249,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"38988:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22251,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"39005:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":22252,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"39008:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":22250,"name":"_getScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22661,"src":"38995:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32) view returns (uint256)"}},"id":22253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38995:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":22254,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22098,"src":"39017:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38995:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22247,"name":"_setScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22689,"src":"38975:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32,uint256)"}},"id":22256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38975:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22257,"nodeType":"ExpressionStatement","src":"38975:49:44"}]},"id":22259,"nodeType":"IfStatement","src":"38117:914:44","trueBody":{"id":22197,"nodeType":"Block","src":"38129:361:44","statements":[{"assignments":[22164],"declarations":[{"constant":false,"id":22164,"mutability":"mutable","name":"oldPoints","nameLocation":"38203:9:44","nodeType":"VariableDeclaration","scope":22197,"src":"38195:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22163,"name":"uint256","nodeType":"ElementaryTypeName","src":"38195:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22169,"initialValue":{"expression":{"baseExpression":{"id":22165,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22128,"src":"38215:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22167,"indexExpression":{"id":22166,"name":"existingIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22135,"src":"38228:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"38215:27:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38243:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"38215:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"38195:54:44"},{"expression":{"id":22175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":22170,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22128,"src":"38257:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22172,"indexExpression":{"id":22171,"name":"existingIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22135,"src":"38270:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"38257:27:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"38285:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"38257:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22174,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22098,"src":"38294:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38257:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22176,"nodeType":"ExpressionStatement","src":"38257:43:44"},{"expression":{"id":22182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":22177,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22128,"src":"38308:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22179,"indexExpression":{"id":22178,"name":"existingIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22135,"src":"38321:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"38308:27:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"38336:15:44","memberName":"endorsedAtRound","nodeType":"MemberAccess","referencedDeclaration":22864,"src":"38308:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22181,"name":"currentRound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22117,"src":"38354:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38308:58:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22183,"nodeType":"ExpressionStatement","src":"38308:58:44"},{"expression":{"arguments":[{"id":22185,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"38432:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":22186,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"38435:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":22188,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"38452:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},{"id":22189,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"38455:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":22187,"name":"_getScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22661,"src":"38442:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$returns$_t_uint256_$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32) view returns (uint256)"}},"id":22190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38442:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":22191,"name":"oldPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22164,"src":"38464:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38442:31:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":22193,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22098,"src":"38476:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38442:40:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22184,"name":"_setScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22689,"src":"38422:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_EndorsementStorage_$22972_storage_ptr_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer,bytes32,uint256)"}},"id":22195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38422:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22196,"nodeType":"ExpressionStatement","src":"38422:61:44"}]}},{"assignments":[22261],"declarations":[{"constant":false,"id":22261,"mutability":"mutable","name":"endorser","nameLocation":"39091:8:44","nodeType":"VariableDeclaration","scope":22275,"src":"39083:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22260,"name":"address","nodeType":"ElementaryTypeName","src":"39083:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":22267,"initialValue":{"arguments":[{"id":22265,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22096,"src":"39133:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":22262,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22105,"src":"39102:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39104:12:44","memberName":"_stargateNFT","nodeType":"MemberAccess","referencedDeclaration":22931,"src":"39102:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"id":22264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39117:15:44","memberName":"getTokenManager","nodeType":"MemberAccess","referencedDeclaration":18746,"src":"39102:30:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":22266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39102:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39083:57:44"},{"eventCall":{"arguments":[{"id":22269,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22094,"src":"39163:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":22270,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22096,"src":"39170:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22271,"name":"endorser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22261,"src":"39178:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22272,"name":"points","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22098,"src":"39188:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22268,"name":"AppEndorsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19613,"src":"39151:11:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,address,uint256)"}},"id":22273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39151:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22274,"nodeType":"EmitStatement","src":"39146:49:44"}]},"functionSelector":"ee9419cf","id":22276,"implemented":true,"kind":"function","modifiers":[],"name":"seedEndorsement","nameLocation":"37410:15:44","nodeType":"FunctionDefinition","parameters":{"id":22099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22094,"mutability":"mutable","name":"appId","nameLocation":"37434:5:44","nodeType":"VariableDeclaration","scope":22276,"src":"37426:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22093,"name":"bytes32","nodeType":"ElementaryTypeName","src":"37426:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":22096,"mutability":"mutable","name":"nodeId","nameLocation":"37449:6:44","nodeType":"VariableDeclaration","scope":22276,"src":"37441:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22095,"name":"uint256","nodeType":"ElementaryTypeName","src":"37441:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22098,"mutability":"mutable","name":"points","nameLocation":"37465:6:44","nodeType":"VariableDeclaration","scope":22276,"src":"37457:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22097,"name":"uint256","nodeType":"ElementaryTypeName","src":"37457:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37425:47:44"},"returnParameters":{"id":22100,"nodeType":"ParameterList","parameters":[],"src":"37482:0:44"},"scope":22803,"src":"37401:1799:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":22321,"nodeType":"Block","src":"39432:249:44","statements":[{"assignments":[22291],"declarations":[{"constant":false,"id":22291,"mutability":"mutable","name":"endorsements","nameLocation":"39483:12:44","nodeType":"VariableDeclaration","scope":22321,"src":"39438:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":22289,"nodeType":"UserDefinedTypeName","pathNode":{"id":22288,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["39438:22:44","39461:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"39438:34:44"},"referencedDeclaration":22865,"src":"39438:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":22290,"nodeType":"ArrayTypeName","src":"39438:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":22296,"initialValue":{"baseExpression":{"expression":{"id":22292,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22279,"src":"39498:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22293,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39500:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"39498:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":22295,"indexExpression":{"id":22294,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22281,"src":"39520:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39498:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"39438:89:44"},{"assignments":[22298],"declarations":[{"constant":false,"id":22298,"mutability":"mutable","name":"usedPoints","nameLocation":"39541:10:44","nodeType":"VariableDeclaration","scope":22321,"src":"39533:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22297,"name":"uint256","nodeType":"ElementaryTypeName","src":"39533:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22299,"nodeType":"VariableDeclarationStatement","src":"39533:18:44"},{"body":{"id":22317,"nodeType":"Block","src":"39603:51:44","statements":[{"expression":{"id":22315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22310,"name":"usedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"39611:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":22311,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22291,"src":"39625:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22313,"indexExpression":{"id":22312,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22301,"src":"39638:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39625:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39641:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"39625:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39611:36:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22316,"nodeType":"ExpressionStatement","src":"39611:36:44"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22303,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22301,"src":"39573:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":22304,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22291,"src":"39577:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39590:6:44","memberName":"length","nodeType":"MemberAccess","src":"39577:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39573:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22318,"initializationExpression":{"assignments":[22301],"declarations":[{"constant":false,"id":22301,"mutability":"mutable","name":"i","nameLocation":"39570:1:44","nodeType":"VariableDeclaration","scope":22318,"src":"39562:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22300,"name":"uint256","nodeType":"ElementaryTypeName","src":"39562:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22302,"nodeType":"VariableDeclarationStatement","src":"39562:9:44"},"loopExpression":{"expression":{"id":22308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"39598:3:44","subExpression":{"id":22307,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22301,"src":"39598:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22309,"nodeType":"ExpressionStatement","src":"39598:3:44"},"nodeType":"ForStatement","src":"39557:97:44"},{"expression":{"id":22319,"name":"usedPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"39666:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22285,"id":22320,"nodeType":"Return","src":"39659:17:44"}]},"id":22322,"implemented":true,"kind":"function","modifiers":[],"name":"_getNodeUsedPoints","nameLocation":"39301:18:44","nodeType":"FunctionDefinition","parameters":{"id":22282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22279,"mutability":"mutable","name":"$","nameLocation":"39375:1:44","nodeType":"VariableDeclaration","scope":22322,"src":"39325:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":22278,"nodeType":"UserDefinedTypeName","pathNode":{"id":22277,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["39325:22:44","39348:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"39325:41:44"},"referencedDeclaration":22972,"src":"39325:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":22281,"mutability":"mutable","name":"nodeId","nameLocation":"39390:6:44","nodeType":"VariableDeclaration","scope":22322,"src":"39382:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22280,"name":"uint256","nodeType":"ElementaryTypeName","src":"39382:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39319:81:44"},"returnParameters":{"id":22285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22284,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22322,"src":"39423:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22283,"name":"uint256","nodeType":"ElementaryTypeName","src":"39423:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39422:9:44"},"scope":22803,"src":"39292:389:44","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":22380,"nodeType":"Block","src":"39854:335:44","statements":[{"assignments":[22339],"declarations":[{"constant":false,"id":22339,"mutability":"mutable","name":"endorsements","nameLocation":"39905:12:44","nodeType":"VariableDeclaration","scope":22380,"src":"39860:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":22337,"nodeType":"UserDefinedTypeName","pathNode":{"id":22336,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["39860:22:44","39883:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"39860:34:44"},"referencedDeclaration":22865,"src":"39860:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":22338,"nodeType":"ArrayTypeName","src":"39860:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":22344,"initialValue":{"baseExpression":{"expression":{"id":22340,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22325,"src":"39920:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22341,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39922:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"39920:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":22343,"indexExpression":{"id":22342,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22327,"src":"39942:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39920:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"39860:89:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22345,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22339,"src":"39959:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39972:6:44","memberName":"length","nodeType":"MemberAccess","src":"39959:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":22347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39982:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"39959:24:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22351,"nodeType":"IfStatement","src":"39955:38:44","trueBody":{"expression":{"hexValue":"30","id":22349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39992:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":22333,"id":22350,"nodeType":"Return","src":"39985:8:44"}},{"assignments":[22353],"declarations":[{"constant":false,"id":22353,"mutability":"mutable","name":"index","nameLocation":"40007:5:44","nodeType":"VariableDeclaration","scope":22380,"src":"39999:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22352,"name":"uint256","nodeType":"ElementaryTypeName","src":"39999:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22360,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":22354,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22325,"src":"40015:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40017:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"40015:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":22357,"indexExpression":{"id":22356,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22327,"src":"40045:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40015:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":22359,"indexExpression":{"id":22358,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22329,"src":"40053:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40015:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"39999:60:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22361,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22353,"src":"40069:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":22362,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22339,"src":"40078:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40091:6:44","memberName":"length","nodeType":"MemberAccess","src":"40078:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40069:28:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":22370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":22365,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22339,"src":"40101:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22367,"indexExpression":{"id":22366,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22353,"src":"40114:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40101:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22368,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40121:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"40101:25:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":22369,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22329,"src":"40130:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"40101:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"40069:66:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22374,"nodeType":"IfStatement","src":"40065:80:44","trueBody":{"expression":{"hexValue":"30","id":22372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40144:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":22333,"id":22373,"nodeType":"Return","src":"40137:8:44"}},{"expression":{"expression":{"baseExpression":{"id":22375,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22339,"src":"40158:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22377,"indexExpression":{"id":22376,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22353,"src":"40171:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40158:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22378,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40178:6:44","memberName":"points","nodeType":"MemberAccess","referencedDeclaration":22862,"src":"40158:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22333,"id":22379,"nodeType":"Return","src":"40151:33:44"}]},"id":22381,"implemented":true,"kind":"function","modifiers":[],"name":"_getNodePointsForAppInternal","nameLocation":"39694:28:44","nodeType":"FunctionDefinition","parameters":{"id":22330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22325,"mutability":"mutable","name":"$","nameLocation":"39778:1:44","nodeType":"VariableDeclaration","scope":22381,"src":"39728:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":22324,"nodeType":"UserDefinedTypeName","pathNode":{"id":22323,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["39728:22:44","39751:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"39728:41:44"},"referencedDeclaration":22972,"src":"39728:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":22327,"mutability":"mutable","name":"nodeId","nameLocation":"39793:6:44","nodeType":"VariableDeclaration","scope":22381,"src":"39785:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22326,"name":"uint256","nodeType":"ElementaryTypeName","src":"39785:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22329,"mutability":"mutable","name":"appId","nameLocation":"39813:5:44","nodeType":"VariableDeclaration","scope":22381,"src":"39805:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39805:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"39722:100:44"},"returnParameters":{"id":22333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22381,"src":"39845:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22331,"name":"uint256","nodeType":"ElementaryTypeName","src":"39845:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39844:9:44"},"scope":22803,"src":"39685:504:44","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":22521,"nodeType":"Block","src":"40348:1056:44","statements":[{"assignments":[22398],"declarations":[{"constant":false,"id":22398,"mutability":"mutable","name":"endorsements","nameLocation":"40453:12:44","nodeType":"VariableDeclaration","scope":22521,"src":"40408:57:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"},"typeName":{"baseType":{"id":22396,"nodeType":"UserDefinedTypeName","pathNode":{"id":22395,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["40408:22:44","40431:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"40408:34:44"},"referencedDeclaration":22865,"src":"40408:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":22397,"nodeType":"ArrayTypeName","src":"40408:36:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}},"visibility":"internal"}],"id":22403,"initialValue":{"baseExpression":{"expression":{"id":22399,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22384,"src":"40468:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40470:19:44","memberName":"_activeEndorsements","nodeType":"MemberAccess","referencedDeclaration":22937,"src":"40468:21:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref)"}},"id":22402,"indexExpression":{"id":22401,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22386,"src":"40490:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40468:29:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"40408:89:44"},{"assignments":[22405],"declarations":[{"constant":false,"id":22405,"mutability":"mutable","name":"lastIndex","nameLocation":"40511:9:44","nodeType":"VariableDeclaration","scope":22521,"src":"40503:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22404,"name":"uint256","nodeType":"ElementaryTypeName","src":"40503:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22410,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22406,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22398,"src":"40523:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40536:6:44","memberName":"length","nodeType":"MemberAccess","src":"40523:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":22408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40545:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"40523:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40503:43:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22411,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22390,"src":"40557:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":22412,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22405,"src":"40566:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40557:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22441,"nodeType":"IfStatement","src":"40553:244:44","trueBody":{"id":22440,"nodeType":"Block","src":"40577:220:44","statements":[{"assignments":[22418],"declarations":[{"constant":false,"id":22418,"mutability":"mutable","name":"lastEndorsement","nameLocation":"40628:15:44","nodeType":"VariableDeclaration","scope":22440,"src":"40585:58:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"},"typeName":{"id":22417,"nodeType":"UserDefinedTypeName","pathNode":{"id":22416,"name":"X2EarnAppsStorageTypes.Endorsement","nameLocations":["40585:22:44","40608:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"40585:34:44"},"referencedDeclaration":22865,"src":"40585:34:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"visibility":"internal"}],"id":22422,"initialValue":{"baseExpression":{"id":22419,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22398,"src":"40646:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22421,"indexExpression":{"id":22420,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22405,"src":"40659:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40646:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"nodeType":"VariableDeclarationStatement","src":"40585:84:44"},{"expression":{"id":22427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22423,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22398,"src":"40677:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22425,"indexExpression":{"id":22424,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22390,"src":"40690:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"40677:19:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22426,"name":"lastEndorsement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22418,"src":"40699:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage pointer"}},"src":"40677:37:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref"}},"id":22428,"nodeType":"ExpressionStatement","src":"40677:37:44"},{"expression":{"id":22438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":22429,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22384,"src":"40722:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40724:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"40722:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":22435,"indexExpression":{"id":22431,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22386,"src":"40752:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40722:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":22436,"indexExpression":{"expression":{"id":22432,"name":"lastEndorsement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22418,"src":"40760:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage pointer"}},"id":22433,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40776:5:44","memberName":"appId","nodeType":"MemberAccess","referencedDeclaration":22860,"src":"40760:21:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"40722:60:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22437,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22390,"src":"40785:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40722:68:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22439,"nodeType":"ExpressionStatement","src":"40722:68:44"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22442,"name":"endorsements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22398,"src":"40803:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer"}},"id":22444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40816:3:44","memberName":"pop","nodeType":"MemberAccess","src":"40803:16:44","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr_$","typeString":"function (struct X2EarnAppsStorageTypes.Endorsement storage ref[] storage pointer)"}},"id":22445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40803:18:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22446,"nodeType":"ExpressionStatement","src":"40803:18:44"},{"expression":{"id":22453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"40827:51:44","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":22447,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22384,"src":"40834:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40836:27:44","memberName":"_activeEndorsementsAppIndex","nodeType":"MemberAccess","referencedDeclaration":22943,"src":"40834:29:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":22450,"indexExpression":{"id":22449,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22386,"src":"40864:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40834:37:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":22452,"indexExpression":{"id":22451,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22388,"src":"40872:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"40834:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22454,"nodeType":"ExpressionStatement","src":"40827:51:44"},{"assignments":[22459],"declarations":[{"constant":false,"id":22459,"mutability":"mutable","name":"appNodes","nameLocation":"40975:8:44","nodeType":"VariableDeclaration","scope":22521,"src":"40957:26:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":22457,"name":"uint256","nodeType":"ElementaryTypeName","src":"40957:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22458,"nodeType":"ArrayTypeName","src":"40957:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":22464,"initialValue":{"baseExpression":{"expression":{"id":22460,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22384,"src":"40986:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22461,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40988:17:44","memberName":"_appEndorserNodes","nodeType":"MemberAccess","referencedDeclaration":22952,"src":"40986:19:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[] storage ref)"}},"id":22463,"indexExpression":{"id":22462,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22388,"src":"41006:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40986:26:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"40957:55:44"},{"assignments":[22466],"declarations":[{"constant":false,"id":22466,"mutability":"mutable","name":"nodeIndex","nameLocation":"41026:9:44","nodeType":"VariableDeclaration","scope":22521,"src":"41018:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22465,"name":"uint256","nodeType":"ElementaryTypeName","src":"41018:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22473,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":22467,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22384,"src":"41038:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41040:22:44","memberName":"_appEndorserNodesIndex","nodeType":"MemberAccess","referencedDeclaration":22958,"src":"41038:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(uint256 => uint256))"}},"id":22470,"indexExpression":{"id":22469,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22388,"src":"41063:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41038:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":22472,"indexExpression":{"id":22471,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22386,"src":"41070:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41038:39:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41018:59:44"},{"assignments":[22475],"declarations":[{"constant":false,"id":22475,"mutability":"mutable","name":"lastNodeIndex","nameLocation":"41091:13:44","nodeType":"VariableDeclaration","scope":22521,"src":"41083:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22474,"name":"uint256","nodeType":"ElementaryTypeName","src":"41083:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22480,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22476,"name":"appNodes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22459,"src":"41107:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":22477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41116:6:44","memberName":"length","nodeType":"MemberAccess","src":"41107:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":22478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41125:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"41107:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41083:43:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22481,"name":"nodeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22466,"src":"41137:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":22482,"name":"lastNodeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22475,"src":"41150:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41137:26:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22507,"nodeType":"IfStatement","src":"41133:194:44","trueBody":{"id":22506,"nodeType":"Block","src":"41165:162:44","statements":[{"assignments":[22485],"declarations":[{"constant":false,"id":22485,"mutability":"mutable","name":"lastNodeId","nameLocation":"41181:10:44","nodeType":"VariableDeclaration","scope":22506,"src":"41173:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22484,"name":"uint256","nodeType":"ElementaryTypeName","src":"41173:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22489,"initialValue":{"baseExpression":{"id":22486,"name":"appNodes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22459,"src":"41194:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":22488,"indexExpression":{"id":22487,"name":"lastNodeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22475,"src":"41203:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41194:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41173:44:44"},{"expression":{"id":22494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22490,"name":"appNodes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22459,"src":"41225:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":22492,"indexExpression":{"id":22491,"name":"nodeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22466,"src":"41234:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"41225:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22493,"name":"lastNodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22485,"src":"41247:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41225:32:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22495,"nodeType":"ExpressionStatement","src":"41225:32:44"},{"expression":{"id":22504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":22496,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22384,"src":"41265:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22500,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41267:22:44","memberName":"_appEndorserNodesIndex","nodeType":"MemberAccess","referencedDeclaration":22958,"src":"41265:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(uint256 => uint256))"}},"id":22501,"indexExpression":{"id":22498,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22388,"src":"41290:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41265:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":22502,"indexExpression":{"id":22499,"name":"lastNodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22485,"src":"41297:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"41265:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22503,"name":"nodeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22466,"src":"41311:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41265:55:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22505,"nodeType":"ExpressionStatement","src":"41265:55:44"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22508,"name":"appNodes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22459,"src":"41333:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":22510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41342:3:44","memberName":"pop","nodeType":"MemberAccess","src":"41333:12:44","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":22511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41333:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22512,"nodeType":"ExpressionStatement","src":"41333:14:44"},{"expression":{"id":22519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"41353:46:44","subExpression":{"baseExpression":{"baseExpression":{"expression":{"id":22513,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22384,"src":"41360:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41362:22:44","memberName":"_appEndorserNodesIndex","nodeType":"MemberAccess","referencedDeclaration":22958,"src":"41360:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(uint256 => uint256))"}},"id":22516,"indexExpression":{"id":22515,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22388,"src":"41385:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41360:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":22518,"indexExpression":{"id":22517,"name":"nodeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22386,"src":"41392:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"41360:39:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22520,"nodeType":"ExpressionStatement","src":"41353:46:44"}]},"id":22522,"implemented":true,"kind":"function","modifiers":[],"name":"_removeEndorsement","nameLocation":"40202:18:44","nodeType":"FunctionDefinition","parameters":{"id":22391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22384,"mutability":"mutable","name":"$","nameLocation":"40276:1:44","nodeType":"VariableDeclaration","scope":22522,"src":"40226:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":22383,"nodeType":"UserDefinedTypeName","pathNode":{"id":22382,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["40226:22:44","40249:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"40226:41:44"},"referencedDeclaration":22972,"src":"40226:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":22386,"mutability":"mutable","name":"nodeId","nameLocation":"40291:6:44","nodeType":"VariableDeclaration","scope":22522,"src":"40283:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22385,"name":"uint256","nodeType":"ElementaryTypeName","src":"40283:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22388,"mutability":"mutable","name":"appId","nameLocation":"40311:5:44","nodeType":"VariableDeclaration","scope":22522,"src":"40303:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"40303:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":22390,"mutability":"mutable","name":"index","nameLocation":"40330:5:44","nodeType":"VariableDeclaration","scope":22522,"src":"40322:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22389,"name":"uint256","nodeType":"ElementaryTypeName","src":"40322:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40220:119:44"},"returnParameters":{"id":22392,"nodeType":"ParameterList","parameters":[],"src":"40348:0:44"},"scope":22803,"src":"40193:1211:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":22639,"nodeType":"Block","src":"41668:759:44","statements":[{"condition":{"id":22540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"41678:10:44","subExpression":{"id":22539,"name":"appExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22532,"src":"41679:9:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":22595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42137:14:44","subExpression":{"id":22594,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22534,"src":"42138:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22609,"nodeType":"IfStatement","src":"42133:99:44","trueBody":{"id":22608,"nodeType":"Block","src":"42153:79:44","statements":[{"expression":{"arguments":[{"id":22601,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"42196:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"expression":{"id":22602,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22525,"src":"42203:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42205:12:44","memberName":"_appSecurity","nodeType":"MemberAccess","referencedDeclaration":22913,"src":"42203:14:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_APP_SECURITY_$19455_$","typeString":"mapping(bytes32 => enum PassportTypes.APP_SECURITY)"}},"id":22605,"indexExpression":{"id":22604,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"42218:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42203:21:44","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}],"expression":{"expression":{"id":22596,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22525,"src":"42161:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42163:17:44","memberName":"_veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":22919,"src":"42161:19:44","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":22600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42181:14:44","memberName":"setAppSecurity","nodeType":"MemberAccess","referencedDeclaration":15239,"src":"42161:34:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_enum$_APP_SECURITY_$19455_$returns$__$","typeString":"function (bytes32,enum PassportTypes.APP_SECURITY) external"}},"id":22606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42161:64:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22607,"nodeType":"ExpressionStatement","src":"42161:64:44"}]}},"id":22610,"nodeType":"IfStatement","src":"41674:558:44","trueBody":{"id":22593,"nodeType":"Block","src":"41690:437:44","statements":[{"expression":{"id":22549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":22541,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22528,"src":"41698:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":22544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41710:5:44","memberName":"_apps","nodeType":"MemberAccess","referencedDeclaration":22982,"src":"41698:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App storage ref)"}},"id":22545,"indexExpression":{"id":22543,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"41716:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41698:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage","typeString":"struct X2EarnAppsDataTypes.App storage ref"}},"id":22546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"41723:18:44","memberName":"createdAtTimestamp","nodeType":"MemberAccess","referencedDeclaration":17354,"src":"41698:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":22547,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"41744:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":22548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41750:9:44","memberName":"timestamp","nodeType":"MemberAccess","src":"41744:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41698:61:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22550,"nodeType":"ExpressionStatement","src":"41698:61:44"},{"expression":{"arguments":[{"id":22556,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"41792:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":22551,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22528,"src":"41767:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":22554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41779:7:44","memberName":"_appIds","nodeType":"MemberAccess","referencedDeclaration":22985,"src":"41767:19:44","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":22555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41787:4:44","memberName":"push","nodeType":"MemberAccess","src":"41767:24:44","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer,bytes32)"}},"id":22557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41767:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22558,"nodeType":"ExpressionStatement","src":"41767:31:44"},{"expression":{"arguments":[{"id":22564,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"41841:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":22565,"name":"PassportTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19456,"src":"41848:13:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PassportTypes_$19456_$","typeString":"type(library PassportTypes)"}},"id":22566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41862:12:44","memberName":"APP_SECURITY","nodeType":"MemberAccess","referencedDeclaration":19455,"src":"41848:26:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_APP_SECURITY_$19455_$","typeString":"type(enum PassportTypes.APP_SECURITY)"}},"id":22567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"41875:3:44","memberName":"LOW","nodeType":"MemberAccess","referencedDeclaration":19452,"src":"41848:30:44","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}],"expression":{"expression":{"id":22559,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22525,"src":"41806:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22562,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41808:17:44","memberName":"_veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":22919,"src":"41806:19:44","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":22563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41826:14:44","memberName":"setAppSecurity","nodeType":"MemberAccess","referencedDeclaration":15239,"src":"41806:34:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_enum$_APP_SECURITY_$19455_$returns$__$","typeString":"function (bytes32,enum PassportTypes.APP_SECURITY) external"}},"id":22568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41806:73:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22569,"nodeType":"ExpressionStatement","src":"41806:73:44"},{"assignments":[22574],"declarations":[{"constant":false,"id":22574,"mutability":"mutable","name":"adminStorage","nameLocation":"41941:12:44","nodeType":"VariableDeclaration","scope":22593,"src":"41888:65:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AdministrationStorage_$23029_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AdministrationStorage"},"typeName":{"id":22573,"nodeType":"UserDefinedTypeName","pathNode":{"id":22572,"name":"X2EarnAppsStorageTypes.AdministrationStorage","nameLocations":["41888:22:44","41911:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":23029,"src":"41888:44:44"},"referencedDeclaration":23029,"src":"41888:44:44","typeDescriptions":{"typeIdentifier":"t_struct$_AdministrationStorage_$23029_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AdministrationStorage"}},"visibility":"internal"}],"id":22578,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22575,"name":"X2EarnAppsStorageTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23070,"src":"41956:22:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_X2EarnAppsStorageTypes_$23070_$","typeString":"type(library X2EarnAppsStorageTypes)"}},"id":22576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41988:25:44","memberName":"_getAdministrationStorage","nodeType":"MemberAccess","referencedDeclaration":23069,"src":"41956:57:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AdministrationStorage_$23029_storage_ptr_$","typeString":"function () pure returns (struct X2EarnAppsStorageTypes.AdministrationStorage storage pointer)"}},"id":22577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41956:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AdministrationStorage_$23029_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AdministrationStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"41888:127:44"},{"eventCall":{"arguments":[{"id":22580,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"42037:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"expression":{"id":22581,"name":"adminStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22574,"src":"42044:12:44","typeDescriptions":{"typeIdentifier":"t_struct$_AdministrationStorage_$23029_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AdministrationStorage storage pointer"}},"id":22582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42057:18:44","memberName":"_teamWalletAddress","nodeType":"MemberAccess","referencedDeclaration":23005,"src":"42044:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":22584,"indexExpression":{"id":22583,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"42076:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42044:38:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"expression":{"id":22585,"name":"appsStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22528,"src":"42084:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage storage pointer"}},"id":22586,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42096:5:44","memberName":"_apps","nodeType":"MemberAccess","referencedDeclaration":22982,"src":"42084:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App storage ref)"}},"id":22588,"indexExpression":{"id":22587,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"42102:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42084:24:44","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage","typeString":"struct X2EarnAppsDataTypes.App storage ref"}},"id":22589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42109:4:44","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":17352,"src":"42084:29:44","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},{"hexValue":"74727565","id":22590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"42115:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22579,"name":"AppAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19603,"src":"42028:8:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_string_memory_ptr_$_t_bool_$returns$__$","typeString":"function (bytes32,address,string memory,bool)"}},"id":22591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42028:92:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22592,"nodeType":"EmitStatement","src":"42023:97:44"}]}},{"assignments":[22612],"declarations":[{"constant":false,"id":22612,"mutability":"mutable","name":"appUnendorsed","nameLocation":"42243:13:44","nodeType":"VariableDeclaration","scope":22639,"src":"42238:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22611,"name":"bool","nodeType":"ElementaryTypeName","src":"42238:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":22622,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42259:14:44","subExpression":{"id":22613,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22536,"src":"42260:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":22615,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22525,"src":"42277:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42279:20:44","memberName":"_unendorsedAppsIndex","nodeType":"MemberAccess","referencedDeclaration":22883,"src":"42277:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":22618,"indexExpression":{"id":22617,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"42300:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42277:29:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":22619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42309:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"42277:33:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"42259:51:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"42238:72:44"},{"condition":{"id":22623,"name":"appUnendorsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22612,"src":"42320:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22630,"nodeType":"IfStatement","src":"42316:67:44","trueBody":{"id":22629,"nodeType":"Block","src":"42335:48:44","statements":[{"expression":{"arguments":[{"id":22625,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"42364:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":22626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"42371:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22624,"name":"setEndorsementStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20776,"src":"42343:20:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":22627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42343:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22628,"nodeType":"ExpressionStatement","src":"42343:33:44"}]}},{"expression":{"id":22637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":22631,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22525,"src":"42389:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22634,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42391:20:44","memberName":"_appGracePeriodStart","nodeType":"MemberAccess","referencedDeclaration":22896,"src":"42389:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint48_$","typeString":"mapping(bytes32 => uint48)"}},"id":22635,"indexExpression":{"id":22633,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22530,"src":"42412:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"42389:29:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":22636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42421:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"42389:33:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":22638,"nodeType":"ExpressionStatement","src":"42389:33:44"}]},"id":22640,"implemented":true,"kind":"function","modifiers":[],"name":"_updateStatusIfThresholdMet","nameLocation":"41417:27:44","nodeType":"FunctionDefinition","parameters":{"id":22537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22525,"mutability":"mutable","name":"$","nameLocation":"41500:1:44","nodeType":"VariableDeclaration","scope":22640,"src":"41450:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":22524,"nodeType":"UserDefinedTypeName","pathNode":{"id":22523,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["41450:22:44","41473:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"41450:41:44"},"referencedDeclaration":22972,"src":"41450:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":22528,"mutability":"mutable","name":"appsStorage","nameLocation":"41557:11:44","nodeType":"VariableDeclaration","scope":22640,"src":"41507:61:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"},"typeName":{"id":22527,"nodeType":"UserDefinedTypeName","pathNode":{"id":22526,"name":"X2EarnAppsStorageTypes.AppsStorageStorage","nameLocations":["41507:22:44","41530:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22986,"src":"41507:41:44"},"referencedDeclaration":22986,"src":"41507:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"}},"visibility":"internal"},{"constant":false,"id":22530,"mutability":"mutable","name":"appId","nameLocation":"41582:5:44","nodeType":"VariableDeclaration","scope":22640,"src":"41574:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"41574:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":22532,"mutability":"mutable","name":"appExists","nameLocation":"41598:9:44","nodeType":"VariableDeclaration","scope":22640,"src":"41593:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22531,"name":"bool","nodeType":"ElementaryTypeName","src":"41593:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22534,"mutability":"mutable","name":"isEligibleNow","nameLocation":"41618:13:44","nodeType":"VariableDeclaration","scope":22640,"src":"41613:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22533,"name":"bool","nodeType":"ElementaryTypeName","src":"41613:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22536,"mutability":"mutable","name":"isBlacklisted","nameLocation":"41642:13:44","nodeType":"VariableDeclaration","scope":22640,"src":"41637:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22535,"name":"bool","nodeType":"ElementaryTypeName","src":"41637:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41444:215:44"},"returnParameters":{"id":22538,"nodeType":"ParameterList","parameters":[],"src":"41668:0:44"},"scope":22803,"src":"41408:1019:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":22660,"nodeType":"Block","src":"42561:76:44","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"expression":{"id":22652,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22643,"src":"42582:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42584:31:44","memberName":"_appEndorsementScoreCheckpoints","nodeType":"MemberAccess","referencedDeclaration":22971,"src":"42582:33:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(bytes32 => struct Checkpoints.Trace208 storage ref)"}},"id":22655,"indexExpression":{"id":22654,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22645,"src":"42616:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42582:40:44","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage","typeString":"struct Checkpoints.Trace208 storage ref"}},"id":22656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42623:6:44","memberName":"latest","nodeType":"MemberAccess","referencedDeclaration":5608,"src":"42582:47:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Trace208_$5383_storage_ptr_$returns$_t_uint208_$attached_to$_t_struct$_Trace208_$5383_storage_ptr_$","typeString":"function (struct Checkpoints.Trace208 storage pointer) view returns (uint208)"}},"id":22657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42582:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint208","typeString":"uint208"}],"id":22651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42574:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22650,"name":"uint256","nodeType":"ElementaryTypeName","src":"42574:7:44","typeDescriptions":{}}},"id":22658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42574:58:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22649,"id":22659,"nodeType":"Return","src":"42567:65:44"}]},"id":22661,"implemented":true,"kind":"function","modifiers":[],"name":"_getScore","nameLocation":"42440:9:44","nodeType":"FunctionDefinition","parameters":{"id":22646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22643,"mutability":"mutable","name":"$","nameLocation":"42505:1:44","nodeType":"VariableDeclaration","scope":22661,"src":"42455:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":22642,"nodeType":"UserDefinedTypeName","pathNode":{"id":22641,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["42455:22:44","42478:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"42455:41:44"},"referencedDeclaration":22972,"src":"42455:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":22645,"mutability":"mutable","name":"appId","nameLocation":"42520:5:44","nodeType":"VariableDeclaration","scope":22661,"src":"42512:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"42512:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"42449:80:44"},"returnParameters":{"id":22649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22661,"src":"42552:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22647,"name":"uint256","nodeType":"ElementaryTypeName","src":"42552:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42551:9:44"},"scope":22803,"src":"42431:206:44","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":22688,"nodeType":"Block","src":"42754:119:44","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":22679,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"42824:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":22680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42830:6:44","memberName":"number","nodeType":"MemberAccess","src":"42824:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22677,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"42806:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4849_$","typeString":"type(library SafeCast)"}},"id":22678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42815:8:44","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":3849,"src":"42806:17:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":22681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42806:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[{"id":22684,"name":"newScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22668,"src":"42858:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22682,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"42839:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4849_$","typeString":"type(library SafeCast)"}},"id":22683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42848:9:44","memberName":"toUint208","nodeType":"MemberAccess","referencedDeclaration":3289,"src":"42839:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint208_$","typeString":"function (uint256) pure returns (uint208)"}},"id":22685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42839:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint208","typeString":"uint208"}],"expression":{"baseExpression":{"expression":{"id":22671,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22664,"src":"42760:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42762:31:44","memberName":"_appEndorsementScoreCheckpoints","nodeType":"MemberAccess","referencedDeclaration":22971,"src":"42760:33:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(bytes32 => struct Checkpoints.Trace208 storage ref)"}},"id":22675,"indexExpression":{"id":22673,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22666,"src":"42794:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42760:40:44","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage","typeString":"struct Checkpoints.Trace208 storage ref"}},"id":22676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42801:4:44","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":5411,"src":"42760:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Trace208_$5383_storage_ptr_$_t_uint48_$_t_uint208_$returns$_t_uint208_$_t_uint208_$attached_to$_t_struct$_Trace208_$5383_storage_ptr_$","typeString":"function (struct Checkpoints.Trace208 storage pointer,uint48,uint208) returns (uint208,uint208)"}},"id":22686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42760:108:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint208_$_t_uint208_$","typeString":"tuple(uint208,uint208)"}},"id":22687,"nodeType":"ExpressionStatement","src":"42760:108:44"}]},"id":22689,"implemented":true,"kind":"function","modifiers":[],"name":"_setScore","nameLocation":"42650:9:44","nodeType":"FunctionDefinition","parameters":{"id":22669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22664,"mutability":"mutable","name":"$","nameLocation":"42710:1:44","nodeType":"VariableDeclaration","scope":22689,"src":"42660:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":22663,"nodeType":"UserDefinedTypeName","pathNode":{"id":22662,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["42660:22:44","42683:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"42660:41:44"},"referencedDeclaration":22972,"src":"42660:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":22666,"mutability":"mutable","name":"appId","nameLocation":"42721:5:44","nodeType":"VariableDeclaration","scope":22689,"src":"42713:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"42713:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":22668,"mutability":"mutable","name":"newScore","nameLocation":"42736:8:44","nodeType":"VariableDeclaration","scope":22689,"src":"42728:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22667,"name":"uint256","nodeType":"ElementaryTypeName","src":"42728:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"42659:86:44"},"returnParameters":{"id":22670,"nodeType":"ParameterList","parameters":[],"src":"42754:0:44"},"scope":22803,"src":"42641:232:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":22801,"nodeType":"Block","src":"43108:726:44","statements":[{"assignments":[22706],"declarations":[{"constant":false,"id":22706,"mutability":"mutable","name":"appUnendorsed","nameLocation":"43119:13:44","nodeType":"VariableDeclaration","scope":22801,"src":"43114:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22705,"name":"bool","nodeType":"ElementaryTypeName","src":"43114:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":22716,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"43135:14:44","subExpression":{"id":22707,"name":"isBlacklisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22696,"src":"43136:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":22709,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22692,"src":"43153:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22710,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43155:20:44","memberName":"_unendorsedAppsIndex","nodeType":"MemberAccess","referencedDeclaration":22883,"src":"43153:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":22712,"indexExpression":{"id":22711,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43176:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"43153:29:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":22713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43185:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"43153:33:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"43135:51:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"43114:72:44"},{"condition":{"id":22718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"43197:14:44","subExpression":{"id":22717,"name":"appUnendorsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22706,"src":"43198:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22730,"nodeType":"IfStatement","src":"43193:123:44","trueBody":{"id":22729,"nodeType":"Block","src":"43213:103:44","statements":[{"expression":{"arguments":[{"id":22720,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43242:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":22721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43249:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22719,"name":"updateUnendorsedApps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20661,"src":"43221:20:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":22722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43221:34:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22723,"nodeType":"ExpressionStatement","src":"43221:34:44"},{"eventCall":{"arguments":[{"id":22725,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43296:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":22726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43303:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22724,"name":"AppEndorsementStatusUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19636,"src":"43268:27:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":22727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43268:41:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22728,"nodeType":"EmitStatement","src":"43263:46:44"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":22736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":22731,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22692,"src":"43326:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43328:20:44","memberName":"_appGracePeriodStart","nodeType":"MemberAccess","referencedDeclaration":22896,"src":"43326:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint48_$","typeString":"mapping(bytes32 => uint48)"}},"id":22734,"indexExpression":{"id":22733,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43349:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"43326:29:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":22735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43359:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"43326:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":22737,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22698,"src":"43364:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"43326:51:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":22767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22759,"name":"clock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22700,"src":"43551:5:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":22766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":22760,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22692,"src":"43559:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43561:20:44","memberName":"_appGracePeriodStart","nodeType":"MemberAccess","referencedDeclaration":22896,"src":"43559:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint48_$","typeString":"mapping(bytes32 => uint48)"}},"id":22763,"indexExpression":{"id":22762,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43582:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"43559:29:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":22764,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22692,"src":"43591:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43593:20:44","memberName":"_gracePeriodDuration","nodeType":"MemberAccess","referencedDeclaration":22902,"src":"43591:22:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"43559:54:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"43551:62:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":22768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"43550:64:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":22769,"name":"isEligibleNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22698,"src":"43618:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"43550:81:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22797,"nodeType":"IfStatement","src":"43546:266:44","trueBody":{"id":22796,"nodeType":"Block","src":"43633:179:44","statements":[{"expression":{"id":22781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":22771,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22692,"src":"43641:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43643:12:44","memberName":"_appSecurity","nodeType":"MemberAccess","referencedDeclaration":22913,"src":"43641:14:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_APP_SECURITY_$19455_$","typeString":"mapping(bytes32 => enum PassportTypes.APP_SECURITY)"}},"id":22775,"indexExpression":{"id":22773,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43656:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43641:21:44","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22779,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43697:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":22776,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22692,"src":"43665:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22777,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43667:17:44","memberName":"_veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":22919,"src":"43665:19:44","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":22778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43685:11:44","memberName":"appSecurity","nodeType":"MemberAccess","referencedDeclaration":15097,"src":"43665:31:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_enum$_APP_SECURITY_$19455_$","typeString":"function (bytes32) view external returns (enum PassportTypes.APP_SECURITY)"}},"id":22780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43665:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}},"src":"43641:62:44","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}},"id":22782,"nodeType":"ExpressionStatement","src":"43641:62:44"},{"expression":{"arguments":[{"id":22788,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43746:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":22789,"name":"PassportTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19456,"src":"43753:13:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PassportTypes_$19456_$","typeString":"type(library PassportTypes)"}},"id":22790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43767:12:44","memberName":"APP_SECURITY","nodeType":"MemberAccess","referencedDeclaration":19455,"src":"43753:26:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_APP_SECURITY_$19455_$","typeString":"type(enum PassportTypes.APP_SECURITY)"}},"id":22791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"43780:4:44","memberName":"NONE","nodeType":"MemberAccess","referencedDeclaration":19451,"src":"43753:31:44","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}],"expression":{"expression":{"id":22783,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22692,"src":"43711:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43713:17:44","memberName":"_veBetterPassport","nodeType":"MemberAccess","referencedDeclaration":22919,"src":"43711:19:44","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"id":22787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43731:14:44","memberName":"setAppSecurity","nodeType":"MemberAccess","referencedDeclaration":15239,"src":"43711:34:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_enum$_APP_SECURITY_$19455_$returns$__$","typeString":"function (bytes32,enum PassportTypes.APP_SECURITY) external"}},"id":22792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43711:74:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22793,"nodeType":"ExpressionStatement","src":"43711:74:44"},{"expression":{"hexValue":"66616c7365","id":22794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43800:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":22704,"id":22795,"nodeType":"Return","src":"43793:12:44"}]}},"id":22798,"nodeType":"IfStatement","src":"43322:490:44","trueBody":{"id":22758,"nodeType":"Block","src":"43379:161:44","statements":[{"expression":{"id":22745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":22739,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22692,"src":"43387:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22742,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43389:20:44","memberName":"_appGracePeriodStart","nodeType":"MemberAccess","referencedDeclaration":22896,"src":"43387:22:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint48_$","typeString":"mapping(bytes32 => uint48)"}},"id":22743,"indexExpression":{"id":22741,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43410:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43387:29:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22744,"name":"clock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22700,"src":"43419:5:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"43387:37:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":22746,"nodeType":"ExpressionStatement","src":"43387:37:44"},{"eventCall":{"arguments":[{"id":22748,"name":"appId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22694,"src":"43469:5:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":22749,"name":"clock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22700,"src":"43476:5:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":22753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22750,"name":"clock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22700,"src":"43483:5:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":22751,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22692,"src":"43491:1:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage storage pointer"}},"id":22752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43493:20:44","memberName":"_gracePeriodDuration","nodeType":"MemberAccess","referencedDeclaration":22902,"src":"43491:22:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"43483:30:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":22747,"name":"AppUnendorsedGracePeriodStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19644,"src":"43437:31:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (bytes32,uint48,uint48)"}},"id":22754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43437:77:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22755,"nodeType":"EmitStatement","src":"43432:82:44"},{"expression":{"hexValue":"74727565","id":22756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43529:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":22704,"id":22757,"nodeType":"Return","src":"43522:11:44"}]}},{"expression":{"hexValue":"74727565","id":22799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43825:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":22704,"id":22800,"nodeType":"Return","src":"43818:11:44"}]},"id":22802,"implemented":true,"kind":"function","modifiers":[],"name":"_updateStatusIfThresholdNotMetWithVote","nameLocation":"42886:38:44","nodeType":"FunctionDefinition","parameters":{"id":22701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22692,"mutability":"mutable","name":"$","nameLocation":"42980:1:44","nodeType":"VariableDeclaration","scope":22802,"src":"42930:51:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":22691,"nodeType":"UserDefinedTypeName","pathNode":{"id":22690,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["42930:22:44","42953:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"42930:41:44"},"referencedDeclaration":22972,"src":"42930:41:44","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"},{"constant":false,"id":22694,"mutability":"mutable","name":"appId","nameLocation":"42995:5:44","nodeType":"VariableDeclaration","scope":22802,"src":"42987:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22693,"name":"bytes32","nodeType":"ElementaryTypeName","src":"42987:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":22696,"mutability":"mutable","name":"isBlacklisted","nameLocation":"43011:13:44","nodeType":"VariableDeclaration","scope":22802,"src":"43006:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22695,"name":"bool","nodeType":"ElementaryTypeName","src":"43006:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22698,"mutability":"mutable","name":"isEligibleNow","nameLocation":"43035:13:44","nodeType":"VariableDeclaration","scope":22802,"src":"43030:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22697,"name":"bool","nodeType":"ElementaryTypeName","src":"43030:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22700,"mutability":"mutable","name":"clock","nameLocation":"43061:5:44","nodeType":"VariableDeclaration","scope":22802,"src":"43054:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":22699,"name":"uint48","nodeType":"ElementaryTypeName","src":"43054:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"42924:146:44"},"returnParameters":{"id":22704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22703,"mutability":"mutable","name":"stillEligible","nameLocation":"43093:13:44","nodeType":"VariableDeclaration","scope":22802,"src":"43088:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22702,"name":"bool","nodeType":"ElementaryTypeName","src":"43088:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"43087:20:44"},"scope":22803,"src":"42877:957:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":22804,"src":"1998:41838:44","usedErrors":[3104,4857,19511,19515,19517,19521,19523,19525,19529,19533,19535,19541,19549,19557,19565,19567,19569,19575,19581,19587,19593],"usedEvents":[19603,19613,19621,19625,19630,19636,19644,19650,19656,19662,19668,19674]}],"src":"1195:42642:44"},"id":44},"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol":{"ast":{"absolutePath":"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol","exportedSymbols":{"Checkpoints":[6421],"INodeManagementV3":[17839],"IStargateNFT":[18909],"IVeBetterPassport":[15484],"IX2EarnCreator":[16494],"IX2EarnRewardsPool":[16819],"IXAllocationVotingGovernor":[17346],"PassportTypes":[19456],"X2EarnAppsDataTypes":[17369],"X2EarnAppsStorageTypes":[23070]},"id":23071,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":22805,"literals":["solidity","0.8",".20"],"nodeType":"PragmaDirective","src":"1195:23:45"},{"absolutePath":"@openzeppelin/contracts/utils/structs/Checkpoints.sol","file":"@openzeppelin/contracts/utils/structs/Checkpoints.sol","id":22807,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23071,"sourceUnit":6422,"src":"1220:84:45","symbolAliases":[{"foreign":{"id":22806,"name":"Checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"1229:11:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/ve-better-passport/libraries/PassportTypes.sol","file":"../../ve-better-passport/libraries/PassportTypes.sol","id":22809,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23071,"sourceUnit":19457,"src":"1305:85:45","symbolAliases":[{"foreign":{"id":22808,"name":"PassportTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19456,"src":"1314:13:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol","file":"../../mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol","id":22811,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23071,"sourceUnit":17840,"src":"1391:106:45","symbolAliases":[{"foreign":{"id":22810,"name":"INodeManagementV3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17839,"src":"1400:17:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IVeBetterPassport.sol","file":"../../interfaces/IVeBetterPassport.sol","id":22813,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23071,"sourceUnit":15485,"src":"1498:75:45","symbolAliases":[{"foreign":{"id":22812,"name":"IVeBetterPassport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"1507:17:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IXAllocationVotingGovernor.sol","file":"../../interfaces/IXAllocationVotingGovernor.sol","id":22815,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23071,"sourceUnit":17347,"src":"1574:93:45","symbolAliases":[{"foreign":{"id":22814,"name":"IXAllocationVotingGovernor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17346,"src":"1583:26:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/mocks/Stargate/interfaces/IStargateNFT.sol","file":"../../mocks/Stargate/interfaces/IStargateNFT.sol","id":22817,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23071,"sourceUnit":18910,"src":"1668:80:45","symbolAliases":[{"foreign":{"id":22816,"name":"IStargateNFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18909,"src":"1677:12:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/X2EarnAppsDataTypes.sol","file":"../../libraries/X2EarnAppsDataTypes.sol","id":22819,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23071,"sourceUnit":17370,"src":"1749:78:45","symbolAliases":[{"foreign":{"id":22818,"name":"X2EarnAppsDataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17369,"src":"1758:19:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IX2EarnCreator.sol","file":"../../interfaces/IX2EarnCreator.sol","id":22821,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23071,"sourceUnit":16495,"src":"1828:69:45","symbolAliases":[{"foreign":{"id":22820,"name":"IX2EarnCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16494,"src":"1837:14:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IX2EarnRewardsPool.sol","file":"../../interfaces/IX2EarnRewardsPool.sol","id":22823,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23071,"sourceUnit":16820,"src":"1898:77:45","symbolAliases":[{"foreign":{"id":22822,"name":"IX2EarnRewardsPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16819,"src":"1907:18:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"X2EarnAppsStorageTypes","contractDependencies":[],"contractKind":"library","documentation":{"id":22824,"nodeType":"StructuredDocumentation","src":"1977:135:45","text":" @title X2EarnAppsStorageTypes\n @notice This library defines the primary storage types used within the X2EarnApps contract."},"fullyImplemented":true,"id":23070,"linearizedBaseContracts":[23070],"name":"X2EarnAppsStorageTypes","nameLocation":"2121:22:45","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":22827,"mutability":"constant","name":"VoteEligibilityStorageLocation","nameLocation":"2173:30:45","nodeType":"VariableDeclaration","scope":23070,"src":"2148:128:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2148:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862356238643631386166316666623864356263633462643233663434356261333465643038643761313664316531623534313163666265373931336535393030","id":22826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2210:66:45","typeDescriptions":{"typeIdentifier":"t_rational_82195203092690180135568947753121709022914817764835557719341530417656271624448_by_1","typeString":"int_const 8219...(69 digits omitted)...4448"},"value":"0xb5b8d618af1ffb8d5bcc4bd23f445ba34ed08d7a16d1e1b5411cfbe7913e5900"},"visibility":"private"},{"constant":true,"id":22830,"mutability":"constant","name":"EndorsementStorageLocation","nameLocation":"2305:26:45","nodeType":"VariableDeclaration","scope":23070,"src":"2280:124:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22828,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2280:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307863316137626364633063373765386337376164653435343164313737373930316162393663613539386431363464383961666135633864666266633434333030","id":22829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2338:66:45","typeDescriptions":{"typeIdentifier":"t_rational_87592746697202941860609992291556237951102788875373307740699708277178318996224_by_1","typeString":"int_const 8759...(69 digits omitted)...6224"},"value":"0xc1a7bcdc0c77e8c77ade4541d1777901ab96ca598d164d89afa5c8dfbfc44300"},"visibility":"private"},{"constant":true,"id":22833,"mutability":"constant","name":"SettingsStorageLocation","nameLocation":"2433:23:45","nodeType":"VariableDeclaration","scope":23070,"src":"2408:117:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22831,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2408:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307838336239613765353166333934656661393331303763333838383731363133383930386262626536313164666338366166613336333961383236343431313030","id":22832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2459:66:45","typeDescriptions":{"typeIdentifier":"t_rational_59581008640147855175243384111363715668609500011613031740909751673979561840896_by_1","typeString":"int_const 5958...(69 digits omitted)...0896"},"value":"0x83b9a7e51f394efa93107c3888716138908bbbe611dfc86afa3639a826441100"},"visibility":"private"},{"constant":true,"id":22836,"mutability":"constant","name":"AppsStorageStorageLocation","nameLocation":"2554:26:45","nodeType":"VariableDeclaration","scope":23070,"src":"2529:124:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2529:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862363930393035386264353237313430623864353561343433343463356534326631663134386631623362313664663736343138383264663864643732393030","id":22835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2587:66:45","typeDescriptions":{"typeIdentifier":"t_rational_82576360663369752536894691862557284507760576222780413367971896591492870252800_by_1","typeString":"int_const 8257...(69 digits omitted)...2800"},"value":"0xb6909058bd527140b8d55a44344c5e42f1f148f1b3b16df7641882df8dd72900"},"visibility":"private"},{"constant":true,"id":22839,"mutability":"constant","name":"AdministrationStorageLocation","nameLocation":"2682:29:45","nodeType":"VariableDeclaration","scope":23070,"src":"2657:127:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22837,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2657:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835383330663065393563303137313264393136633334643965326661343265396637343962333235623637626365373338326437306262393963363233353030","id":22838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2718:66:45","typeDescriptions":{"typeIdentifier":"t_rational_39890002044916931885761505485275529359026139072415496233615764266644775515392_by_1","typeString":"int_const 3989...(69 digits omitted)...5392"},"value":"0x5830f0e95c01712d916c34d9e2fa42e9f749b325b67bce7382d70bb99c623500"},"visibility":"private"},{"canonicalName":"X2EarnAppsStorageTypes.VoteEligibilityStorage","documentation":{"id":22840,"nodeType":"StructuredDocumentation","src":"2789:76:45","text":"@custom:storage-location erc7201:b3tr.storage.X2EarnApps.VoteEligibility"},"id":22857,"members":[{"constant":false,"id":22843,"mutability":"mutable","name":"_eligibleApps","nameLocation":"2914:13:45","nodeType":"VariableDeclaration","scope":22857,"src":"2904:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":22841,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2904:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22842,"nodeType":"ArrayTypeName","src":"2904:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":22847,"mutability":"mutable","name":"_eligibleAppIndex","nameLocation":"3049:17:45","nodeType":"VariableDeclaration","scope":22857,"src":"3009:57:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":22846,"keyName":"appId","keyNameLocation":"3025:5:45","keyType":{"id":22844,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3017:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"3009:39:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"index","valueNameLocation":"3042:5:45","valueType":{"id":22845,"name":"uint256","nodeType":"ElementaryTypeName","src":"3034:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":22852,"mutability":"mutable","name":"_isAppEligibleCheckpoints","nameLocation":"3211:25:45","nodeType":"VariableDeclaration","scope":22857,"src":"3164:72:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(bytes32 => struct Checkpoints.Trace208)"},"typeName":{"id":22851,"keyName":"appId","keyNameLocation":"3180:5:45","keyType":{"id":22848,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3172:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"3164:46:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(bytes32 => struct Checkpoints.Trace208)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22850,"nodeType":"UserDefinedTypeName","pathNode":{"id":22849,"name":"Checkpoints.Trace208","nameLocations":["3189:11:45","3201:8:45"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"3189:20:45"},"referencedDeclaration":5383,"src":"3189:20:45","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}}},"visibility":"internal"},{"constant":false,"id":22856,"mutability":"mutable","name":"_blackList","nameLocation":"3335:10:45","nodeType":"VariableDeclaration","scope":22857,"src":"3310:35:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"typeName":{"id":22855,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":22853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3318:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"3310:24:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22854,"name":"bool","nodeType":"ElementaryTypeName","src":"3329:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"VoteEligibilityStorage","nameLocation":"2875:22:45","nodeType":"StructDefinition","scope":23070,"src":"2868:523:45","visibility":"public"},{"canonicalName":"X2EarnAppsStorageTypes.Endorsement","documentation":{"id":22858,"nodeType":"StructuredDocumentation","src":"3395:66:45","text":"@notice Represents an active endorsement from a node to an app"},"id":22865,"members":[{"constant":false,"id":22860,"mutability":"mutable","name":"appId","nameLocation":"3497:5:45","nodeType":"VariableDeclaration","scope":22865,"src":"3489:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22859,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3489:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":22862,"mutability":"mutable","name":"points","nameLocation":"3516:6:45","nodeType":"VariableDeclaration","scope":22865,"src":"3508:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22861,"name":"uint256","nodeType":"ElementaryTypeName","src":"3508:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22864,"mutability":"mutable","name":"endorsedAtRound","nameLocation":"3536:15:45","nodeType":"VariableDeclaration","scope":22865,"src":"3528:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22863,"name":"uint256","nodeType":"ElementaryTypeName","src":"3528:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Endorsement","nameLocation":"3471:11:45","nodeType":"StructDefinition","scope":23070,"src":"3464:170:45","visibility":"public"},{"canonicalName":"X2EarnAppsStorageTypes.NodePointsInfo","documentation":{"id":22866,"nodeType":"StructuredDocumentation","src":"3638:61:45","text":"@notice Summary of a node's endorsement points allocation"},"id":22875,"members":[{"constant":false,"id":22868,"mutability":"mutable","name":"totalPoints","nameLocation":"3738:11:45","nodeType":"VariableDeclaration","scope":22875,"src":"3730:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22867,"name":"uint256","nodeType":"ElementaryTypeName","src":"3730:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22870,"mutability":"mutable","name":"usedPoints","nameLocation":"3811:10:45","nodeType":"VariableDeclaration","scope":22875,"src":"3803:18:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22869,"name":"uint256","nodeType":"ElementaryTypeName","src":"3803:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22872,"mutability":"mutable","name":"availablePoints","nameLocation":"3873:15:45","nodeType":"VariableDeclaration","scope":22875,"src":"3865:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22871,"name":"uint256","nodeType":"ElementaryTypeName","src":"3865:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22874,"mutability":"mutable","name":"lockedPoints","nameLocation":"3943:12:45","nodeType":"VariableDeclaration","scope":22875,"src":"3935:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22873,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"NodePointsInfo","nameLocation":"3709:14:45","nodeType":"StructDefinition","scope":23070,"src":"3702:310:45","visibility":"public"},{"canonicalName":"X2EarnAppsStorageTypes.EndorsementStorage","documentation":{"id":22876,"nodeType":"StructuredDocumentation","src":"4016:71:45","text":"@custom:storage-location erc7201:b3tr.storage.X2EarnApps.Endorsment"},"id":22972,"members":[{"constant":false,"id":22879,"mutability":"mutable","name":"_unendorsedApps","nameLocation":"4132:15:45","nodeType":"VariableDeclaration","scope":22972,"src":"4122:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":22877,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4122:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22878,"nodeType":"ArrayTypeName","src":"4122:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":22883,"mutability":"mutable","name":"_unendorsedAppsIndex","nameLocation":"4217:20:45","nodeType":"VariableDeclaration","scope":22972,"src":"4189:48:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":22882,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":22880,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4197:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"4189:27:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22881,"name":"uint256","nodeType":"ElementaryTypeName","src":"4208:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":22888,"mutability":"mutable","name":"_appEndorsers_DEPRECATED","nameLocation":"4367:24:45","nodeType":"VariableDeclaration","scope":22972,"src":"4337:54:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[])"},"typeName":{"id":22887,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":22884,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4345:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"4337:29:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":22885,"name":"uint256","nodeType":"ElementaryTypeName","src":"4356:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22886,"nodeType":"ArrayTypeName","src":"4356:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"visibility":"internal"},{"constant":false,"id":22892,"mutability":"mutable","name":"_nodeEnodorsmentScore","nameLocation":"4473:21:45","nodeType":"VariableDeclaration","scope":22972,"src":"4447:47:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"},"typeName":{"id":22891,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":22889,"name":"uint8","nodeType":"ElementaryTypeName","src":"4455:5:45","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Mapping","src":"4447:25:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint8_$_t_uint256_$","typeString":"mapping(uint8 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22890,"name":"uint256","nodeType":"ElementaryTypeName","src":"4464:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":22896,"mutability":"mutable","name":"_appGracePeriodStart","nameLocation":"4572:20:45","nodeType":"VariableDeclaration","scope":22972,"src":"4545:47:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint48_$","typeString":"mapping(bytes32 => uint48)"},"typeName":{"id":22895,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":22893,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4553:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"4545:26:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint48_$","typeString":"mapping(bytes32 => uint48)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22894,"name":"uint48","nodeType":"ElementaryTypeName","src":"4564:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}},"visibility":"internal"},{"constant":false,"id":22900,"mutability":"mutable","name":"_nodeToEndorsedApp_DEPRECATED","nameLocation":"4680:29:45","nodeType":"VariableDeclaration","scope":22972,"src":"4652:57:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":22899,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":22897,"name":"uint256","nodeType":"ElementaryTypeName","src":"4660:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"4652:27:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4671:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"},{"constant":false,"id":22902,"mutability":"mutable","name":"_gracePeriodDuration","nameLocation":"4772:20:45","nodeType":"VariableDeclaration","scope":22972,"src":"4765:27:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":22901,"name":"uint48","nodeType":"ElementaryTypeName","src":"4765:6:45","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":22904,"mutability":"mutable","name":"_endorsementScoreThreshold","nameLocation":"4865:26:45","nodeType":"VariableDeclaration","scope":22972,"src":"4857:34:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22903,"name":"uint256","nodeType":"ElementaryTypeName","src":"4857:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22908,"mutability":"mutable","name":"_appScores_DEPRECATED","nameLocation":"4997:21:45","nodeType":"VariableDeclaration","scope":22972,"src":"4969:49:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":22907,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":22905,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4977:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"4969:27:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22906,"name":"uint256","nodeType":"ElementaryTypeName","src":"4988:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":22913,"mutability":"mutable","name":"_appSecurity","nameLocation":"5133:12:45","nodeType":"VariableDeclaration","scope":22972,"src":"5086:59:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_APP_SECURITY_$19455_$","typeString":"mapping(bytes32 => enum PassportTypes.APP_SECURITY)"},"typeName":{"id":22912,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":22909,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5094:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"5086:46:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_APP_SECURITY_$19455_$","typeString":"mapping(bytes32 => enum PassportTypes.APP_SECURITY)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22911,"nodeType":"UserDefinedTypeName","pathNode":{"id":22910,"name":"PassportTypes.APP_SECURITY","nameLocations":["5105:13:45","5119:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":19455,"src":"5105:26:45"},"referencedDeclaration":19455,"src":"5105:26:45","typeDescriptions":{"typeIdentifier":"t_enum$_APP_SECURITY_$19455","typeString":"enum PassportTypes.APP_SECURITY"}}},"visibility":"internal"},{"constant":false,"id":22916,"mutability":"mutable","name":"_nodeManagementContract","nameLocation":"5203:23:45","nodeType":"VariableDeclaration","scope":22972,"src":"5185:41:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_INodeManagementV3_$17839","typeString":"contract INodeManagementV3"},"typeName":{"id":22915,"nodeType":"UserDefinedTypeName","pathNode":{"id":22914,"name":"INodeManagementV3","nameLocations":["5185:17:45"],"nodeType":"IdentifierPath","referencedDeclaration":17839,"src":"5185:17:45"},"referencedDeclaration":17839,"src":"5185:17:45","typeDescriptions":{"typeIdentifier":"t_contract$_INodeManagementV3_$17839","typeString":"contract INodeManagementV3"}},"visibility":"internal"},{"constant":false,"id":22919,"mutability":"mutable","name":"_veBetterPassport","nameLocation":"5280:17:45","nodeType":"VariableDeclaration","scope":22972,"src":"5262:35:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"},"typeName":{"id":22918,"nodeType":"UserDefinedTypeName","pathNode":{"id":22917,"name":"IVeBetterPassport","nameLocations":["5262:17:45"],"nodeType":"IdentifierPath","referencedDeclaration":15484,"src":"5262:17:45"},"referencedDeclaration":15484,"src":"5262:17:45","typeDescriptions":{"typeIdentifier":"t_contract$_IVeBetterPassport_$15484","typeString":"contract IVeBetterPassport"}},"visibility":"internal"},{"constant":false,"id":22923,"mutability":"mutable","name":"_endorsementRound_DEPRECATED","nameLocation":"5364:28:45","nodeType":"VariableDeclaration","scope":22972,"src":"5336:56:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":22922,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":22920,"name":"uint256","nodeType":"ElementaryTypeName","src":"5344:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"5336:27:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22921,"name":"uint256","nodeType":"ElementaryTypeName","src":"5355:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":22925,"mutability":"mutable","name":"_cooldownPeriod","nameLocation":"5467:15:45","nodeType":"VariableDeclaration","scope":22972,"src":"5459:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22924,"name":"uint256","nodeType":"ElementaryTypeName","src":"5459:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22928,"mutability":"mutable","name":"_xAllocationVotingGovernor","nameLocation":"5562:26:45","nodeType":"VariableDeclaration","scope":22972,"src":"5535:53:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"},"typeName":{"id":22927,"nodeType":"UserDefinedTypeName","pathNode":{"id":22926,"name":"IXAllocationVotingGovernor","nameLocations":["5535:26:45"],"nodeType":"IdentifierPath","referencedDeclaration":17346,"src":"5535:26:45"},"referencedDeclaration":17346,"src":"5535:26:45","typeDescriptions":{"typeIdentifier":"t_contract$_IXAllocationVotingGovernor_$17346","typeString":"contract IXAllocationVotingGovernor"}},"visibility":"internal"},{"constant":false,"id":22931,"mutability":"mutable","name":"_stargateNFT","nameLocation":"5683:12:45","nodeType":"VariableDeclaration","scope":22972,"src":"5670:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"},"typeName":{"id":22930,"nodeType":"UserDefinedTypeName","pathNode":{"id":22929,"name":"IStargateNFT","nameLocations":["5670:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":18909,"src":"5670:12:45"},"referencedDeclaration":18909,"src":"5670:12:45","typeDescriptions":{"typeIdentifier":"t_contract$_IStargateNFT_$18909","typeString":"contract IStargateNFT"}},"visibility":"internal"},{"constant":false,"id":22937,"mutability":"mutable","name":"_activeEndorsements","nameLocation":"5976:19:45","nodeType":"VariableDeclaration","scope":22972,"src":"5935:60:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement[])"},"typeName":{"id":22936,"keyName":"nodeId","keyNameLocation":"5951:6:45","keyType":{"id":22932,"name":"uint256","nodeType":"ElementaryTypeName","src":"5943:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"5935:40:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct X2EarnAppsStorageTypes.Endorsement[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":22934,"nodeType":"UserDefinedTypeName","pathNode":{"id":22933,"name":"Endorsement","nameLocations":["5961:11:45"],"nodeType":"IdentifierPath","referencedDeclaration":22865,"src":"5961:11:45"},"referencedDeclaration":22865,"src":"5961:11:45","typeDescriptions":{"typeIdentifier":"t_struct$_Endorsement_$22865_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement"}},"id":22935,"nodeType":"ArrayTypeName","src":"5961:13:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Endorsement_$22865_storage_$dyn_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.Endorsement[]"}}},"visibility":"internal"},{"constant":false,"id":22943,"mutability":"mutable","name":"_activeEndorsementsAppIndex","nameLocation":"6105:27:45","nodeType":"VariableDeclaration","scope":22972,"src":"6038:94:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"},"typeName":{"id":22942,"keyName":"nodeId","keyNameLocation":"6054:6:45","keyType":{"id":22938,"name":"uint256","nodeType":"ElementaryTypeName","src":"6046:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"6038:66:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22941,"keyName":"appId","keyNameLocation":"6080:5:45","keyType":{"id":22939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6072:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"6064:39:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"index","valueNameLocation":"6097:5:45","valueType":{"id":22940,"name":"uint256","nodeType":"ElementaryTypeName","src":"6089:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":22947,"mutability":"mutable","name":"_appEndorsementScore_DEPRECATED","nameLocation":"6210:31:45","nodeType":"VariableDeclaration","scope":22972,"src":"6170:71:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":22946,"keyName":"appId","keyNameLocation":"6186:5:45","keyType":{"id":22944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6178:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"6170:39:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"score","valueNameLocation":"6203:5:45","valueType":{"id":22945,"name":"uint256","nodeType":"ElementaryTypeName","src":"6195:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":22952,"mutability":"mutable","name":"_appEndorserNodes","nameLocation":"6345:17:45","nodeType":"VariableDeclaration","scope":22972,"src":"6309:53:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[])"},"typeName":{"id":22951,"keyName":"appId","keyNameLocation":"6325:5:45","keyType":{"id":22948,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6317:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"6309:35:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(bytes32 => uint256[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":22949,"name":"uint256","nodeType":"ElementaryTypeName","src":"6334:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22950,"nodeType":"ArrayTypeName","src":"6334:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"visibility":"internal"},{"constant":false,"id":22958,"mutability":"mutable","name":"_appEndorserNodesIndex","nameLocation":"6480:22:45","nodeType":"VariableDeclaration","scope":22972,"src":"6413:89:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(uint256 => uint256))"},"typeName":{"id":22957,"keyName":"appId","keyNameLocation":"6429:5:45","keyType":{"id":22953,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6421:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"6413:66:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(uint256 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22956,"keyName":"nodeId","keyNameLocation":"6454:6:45","keyType":{"id":22954,"name":"uint256","nodeType":"ElementaryTypeName","src":"6446:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"6438:40:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"index","valueNameLocation":"6472:5:45","valueType":{"id":22955,"name":"uint256","nodeType":"ElementaryTypeName","src":"6464:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":22960,"mutability":"mutable","name":"_maxPointsPerNodePerApp","nameLocation":"6542:23:45","nodeType":"VariableDeclaration","scope":22972,"src":"6534:31:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22959,"name":"uint256","nodeType":"ElementaryTypeName","src":"6534:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22962,"mutability":"mutable","name":"_maxPointsPerApp","nameLocation":"6642:16:45","nodeType":"VariableDeclaration","scope":22972,"src":"6634:24:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22961,"name":"uint256","nodeType":"ElementaryTypeName","src":"6634:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22964,"mutability":"mutable","name":"_endorsementsPaused","nameLocation":"6722:19:45","nodeType":"VariableDeclaration","scope":22972,"src":"6717:24:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22963,"name":"bool","nodeType":"ElementaryTypeName","src":"6717:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22966,"mutability":"mutable","name":"_migrationCompleted","nameLocation":"6791:19:45","nodeType":"VariableDeclaration","scope":22972,"src":"6786:24:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22965,"name":"bool","nodeType":"ElementaryTypeName","src":"6786:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22971,"mutability":"mutable","name":"_appEndorsementScoreCheckpoints","nameLocation":"6890:31:45","nodeType":"VariableDeclaration","scope":22972,"src":"6843:78:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(bytes32 => struct Checkpoints.Trace208)"},"typeName":{"id":22970,"keyName":"appId","keyNameLocation":"6859:5:45","keyType":{"id":22967,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6851:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"6843:46:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Trace208_$5383_storage_$","typeString":"mapping(bytes32 => struct Checkpoints.Trace208)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22969,"nodeType":"UserDefinedTypeName","pathNode":{"id":22968,"name":"Checkpoints.Trace208","nameLocations":["6868:11:45","6880:8:45"],"nodeType":"IdentifierPath","referencedDeclaration":5383,"src":"6868:20:45"},"referencedDeclaration":5383,"src":"6868:20:45","typeDescriptions":{"typeIdentifier":"t_struct$_Trace208_$5383_storage_ptr","typeString":"struct Checkpoints.Trace208"}}},"visibility":"internal"}],"name":"EndorsementStorage","nameLocation":"4097:18:45","nodeType":"StructDefinition","scope":23070,"src":"4090:2894:45","visibility":"public"},{"canonicalName":"X2EarnAppsStorageTypes.ContractSettingsStorage","documentation":{"id":22973,"nodeType":"StructuredDocumentation","src":"6988:69:45","text":"@custom:storage-location erc7201:b3tr.storage.X2EarnApps.Settings"},"id":22976,"members":[{"constant":false,"id":22975,"mutability":"mutable","name":"_baseURI","nameLocation":"7104:8:45","nodeType":"VariableDeclaration","scope":22976,"src":"7097:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":22974,"name":"string","nodeType":"ElementaryTypeName","src":"7097:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"ContractSettingsStorage","nameLocation":"7067:23:45","nodeType":"StructDefinition","scope":23070,"src":"7060:57:45","visibility":"public"},{"canonicalName":"X2EarnAppsStorageTypes.AppsStorageStorage","documentation":{"id":22977,"nodeType":"StructuredDocumentation","src":"7121:72:45","text":"@custom:storage-location erc7201:b3tr.storage.X2EarnApps.AppsStorage"},"id":22986,"members":[{"constant":false,"id":22982,"mutability":"mutable","name":"_apps","nameLocation":"7312:5:45","nodeType":"VariableDeclaration","scope":22986,"src":"7262:55:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App)"},"typeName":{"id":22981,"keyName":"appId","keyNameLocation":"7278:5:45","keyType":{"id":22978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7270:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"7262:49:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_App_$17355_storage_$","typeString":"mapping(bytes32 => struct X2EarnAppsDataTypes.App)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22980,"nodeType":"UserDefinedTypeName","pathNode":{"id":22979,"name":"X2EarnAppsDataTypes.App","nameLocations":["7287:19:45","7307:3:45"],"nodeType":"IdentifierPath","referencedDeclaration":17355,"src":"7287:23:45"},"referencedDeclaration":17355,"src":"7287:23:45","typeDescriptions":{"typeIdentifier":"t_struct$_App_$17355_storage_ptr","typeString":"struct X2EarnAppsDataTypes.App"}}},"visibility":"internal"},{"constant":false,"id":22985,"mutability":"mutable","name":"_appIds","nameLocation":"7389:7:45","nodeType":"VariableDeclaration","scope":22986,"src":"7379:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":22983,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7379:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22984,"nodeType":"ArrayTypeName","src":"7379:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"name":"AppsStorageStorage","nameLocation":"7203:18:45","nodeType":"StructDefinition","scope":23070,"src":"7196:205:45","visibility":"public"},{"canonicalName":"X2EarnAppsStorageTypes.AdministrationStorage","documentation":{"id":22987,"nodeType":"StructuredDocumentation","src":"7405:75:45","text":"@custom:storage-location erc7201:b3tr.storage.X2EarnApps.Administration"},"id":23029,"members":[{"constant":false,"id":22991,"mutability":"mutable","name":"_admin","nameLocation":"7552:6:45","nodeType":"VariableDeclaration","scope":23029,"src":"7518:40:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"typeName":{"id":22990,"keyName":"appId","keyNameLocation":"7534:5:45","keyType":{"id":22988,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7526:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"7518:33:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22989,"name":"address","nodeType":"ElementaryTypeName","src":"7543:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"constant":false,"id":22996,"mutability":"mutable","name":"_moderators","nameLocation":"7600:11:45","nodeType":"VariableDeclaration","scope":23029,"src":"7564:47:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(bytes32 => address[])"},"typeName":{"id":22995,"keyName":"appId","keyNameLocation":"7580:5:45","keyType":{"id":22992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7572:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"7564:35:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(bytes32 => address[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":22993,"name":"address","nodeType":"ElementaryTypeName","src":"7589:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22994,"nodeType":"ArrayTypeName","src":"7589:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"visibility":"internal"},{"constant":false,"id":23001,"mutability":"mutable","name":"_rewardDistributors","nameLocation":"7653:19:45","nodeType":"VariableDeclaration","scope":23029,"src":"7617:55:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(bytes32 => address[])"},"typeName":{"id":23000,"keyName":"appId","keyNameLocation":"7633:5:45","keyType":{"id":22997,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7625:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"7617:35:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(bytes32 => address[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":22998,"name":"address","nodeType":"ElementaryTypeName","src":"7642:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22999,"nodeType":"ArrayTypeName","src":"7642:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"visibility":"internal"},{"constant":false,"id":23005,"mutability":"mutable","name":"_teamWalletAddress","nameLocation":"7776:18:45","nodeType":"VariableDeclaration","scope":23029,"src":"7742:52:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"typeName":{"id":23004,"keyName":"appId","keyNameLocation":"7758:5:45","keyType":{"id":23002,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7750:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"7742:33:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":23003,"name":"address","nodeType":"ElementaryTypeName","src":"7767:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"constant":false,"id":23009,"mutability":"mutable","name":"_teamAllocationPercentage","nameLocation":"7834:25:45","nodeType":"VariableDeclaration","scope":23029,"src":"7800:59:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":23008,"keyName":"appId","keyNameLocation":"7816:5:45","keyType":{"id":23006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7808:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"7800:33:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":23007,"name":"uint256","nodeType":"ElementaryTypeName","src":"7825:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":23013,"mutability":"mutable","name":"_metadataURI","nameLocation":"7970:12:45","nodeType":"VariableDeclaration","scope":23029,"src":"7937:45:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_string_storage_$","typeString":"mapping(bytes32 => string)"},"typeName":{"id":23012,"keyName":"appId","keyNameLocation":"7953:5:45","keyType":{"id":23010,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7945:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"7937:32:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_string_storage_$","typeString":"mapping(bytes32 => string)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":23011,"name":"string","nodeType":"ElementaryTypeName","src":"7962:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"internal"},{"constant":false,"id":23018,"mutability":"mutable","name":"_creators","nameLocation":"8024:9:45","nodeType":"VariableDeclaration","scope":23029,"src":"7988:45:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(bytes32 => address[])"},"typeName":{"id":23017,"keyName":"appId","keyNameLocation":"8004:5:45","keyType":{"id":23014,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7996:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"7988:35:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$","typeString":"mapping(bytes32 => address[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":23015,"name":"address","nodeType":"ElementaryTypeName","src":"8013:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23016,"nodeType":"ArrayTypeName","src":"8013:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"visibility":"internal"},{"constant":false,"id":23022,"mutability":"mutable","name":"_creatorApps","nameLocation":"8164:12:45","nodeType":"VariableDeclaration","scope":23029,"src":"8123:53:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":23021,"keyName":"creator","keyNameLocation":"8139:7:45","keyType":{"id":23019,"name":"address","nodeType":"ElementaryTypeName","src":"8131:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"8123:40:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"apps","valueNameLocation":"8158:4:45","valueType":{"id":23020,"name":"uint256","nodeType":"ElementaryTypeName","src":"8150:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":23025,"mutability":"mutable","name":"_x2EarnCreatorContract","nameLocation":"8236:22:45","nodeType":"VariableDeclaration","scope":23029,"src":"8221:37:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnCreator_$16494","typeString":"contract IX2EarnCreator"},"typeName":{"id":23024,"nodeType":"UserDefinedTypeName","pathNode":{"id":23023,"name":"IX2EarnCreator","nameLocations":["8221:14:45"],"nodeType":"IdentifierPath","referencedDeclaration":16494,"src":"8221:14:45"},"referencedDeclaration":16494,"src":"8221:14:45","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnCreator_$16494","typeString":"contract IX2EarnCreator"}},"visibility":"internal"},{"constant":false,"id":23028,"mutability":"mutable","name":"_x2EarnRewardsPoolContract","nameLocation":"8283:26:45","nodeType":"VariableDeclaration","scope":23029,"src":"8264:45:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnRewardsPool_$16819","typeString":"contract IX2EarnRewardsPool"},"typeName":{"id":23027,"nodeType":"UserDefinedTypeName","pathNode":{"id":23026,"name":"IX2EarnRewardsPool","nameLocations":["8264:18:45"],"nodeType":"IdentifierPath","referencedDeclaration":16819,"src":"8264:18:45"},"referencedDeclaration":16819,"src":"8264:18:45","typeDescriptions":{"typeIdentifier":"t_contract$_IX2EarnRewardsPool_$16819","typeString":"contract IX2EarnRewardsPool"}},"visibility":"internal"}],"name":"AdministrationStorage","nameLocation":"7490:21:45","nodeType":"StructDefinition","scope":23070,"src":"7483:899:45","visibility":"public"},{"body":{"id":23036,"nodeType":"Block","src":"8518:73:45","statements":[{"AST":{"nodeType":"YulBlock","src":"8533:54:45","statements":[{"nodeType":"YulAssignment","src":"8541:40:45","value":{"name":"VoteEligibilityStorageLocation","nodeType":"YulIdentifier","src":"8551:30:45"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"8541:6:45"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":23033,"isOffset":false,"isSlot":true,"src":"8541:6:45","suffix":"slot","valueSize":1},{"declaration":22827,"isOffset":false,"isSlot":false,"src":"8551:30:45","valueSize":1}],"id":23035,"nodeType":"InlineAssembly","src":"8524:63:45"}]},"id":23037,"implemented":true,"kind":"function","modifiers":[],"name":"_getVoteEligibilityStorage","nameLocation":"8395:26:45","nodeType":"FunctionDefinition","parameters":{"id":23030,"nodeType":"ParameterList","parameters":[],"src":"8421:2:45"},"returnParameters":{"id":23034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23033,"mutability":"mutable","name":"$","nameLocation":"8513:1:45","nodeType":"VariableDeclaration","scope":23037,"src":"8459:55:45","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_VoteEligibilityStorage_$22857_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.VoteEligibilityStorage"},"typeName":{"id":23032,"nodeType":"UserDefinedTypeName","pathNode":{"id":23031,"name":"X2EarnAppsStorageTypes.VoteEligibilityStorage","nameLocations":["8459:22:45","8482:22:45"],"nodeType":"IdentifierPath","referencedDeclaration":22857,"src":"8459:45:45"},"referencedDeclaration":22857,"src":"8459:45:45","typeDescriptions":{"typeIdentifier":"t_struct$_VoteEligibilityStorage_$22857_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.VoteEligibilityStorage"}},"visibility":"internal"}],"src":"8458:57:45"},"scope":23070,"src":"8386:205:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23044,"nodeType":"Block","src":"8705:69:45","statements":[{"AST":{"nodeType":"YulBlock","src":"8720:50:45","statements":[{"nodeType":"YulAssignment","src":"8728:36:45","value":{"name":"EndorsementStorageLocation","nodeType":"YulIdentifier","src":"8738:26:45"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"8728:6:45"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":23041,"isOffset":false,"isSlot":true,"src":"8728:6:45","suffix":"slot","valueSize":1},{"declaration":22830,"isOffset":false,"isSlot":false,"src":"8738:26:45","valueSize":1}],"id":23043,"nodeType":"InlineAssembly","src":"8711:59:45"}]},"id":23045,"implemented":true,"kind":"function","modifiers":[],"name":"_getEndorsementStorage","nameLocation":"8604:22:45","nodeType":"FunctionDefinition","parameters":{"id":23038,"nodeType":"ParameterList","parameters":[],"src":"8626:2:45"},"returnParameters":{"id":23042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23041,"mutability":"mutable","name":"$","nameLocation":"8702:1:45","nodeType":"VariableDeclaration","scope":23045,"src":"8652:51:45","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"},"typeName":{"id":23040,"nodeType":"UserDefinedTypeName","pathNode":{"id":23039,"name":"X2EarnAppsStorageTypes.EndorsementStorage","nameLocations":["8652:22:45","8675:18:45"],"nodeType":"IdentifierPath","referencedDeclaration":22972,"src":"8652:41:45"},"referencedDeclaration":22972,"src":"8652:41:45","typeDescriptions":{"typeIdentifier":"t_struct$_EndorsementStorage_$22972_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.EndorsementStorage"}},"visibility":"internal"}],"src":"8651:53:45"},"scope":23070,"src":"8595:179:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23052,"nodeType":"Block","src":"8912:66:45","statements":[{"AST":{"nodeType":"YulBlock","src":"8927:47:45","statements":[{"nodeType":"YulAssignment","src":"8935:33:45","value":{"name":"SettingsStorageLocation","nodeType":"YulIdentifier","src":"8945:23:45"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"8935:6:45"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":23049,"isOffset":false,"isSlot":true,"src":"8935:6:45","suffix":"slot","valueSize":1},{"declaration":22833,"isOffset":false,"isSlot":false,"src":"8945:23:45","valueSize":1}],"id":23051,"nodeType":"InlineAssembly","src":"8918:56:45"}]},"id":23053,"implemented":true,"kind":"function","modifiers":[],"name":"_getContractSettingsStorage","nameLocation":"8787:27:45","nodeType":"FunctionDefinition","parameters":{"id":23046,"nodeType":"ParameterList","parameters":[],"src":"8814:2:45"},"returnParameters":{"id":23050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23049,"mutability":"mutable","name":"$","nameLocation":"8907:1:45","nodeType":"VariableDeclaration","scope":23053,"src":"8852:56:45","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ContractSettingsStorage_$22976_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.ContractSettingsStorage"},"typeName":{"id":23048,"nodeType":"UserDefinedTypeName","pathNode":{"id":23047,"name":"X2EarnAppsStorageTypes.ContractSettingsStorage","nameLocations":["8852:22:45","8875:23:45"],"nodeType":"IdentifierPath","referencedDeclaration":22976,"src":"8852:46:45"},"referencedDeclaration":22976,"src":"8852:46:45","typeDescriptions":{"typeIdentifier":"t_struct$_ContractSettingsStorage_$22976_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.ContractSettingsStorage"}},"visibility":"internal"}],"src":"8851:58:45"},"scope":23070,"src":"8778:200:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23060,"nodeType":"Block","src":"9092:69:45","statements":[{"AST":{"nodeType":"YulBlock","src":"9107:50:45","statements":[{"nodeType":"YulAssignment","src":"9115:36:45","value":{"name":"AppsStorageStorageLocation","nodeType":"YulIdentifier","src":"9125:26:45"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"9115:6:45"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":23057,"isOffset":false,"isSlot":true,"src":"9115:6:45","suffix":"slot","valueSize":1},{"declaration":22836,"isOffset":false,"isSlot":false,"src":"9125:26:45","valueSize":1}],"id":23059,"nodeType":"InlineAssembly","src":"9098:59:45"}]},"id":23061,"implemented":true,"kind":"function","modifiers":[],"name":"_getAppsStorageStorage","nameLocation":"8991:22:45","nodeType":"FunctionDefinition","parameters":{"id":23054,"nodeType":"ParameterList","parameters":[],"src":"9013:2:45"},"returnParameters":{"id":23058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23057,"mutability":"mutable","name":"$","nameLocation":"9089:1:45","nodeType":"VariableDeclaration","scope":23061,"src":"9039:51:45","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"},"typeName":{"id":23056,"nodeType":"UserDefinedTypeName","pathNode":{"id":23055,"name":"X2EarnAppsStorageTypes.AppsStorageStorage","nameLocations":["9039:22:45","9062:18:45"],"nodeType":"IdentifierPath","referencedDeclaration":22986,"src":"9039:41:45"},"referencedDeclaration":22986,"src":"9039:41:45","typeDescriptions":{"typeIdentifier":"t_struct$_AppsStorageStorage_$22986_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AppsStorageStorage"}},"visibility":"internal"}],"src":"9038:53:45"},"scope":23070,"src":"8982:179:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23068,"nodeType":"Block","src":"9281:72:45","statements":[{"AST":{"nodeType":"YulBlock","src":"9296:53:45","statements":[{"nodeType":"YulAssignment","src":"9304:39:45","value":{"name":"AdministrationStorageLocation","nodeType":"YulIdentifier","src":"9314:29:45"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"9304:6:45"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":23065,"isOffset":false,"isSlot":true,"src":"9304:6:45","suffix":"slot","valueSize":1},{"declaration":22839,"isOffset":false,"isSlot":false,"src":"9314:29:45","valueSize":1}],"id":23067,"nodeType":"InlineAssembly","src":"9287:62:45"}]},"id":23069,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdministrationStorage","nameLocation":"9174:25:45","nodeType":"FunctionDefinition","parameters":{"id":23062,"nodeType":"ParameterList","parameters":[],"src":"9199:2:45"},"returnParameters":{"id":23066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23065,"mutability":"mutable","name":"$","nameLocation":"9278:1:45","nodeType":"VariableDeclaration","scope":23069,"src":"9225:54:45","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AdministrationStorage_$23029_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AdministrationStorage"},"typeName":{"id":23064,"nodeType":"UserDefinedTypeName","pathNode":{"id":23063,"name":"X2EarnAppsStorageTypes.AdministrationStorage","nameLocations":["9225:22:45","9248:21:45"],"nodeType":"IdentifierPath","referencedDeclaration":23029,"src":"9225:44:45"},"referencedDeclaration":23029,"src":"9225:44:45","typeDescriptions":{"typeIdentifier":"t_struct$_AdministrationStorage_$23029_storage_ptr","typeString":"struct X2EarnAppsStorageTypes.AdministrationStorage"}},"visibility":"internal"}],"src":"9224:56:45"},"scope":23070,"src":"9165:188:45","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":23071,"src":"2113:7242:45","usedErrors":[],"usedEvents":[]}],"src":"1195:8161:45"},"id":45}},"contracts":{"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"AccessControlUpgradeable":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public {     require(hasRole(MY_ROLE, msg.sender));     ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}"}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() {     _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\\\"MyToken\\\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}"}},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","proxiableUUID()":"52d1902d","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}"}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"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.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}"}},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"ReentrancyGuardUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":\"ReentrancyGuardUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]}},\"version\":1}"}},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}"}},"@openzeppelin/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]}},\"version\":1}"}},"@openzeppelin/contracts/interfaces/IERC6372.sol":{"IERC6372":{"abi":[{"inputs":[],"name":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"CLOCK_MODE()":"4bf5d7e9","clock()":"91ddadf4"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Description of the clock\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting).\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC6372.sol\":\"IERC6372\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]}},\"version\":1}"}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]}},\"version\":1}"}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ERC1967Utils":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"beacon","type":"address"}],"name":"ERC1967InvalidBeacon","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122080d025bde6ecd3e9751bf52f4767f80cad11d4bafac081158d8af523c400a75c64736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 0xD0 0x25 0xBD 0xE6 0xEC 0xD3 0xE9 PUSH22 0x1BF52F4767F80CAD11D4BAFAC081158D8AF523C400A7 0x5C PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"449:6273:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;449:6273:10;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122080d025bde6ecd3e9751bf52f4767f80cad11d4bafac081158d8af523c400a75c64736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 0xD0 0x25 0xBD 0xE6 0xEC 0xD3 0xE9 PUSH22 0x1BF52F4767F80CAD11D4BAFAC081158D8AF523C400A7 0x5C PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"449:6273:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}"}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"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":[{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"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.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens 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.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"IERC721Enumerable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081915854002fb72622c28f83807c38783a97c6f16bd53c22259a96632faec00764736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 SWAP2 PC SLOAD STOP 0x2F 0xB7 0x26 0x22 0xC2 DUP16 DUP4 DUP1 PUSH29 0x38783A97C6F16BD53C22259A96632FAEC00764736F6C63430008140033 ","sourceMap":"195:6066:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:6066:15;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081915854002fb72622c28f83807c38783a97c6f16bd53c22259a96632faec00764736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 SWAP2 PC SLOAD STOP 0x2F 0xB7 0x26 0x22 0xC2 DUP16 DUP4 DUP1 PUSH29 0x38783A97C6F16BD53C22259A96632FAEC00764736F6C63430008140033 ","sourceMap":"195:6066:15:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205cc67f1c6d050a7fd0a79ec5484fb335fa9c52db1691422755a8085de8784fc264736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C 0xC6 PUSH32 0x1C6D050A7FD0A79EC5484FB335FA9C52DB1691422755A8085DE8784FC264736F PUSH13 0x63430008140033000000000000 ","sourceMap":"1245:2685:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1245:2685:16;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205cc67f1c6d050a7fd0a79ec5484fb335fa9c52db1691422755a8085de8784fc264736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C 0xC6 PUSH32 0x1C6D050A7FD0A79EC5484FB335FA9C52DB1691422755A8085DE8784FC264736F PUSH13 0x63430008140033000000000000 ","sourceMap":"1245:2685:16:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 {     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(newImplementation.code.length > 0);         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[{"inputs":[],"name":"MathOverflowedMulDiv","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207565d92611bb45e5cf3283afb56ef19f4dce0b6f5f6743955f54893769b831ba64736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x65D92611BB45E5CF3283AFB56EF19F4DCE0B6F5F6743 SWAP6 PUSH0 SLOAD DUP10 CALLDATACOPY PUSH10 0xB831BA64736F6C634300 ADDMOD EQ STOP CALLER ","sourceMap":"203:14914:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:18;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207565d92611bb45e5cf3283afb56ef19f4dce0b6f5f6743955f54893769b831ba64736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x65D92611BB45E5CF3283AFB56EF19F4DCE0B6F5F6743 SWAP6 PUSH0 SLOAD DUP10 CALLDATACOPY PUSH10 0xB831BA64736F6C634300 ADDMOD EQ STOP CALLER ","sourceMap":"203:14914:18:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200ee3940e1e46d14be116abfd86f7b5c8853d6c47522a1d1b61b3f5b368a7ddf764736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE 0xE3 SWAP5 0xE 0x1E CHAINID 0xD1 0x4B 0xE1 AND 0xAB REVERT DUP7 0xF7 0xB5 0xC8 DUP6 RETURNDATASIZE PUSH13 0x47522A1D1B61B3F5B368A7DDF7 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"764:33927:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;764:33927:19;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200ee3940e1e46d14be116abfd86f7b5c8853d6c47522a1d1b61b3f5b368a7ddf764736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE 0xE3 SWAP5 0xE 0x1E CHAINID 0xD1 0x4B 0xE1 AND 0xAB REVERT DUP7 0xF7 0xB5 0xC8 DUP6 RETURNDATASIZE PUSH13 0x47522A1D1B61B3F5B368A7DDF7 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"764:33927:19:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/structs/Checkpoints.sol":{"Checkpoints":{"abi":[{"inputs":[],"name":"CheckpointUnorderedInsertion","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb41c4dbd69d0575179f6f479577b9bf6e588ab5e8faecb896251c1b12af4ed364736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB COINBASE 0xC4 0xDB 0xD6 SWAP14 SDIV PUSH22 0x179F6F479577B9BF6E588AB5E8FAECB896251C1B12AF 0x4E 0xD3 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"668:20471:20:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;668:20471:20;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb41c4dbd69d0575179f6f479577b9bf6e588ab5e8faecb896251c1b12af4ed364736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB COINBASE 0xC4 0xDB 0xD6 SWAP14 SDIV PUSH22 0x179F6F479577B9BF6E588AB5E8FAECB896251C1B12AF 0x4E 0xD3 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"668:20471:20:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library defines the `Trace*` struct, for checkpointing values as they change at different points in time, and later looking up past values by block number. See {Votes} as an example. To create a history of checkpoints define a variable type `Checkpoints.Trace*` in your contract, and store a new checkpoint for the current transaction block using the {push} function.\",\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":\"Checkpoints\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/structs/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122097ca15e807b43e0054aa3f37f8cce3d1bf1bc3fb3a58a7c46e72825aa213e8e964736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0xCA ISZERO 0xE8 SMOD 0xB4 RETURNDATACOPY STOP SLOAD 0xAA EXTCODEHASH CALLDATACOPY 0xF8 0xCC 0xE3 0xD1 0xBF SHL 0xC3 0xFB GASPRICE PC 0xA7 0xC4 PUSH15 0x72825AA213E8E964736F6C63430008 EQ STOP CALLER ","sourceMap":"1330:11640:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1330:11640:21;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122097ca15e807b43e0054aa3f37f8cce3d1bf1bc3fb3a58a7c46e72825aa213e8e964736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0xCA ISZERO 0xE8 SMOD 0xB4 RETURNDATACOPY STOP SLOAD 0xAA EXTCODEHASH CALLDATACOPY 0xF8 0xCC 0xE3 0xD1 0xBF SHL 0xC3 0xFB GASPRICE PC 0xA7 0xC4 PUSH15 0x72825AA213E8E964736F6C63430008 EQ STOP CALLER ","sourceMap":"1330:11640:21:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]}},\"version\":1}"}},"contracts/B3TRChallenges.sol":{"B3TRChallenges":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"AlreadyClaimed","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"invitee","type":"address"}],"name":"AlreadyInvited","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"AlreadyParticipating","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"AlreadyRefunded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"name":"BetAmountBelowMinimum","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeAlreadyCompleted","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeDoesNotExist","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"currentRound","type":"uint256"}],"name":"ChallengeEnded","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"enum ChallengeTypes.ChallengeStatus","name":"status","type":"uint8"}],"name":"ChallengeInvalidStatus","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"currentRound","type":"uint256"}],"name":"ChallengeNotEnded","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeNotPending","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"ChallengeUnknownApp","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"ChallengesUnauthorizedUser","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"CreatorCannotJoin","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"CreatorCannotLeave","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"DescriptionTooLong","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"DuplicateApp","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"ImageURITooLong","type":"error"},{"inputs":[{"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"internalType":"uint256","name":"numWinners","type":"uint256"},{"internalType":"uint256","name":"minPrizePerWinner","type":"uint256"}],"name":"InsufficientPrizePerWinner","type":"error"},{"inputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientWithdrawableFunds","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidChallengeTypeForCombo","type":"error"},{"inputs":[{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"}],"name":"InvalidEndRound","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"currentRound","type":"uint256"}],"name":"InvalidStartRound","type":"error"},{"inputs":[],"name":"InvalidTypeConfiguration","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MaxChallengeDurationExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MaxParticipantsExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MaxSelectedAppsExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MetadataURITooLong","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"NotASplitWinChallenge","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"actions","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"NotEligibleForSplitWin","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"NotInvited","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"NotParticipating","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"name":"NotVerifiedPerson","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"NothingToClaim","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"NothingToRefund","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"SplitWinCannotComplete","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"SplitWinSlotsExhausted","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"ThresholdTooHigh","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"TitleTooLong","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AdminWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"B3TRAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":false,"internalType":"enum ChallengeTypes.SettlementMode","name":"settlementMode","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"bestScore","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bestCount","type":"uint256"}],"name":"ChallengeCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":true,"internalType":"uint256","name":"endRound","type":"uint256"},{"indexed":false,"internalType":"enum ChallengeTypes.ChallengeKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"enum ChallengeTypes.ChallengeVisibility","name":"visibility","type":"uint8"},{"indexed":false,"internalType":"enum ChallengeTypes.ChallengeType","name":"challengeType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startRound","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"},{"indexed":false,"internalType":"bool","name":"allApps","type":"bool"},{"indexed":false,"internalType":"bytes32[]","name":"selectedApps","type":"bytes32[]"},{"indexed":false,"internalType":"string","name":"title","type":"string"},{"indexed":false,"internalType":"string","name":"description","type":"string"},{"indexed":false,"internalType":"string","name":"imageURI","type":"string"},{"indexed":false,"internalType":"string","name":"metadataURI","type":"string"}],"name":"ChallengeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"ChallengeDeclined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeInvalidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"invitee","type":"address"}],"name":"ChallengeInviteAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"ChallengeJoined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"ChallengeLeft","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChallengePayoutClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChallengeRefundClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxChallengeDurationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxParticipantsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxSelectedAppsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MinBetAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"numWinners","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prizePerWinner","type":"uint256"}],"name":"SplitWinConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SplitWinCreatorRefunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"prize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"actions","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"winnersClaimed","type":"uint256"}],"name":"SplitWinPrizeClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"VeBetterPassportAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"X2EarnAppsAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"XAllocationVotingAddressUpdated","type":"event"},{"inputs":[],"name":"CONTRACTS_ADDRESS_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SETTINGS_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address[]","name":"invitees","type":"address[]"}],"name":"addInvites","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"cancelChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"challengeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"claimChallengePayout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"claimChallengeRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"claimCreatorSplitWinRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"claimSplitWinPrize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"completeChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ChallengeTypes.ChallengeKind","name":"kind","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeVisibility","name":"visibility","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeType","name":"challengeType","type":"uint8"},{"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"numWinners","type":"uint256"},{"internalType":"bytes32[]","name":"appIds","type":"bytes32[]"},{"internalType":"address[]","name":"invitees","type":"address[]"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageURI","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"}],"internalType":"struct ChallengeTypes.CreateChallengeParams","name":"params","type":"tuple"}],"name":"createChallenge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"declineChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallenge","outputs":[{"components":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"enum ChallengeTypes.ChallengeKind","name":"kind","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeVisibility","name":"visibility","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeType","name":"challengeType","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeStatus","name":"status","type":"uint8"},{"internalType":"enum ChallengeTypes.SettlementMode","name":"settlementMode","type":"uint8"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"numWinners","type":"uint256"},{"internalType":"uint256","name":"winnersClaimed","type":"uint256"},{"internalType":"uint256","name":"prizePerWinner","type":"uint256"},{"internalType":"bool","name":"allApps","type":"bool"},{"internalType":"uint256","name":"totalPrize","type":"uint256"},{"internalType":"uint256","name":"participantCount","type":"uint256"},{"internalType":"uint256","name":"invitedCount","type":"uint256"},{"internalType":"uint256","name":"declinedCount","type":"uint256"},{"internalType":"uint256","name":"selectedAppsCount","type":"uint256"},{"internalType":"uint256","name":"winnersCount","type":"uint256"},{"internalType":"uint256","name":"bestScore","type":"uint256"},{"internalType":"uint256","name":"bestCount","type":"uint256"},{"internalType":"uint256","name":"payoutsClaimed","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageURI","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"}],"internalType":"struct ChallengeTypes.ChallengeView","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeDeclined","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeInvited","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeParticipants","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeSelectedApps","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeStatus","outputs":[{"internalType":"enum ChallengeTypes.ChallengeStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeWinners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"getParticipantActions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"getParticipantStatus","outputs":[{"internalType":"enum ChallengeTypes.ParticipantStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"b3trAddress","type":"address"},{"internalType":"address","name":"veBetterPassportAddress","type":"address"},{"internalType":"address","name":"xAllocationVotingAddress","type":"address"},{"internalType":"address","name":"x2EarnAppsAddress","type":"address"},{"internalType":"uint256","name":"maxChallengeDuration","type":"uint256"},{"internalType":"uint256","name":"maxSelectedApps","type":"uint256"},{"internalType":"uint256","name":"maxParticipants","type":"uint256"},{"internalType":"uint256","name":"minBetAmount","type":"uint256"}],"internalType":"struct ChallengeTypes.InitializationData","name":"data","type":"tuple"},{"components":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"upgrader","type":"address"},{"internalType":"address","name":"contractsAddressManager","type":"address"},{"internalType":"address","name":"settingsManager","type":"address"}],"internalType":"struct ChallengeTypes.InitializationRoleData","name":"roles","type":"tuple"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"isInvitationEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"isSplitWinWinner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"joinChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"leaveChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxChallengeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxParticipants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSelectedApps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBetAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setB3TRAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxChallengeDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxParticipants","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSelectedApps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinBetAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setVeBetterPassportAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setX2EarnAppsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setXAllocationVotingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"syncChallenge","outputs":[{"internalType":"enum ChallengeTypes.ChallengeStatus","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_7092":{"entryPoint":null,"id":7092,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_584":{"entryPoint":38,"id":584,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_615":{"entryPoint":null,"id":615,"parameterSlots":0,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:216:46","statements":[{"nodeType":"YulBlock","src":"6:3:46","statements":[]},{"body":{"nodeType":"YulBlock","src":"113:101:46","statements":[{"nodeType":"YulAssignment","src":"123:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"135:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"146:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"131:3:46"},"nodeType":"YulFunctionCall","src":"131:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"123:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"165:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"180:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"196:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"192:3:46"},"nodeType":"YulFunctionCall","src":"192:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"204:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"188:3:46"},"nodeType":"YulFunctionCall","src":"188:18:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"176:3:46"},"nodeType":"YulFunctionCall","src":"176:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"158:6:46"},"nodeType":"YulFunctionCall","src":"158:50:46"},"nodeType":"YulExpressionStatement","src":"158:50:46"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"82:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"93:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"104:4:46","type":""}],"src":"14:200:46"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n}","id":46,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"contracts/challenges/libraries/ChallengeCoreLogic.sol":{"ChallengeCoreLogic":[{"length":20,"start":2602},{"length":20,"start":3595},{"length":20,"start":4884},{"length":20,"start":6732},{"length":20,"start":7080},{"length":20,"start":7306},{"length":20,"start":7726},{"length":20,"start":8031},{"length":20,"start":8587}]},"contracts/challenges/libraries/ChallengeSettlementLogic.sol":{"ChallengeSettlementLogic":[{"length":20,"start":3063},{"length":20,"start":7524},{"length":20,"start":7643},{"length":20,"start":7790},{"length":20,"start":8177},{"length":20,"start":8338}]}},"object":"60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516137436200010460003960008181612795015281816127be015261290601526137436000f3fe60806040526004361061024e5760003560e01c806212462a1461025357806301ffc9a714610275578063023bf958146102aa578063039ddca9146102d757806314cf9077146102f75780631bdd4b741461032557806321c688fa14610352578063248a9ca31461037257806324924bf714610392578063262ad80b146103a75780632b5adc1e146103c75780632bf7299b146103f45780632f2ff15d1461041457806336568abe146104345780633800ff4d146104545780633bb18a76146104745780633cc376bb1461049457806347b0b33e146104b45780634a6ff70b146104d45780634caf6d5f146104f45780634f1ef2861461051457806352d1902d1461052757806354fd4d501461053c5780635de5720f1461056f57806367fc8c891461058f5780636c188593146105af57806381363aeb146105cf578063832c8bc6146105fc57806387d301641461062957806387d6e2131461064957806391d1485414610669578063952f213314610689578063a0427700146106ab578063a217fddf146106cb578063a2f05725146106e0578063a41483e3146106f5578063a7817bbc14610715578063a934718c14610735578063ad3cb1cc14610755578063b30f058414610786578063b58bd356146107a6578063c048f6c9146107c6578063cb3e0d2b146107e6578063cf33e76c14610806578063d2177bdd14610826578063d547741f1461083b578063e448ee261461085b578063f3fef3a31461087b578063f72c0d8b1461089b578063f7806522146108bd578063fa7626d0146108d2578063fa968eea146108f4575b600080fd5b34801561025f57600080fd5b5061027361026e366004612c24565b610909565b005b34801561028157600080fd5b50610295610290366004612c3d565b61097e565b60405190151581526020015b60405180910390f35b3480156102b657600080fd5b506102ca6102c5366004612c24565b6109b5565b6040516102a19190612c67565b3480156102e357600080fd5b506102ca6102f2366004612c24565b610a41565b34801561030357600080fd5b50610317610312366004612ccb565b610acb565b6040519081526020016102a1565b34801561033157600080fd5b50610345610340366004612c24565b610b58565b6040516102a19190612d9a565b34801561035e57600080fd5b5061027361036d366004612c24565b6110fb565b34801561037e57600080fd5b5061031761038d366004612c24565b6111c6565b34801561039e57600080fd5b506103176111e6565b3480156103b357600080fd5b506102736103c2366004612f94565b6111f9565b3480156103d357600080fd5b506103e76103e2366004612c24565b611279565b6040516102a19190613012565b34801561040057600080fd5b5061027361040f366004612c24565b6112fa565b34801561042057600080fd5b5061027361042f366004612ccb565b6113a9565b34801561044057600080fd5b5061027361044f366004612ccb565b6113cb565b34801561046057600080fd5b5061027361046f36600461304a565b6113fe565b34801561048057600080fd5b5061027361048f36600461304a565b611466565b3480156104a057600080fd5b506102736104af366004613065565b6114c5565b3480156104c057600080fd5b506102736104cf36600461304a565b611888565b3480156104e057600080fd5b506102956104ef366004612ccb565b6118e7565b34801561050057600080fd5b5061031761050f3660046130ab565b61192f565b6102736105223660046130fc565b6119c0565b34801561053357600080fd5b506103176119df565b34801561054857600080fd5b506040805180820190915260018152601960f91b60208201525b6040516102a191906131bd565b34801561057b57600080fd5b506102ca61058a366004612c24565b6119fc565b34801561059b57600080fd5b506102736105aa366004612c24565b611a86565b3480156105bb57600080fd5b506102736105ca366004612c24565b611ac6565b3480156105db57600080fd5b506105ef6105ea366004612ccb565b611b25565b6040516102a191906131d0565b34801561060857600080fd5b5061061c610617366004612c24565b611b6d565b6040516102a191906131e3565b34801561063557600080fd5b50610295610644366004612ccb565b611bf8565b34801561065557600080fd5b50610317610664366004612c24565b611c40565b34801561067557600080fd5b50610295610684366004612ccb565b611c82565b34801561069557600080fd5b506103176000805160206136ce83398151915281565b3480156106b757600080fd5b506103176106c6366004612c24565b611cb8565b3480156106d757600080fd5b50610317600081565b3480156106ec57600080fd5b50610317611cf9565b34801561070157600080fd5b50610273610710366004612c24565b611d0c565b34801561072157600080fd5b50610273610730366004612c24565b611d4c565b34801561074157600080fd5b50610273610750366004612c24565b611d8c565b34801561076157600080fd5b50610562604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561079257600080fd5b5061061c6107a1366004612c24565b611e3b565b3480156107b257600080fd5b506103176107c1366004612c24565b611ecd565b3480156107d257600080fd5b506102736107e136600461304a565b611f0f565b3480156107f257600080fd5b50610317610801366004612c24565b611f6e565b34801561081257600080fd5b506102ca610821366004612c24565b611fb0565b34801561083257600080fd5b5061031761203a565b34801561084757600080fd5b50610273610856366004612ccb565b61204d565b34801561086757600080fd5b50610273610876366004612c24565b612069565b34801561088757600080fd5b506102736108963660046131f1565b6120a9565b3480156108a757600080fd5b5061031760008051602061362e83398151915281565b3480156108c957600080fd5b506103176122bd565b3480156108de57600080fd5b5061031760008051602061366e83398151915281565b34801561090057600080fd5b506103176122d0565b6109116122e3565b6040516209231560e11b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__906212462a906024015b60006040518083038186803b15801561095b57600080fd5b505af415801561096f573d6000803e3d6000fd5b5050505061097b612319565b50565b60006001600160e01b03198216637965db0b60e01b14806109af57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006109c161232a565b90506109d183826006015461234e565b6000838152600882016020908152604091829020600b0180548351818402810184019094528084529091830182828015610a3457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a16575b5050505050915050919050565b60606000610a4d61232a565b9050610a5d83826006015461234e565b6000838152600882016020908152604091829020600e0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b6040516314cf907760e01b8152600481018390526001600160a01b038216602482015260009073__$74730aeb69cabb170809b4d7c58740053a$__906314cf907790604401602060405180830381865af4158015610b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b51919061321b565b9392505050565b610c3f604080516103a081019091526000808252602082019081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6000610c4961232a565b9050610c5983826006015461234e565b6000838152600882016020526040812060028101546003820154919291610c80919061324a565b610c8b90600161325d565b604080516103a08101909152868152835491925090602082019060ff166001811115610cb957610cb9612cf7565b81528354602090910190610100900460ff166001811115610cdc57610cdc612cf7565b8152835460209091019062010000900460ff166001811115610d0057610d00612cf7565b815260200173__$e5c34f23aa37ff925bd96f5e6125be3c79$__639ed14864886040518263ffffffff1660e01b8152600401610d3e91815260200190565b602060405180830381865af4158015610d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7f9190613270565b60ff166004811115610d9357610d93612cf7565b6004811115610da457610da4612cf7565b81528354602090910190600160201b900460ff166003811115610dc957610dc9612cf7565b81528354600160301b81046001600160a01b0316602083015260018501546040830152600285015460608301526003850154608083015260a08201849052600485015460c0830152600585015460e0830152600e85015461010083018190526006860154610120840152600160281b90910460ff1615156101408301526007850154610160830152600b850154610180830152600c8501546101a0830152600d8501546101c0830152600f8501546101e083015261020082015260088401546102208201526009840154610240820152600a84015461026082015260108401805461028090920191610eba90613293565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee690613293565b8015610f335780601f10610f0857610100808354040283529160200191610f33565b820191906000526020600020905b815481529060010190602001808311610f1657829003601f168201915b50505050508152602001836011018054610f4c90613293565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7890613293565b8015610fc55780601f10610f9a57610100808354040283529160200191610fc5565b820191906000526020600020905b815481529060010190602001808311610fa857829003601f168201915b50505050508152602001836012018054610fde90613293565b80601f016020809104026020016040519081016040528092919081815260200182805461100a90613293565b80156110575780601f1061102c57610100808354040283529160200191611057565b820191906000526020600020905b81548152906001019060200180831161103a57829003601f168201915b5050505050815260200183601301805461107090613293565b80601f016020809104026020016040519081016040528092919081815260200182805461109c90613293565b80156110e95780601f106110be576101008083540402835291602001916110e9565b820191906000526020600020905b8154815290600101906020018083116110cc57829003601f168201915b50505050508152509350505050919050565b6111036122e3565b60008051602061366e83398151915261111c8133611c82565b158015611131575061112f600033611c82565b155b1561115a57336040516309edd0f760e11b815260040161115191906132cd565b60405180910390fd5b8160000361117b5760405163162908e360e11b815260040160405180910390fd5b600061118561232a565b60058101805490859055604051919250906000805160206136ae833981519152906111b390839087906132e1565b60405180910390a150505061097b612319565b6000806111d161237b565b60009384526020525050604090206001015490565b60006111f061232a565b60070154905090565b6112016122e3565b60405163262ad80b60e01b815273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063262ad80b9061123c90869086908690600401613336565b60006040518083038186803b15801561125457600080fd5b505af4158015611268573d6000803e3d6000fd5b50505050611274612319565b505050565b6060600061128561232a565b905061129583826006015461234e565b6000838152600882016020908152604091829020600f0180548351818402810184019094528084529091830182828015610a3457602002820191906000526020600020905b8154815260200190600101908083116112da575050505050915050919050565b6113026122e3565b60008051602061366e83398151915261131b8133611c82565b158015611330575061132e600033611c82565b155b1561135057336040516309edd0f760e11b815260040161115191906132cd565b816000036113715760405163162908e360e11b815260040160405180910390fd5b600061137b61232a565b60078101805490859055604051919250906000805160206136ee833981519152906111b390839087906132e1565b6113b2826111c6565b6113bb8161239f565b6113c583836123a9565b50505050565b6001600160a01b03811633146113f45760405163334bd91960e11b815260040160405180910390fd5b611274828261244a565b6114066122e3565b6000805160206136ce83398151915261141f8133611c82565b1580156114345750611432600033611c82565b155b1561145457336040516309edd0f760e11b815260040161115191906132cd565b61145d826124c2565b5061097b612319565b61146e6122e3565b6000805160206136ce8339815191526114878133611c82565b15801561149c575061149a600033611c82565b155b156114bc57336040516309edd0f760e11b815260040161115191906132cd565b61145d82612549565b60006114cf6125d0565b805490915060ff600160401b82041615906001600160401b03166000811580156114f65750825b90506000826001600160401b031660011480156115125750303b155b905081158015611520575080155b1561153e5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561156757845460ff60401b1916600160401b1785555b6000611576602088018861304a565b6001600160a01b031614806115a357506000611598604088016020890161304a565b6001600160a01b0316145b806115c6575060006115bb606088016040890161304a565b6001600160a01b0316145b806115e9575060006115de608088016060890161304a565b6001600160a01b0316145b80611609575060006115fe602089018961304a565b6001600160a01b0316145b8061162c575060006116216040890160208a0161304a565b6001600160a01b0316145b8061164f575060006116446060890160408a0161304a565b6001600160a01b0316145b80611672575060006116676080890160608a0161304a565b6001600160a01b0316145b156116905760405163d92e233d60e01b815260040160405180910390fd5b608087013515806116a3575060a0870135155b806116b0575060c0870135155b806116bd575060e0870135155b156116db5760405163162908e360e11b815260040160405180910390fd5b6116e36125f4565b6116eb6125fe565b6116f36125f4565b60006116fd61232a565b6080890135600482015560a0890135600582015560c08901356007820155905061172a60e089013561260e565b60008051602061368e8339815191526000896080013560405161174e9291906132e1565b60405180910390a16000805160206136ae83398151915260008960a0013560405161177a9291906132e1565b60405180910390a16000805160206136ee83398151915260008960c001356040516117a69291906132e1565b60405180910390a16117f36117be60208a018a61304a565b6117ce60408b0160208c0161304a565b6117de60608c0160408d0161304a565b6117ee60808d0160608e0161304a565b612686565b611838611803602089018961304a565b61181360408a0160208b0161304a565b61182360608b0160408c0161304a565b61183360808c0160608d0161304a565b6126aa565b50831561187f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6118906122e3565b6000805160206136ce8339815191526118a98133611c82565b1580156118be57506118bc600033611c82565b155b156118de57336040516309edd0f760e11b815260040161115191906132cd565b61145d82612707565b6000806118f261232a565b905061190284826006015461234e565b6000938452600a01602090815260408085206001600160a01b039490941685529290525090205460ff1690565b60006119396122e3565b604051633839969560e21b815273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063e0e65a549061197090859060040161344e565b602060405180830381865af415801561198d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b1919061321b565b90506119bb612319565b919050565b6119c861278a565b6119d18261282f565b6119db8282612847565b5050565b60006119e96128fb565b5060008051602061364e83398151915290565b60606000611a0861232a565b9050611a1883826006015461234e565b6000838152600882016020908152604091829020600c0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b611a8e6122e3565b6040516367fc8c8960e01b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__906367fc8c8990602401610943565b611ace6122e3565b60008051602061366e833981519152611ae78133611c82565b158015611afc5750611afa600033611c82565b155b15611b1c57336040516309edd0f760e11b815260040161115191906132cd565b61145d8261260e565b600080611b3061232a565b9050611b4084826006015461234e565b6000938452600901602090815260408085206001600160a01b039490941685529290525090205460ff1690565b6040516327b4521960e21b81526004810182905260009073__$e5c34f23aa37ff925bd96f5e6125be3c79$__90639ed1486490602401602060405180830381865af4158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190613270565b60ff1660048111156109af576109af612cf7565b600080611c0361232a565b9050611c1384826006015461234e565b6000938452601101602090815260408085206001600160a01b039490941685529290525090205460ff1690565b6000611c4a6122e3565b6040516387d6e21360e01b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__906387d6e21390602401611970565b600080611c8d61237b565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611cc26122e3565b60405162a0427760e81b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063a042770090602401611970565b6000611d0361232a565b60060154905090565b611d146122e3565b60405163a41483e360e01b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063a41483e390602401610943565b611d546122e3565b6040516329e05eef60e21b81526004810182905273__$74730aeb69cabb170809b4d7c58740053a$__9063a7817bbc90602401610943565b611d946122e3565b60008051602061366e833981519152611dad8133611c82565b158015611dc25750611dc0600033611c82565b155b15611de257336040516309edd0f760e11b815260040161115191906132cd565b81600003611e035760405163162908e360e11b815260040160405180910390fd5b6000611e0d61232a565b600481018054908590556040519192509060008051602061368e833981519152906111b390839087906132e1565b6000611e456122e3565b604051632cc3c16160e21b81526004810183905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190613270565b60ff1660048111156119b1576119b1612cf7565b6000611ed76122e3565b604051635ac5e9ab60e11b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063b58bd35690602401611970565b611f176122e3565b6000805160206136ce833981519152611f308133611c82565b158015611f455750611f43600033611c82565b155b15611f6557336040516309edd0f760e11b815260040161115191906132cd565b61145d82612944565b6000611f786122e3565b60405163cb3e0d2b60e01b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063cb3e0d2b90602401611970565b60606000611fbc61232a565b9050611fcc83826006015461234e565b6000838152600882016020908152604091829020600d0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b600061204461232a565b60040154905090565b612056826111c6565b61205f8161239f565b6113c5838361244a565b6120716122e3565b604051637224771360e11b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063e448ee2690602401610943565b6120b16122e3565b60006120bd8133611c82565b1580156120d257506120d0600033611c82565b155b156120f257336040516309edd0f760e11b815260040161115191906132cd565b6001600160a01b0383166121195760405163d92e233d60e01b815260040160405180910390fd5b8160000361213a5760405163162908e360e11b815260040160405180910390fd5b600061214461232a565b80546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906121799030906004016132cd565b602060405180830381865afa158015612196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ba919061321b565b9050808411156121e15780846040516304720f4b60e21b81526004016111519291906132e1565b815460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061221290889088906004016135d6565b6020604051808303816000875af1158015612231573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225591906135ef565b612272576040516312171d8360e31b815260040160405180910390fd5b6040518481526001600160a01b0386169033907f8b192dc173e314b16d9067e45c2afbdcdc1713fc4fe1a95aff9076249648abc09060200160405180910390a35050506119db612319565b60006122c761232a565b60050154905090565b60006122da61232a565b60100154905090565b60006122ed6129cb565b80549091506001190161231357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006123236129cb565b6001905550565b7f4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d10090565b81158061235a57508082115b156119db57604051635bafafd160e01b815260048101839052602401611151565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b61097b81336129ef565b6000806123b461237b565b90506123c08484611c82565b612440576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556123f63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109af565b60009150506109af565b60008061245561237b565b90506124618484611c82565b15612440576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109af565b6001600160a01b0381166124e95760405163d92e233d60e01b815260040160405180910390fd5b60006124f361232a565b6001810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907fd260589e8955f4324723f68c9c004afe08c82d5790f93946bbf95f6ebcab534790600090a3505050565b6001600160a01b0381166125705760405163d92e233d60e01b815260040160405180910390fd5b600061257a61232a565b6002810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f471425990600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6125fc612a1a565b565b612606612a1a565b6125fc612a3f565b8060000361262f5760405163162908e360e11b815260040160405180910390fd5b600061263961232a565b60108101805490849055604051919250907f82480e97991520549ac4b5d0e1d97edb3bfac2666202923b6903d2a953dc76089061267990839086906132e1565b60405180910390a1505050565b61268f84612707565b612698836124c2565b6126a182612549565b6113c581612944565b6126b56000856123a9565b506126ce60008051602061362e833981519152846123a9565b506126e76000805160206136ce833981519152836123a9565b5061270060008051602061366e833981519152826123a9565b5050505050565b6001600160a01b03811661272e5760405163d92e233d60e01b815260040160405180910390fd5b600061273861232a565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907fb3061a8192d243178b0fd92d1809bc86c3fa3b177c046cf74974c45c32cd25e090600090a3505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061281157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661280560008051602061364e833981519152546001600160a01b031690565b6001600160a01b031614155b156125fc5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061362e8339815191526119db8161239f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156128a1575060408051601f3d908101601f1916820190925261289e9181019061321b565b60015b6128c05781604051634c9c8ce360e01b815260040161115191906132cd565b60008051602061364e83398151915281146128f157604051632a87526960e21b815260048101829052602401611151565b6112748383612a47565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146125fc5760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b03811661296b5760405163d92e233d60e01b815260040160405180910390fd5b600061297561232a565b6003810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f02a190d74141c632badc9d2cbb0eb33818f3b5f949c4e8ad29d80aa63a5537ac90600090a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6129f98282611c82565b6119db57808260405163e2517d3f60e01b81526004016111519291906135d6565b612a22612a9d565b6125fc57604051631afcd79f60e31b815260040160405180910390fd5b612319612a1a565b612a5082612ab7565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612a95576112748282612b13565b6119db612b89565b6000612aa76125d0565b54600160401b900460ff16919050565b806001600160a01b03163b600003612ae45780604051634c9c8ce360e01b815260040161115191906132cd565b60008051602061364e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b309190613611565b600060405180830381855af49150503d8060008114612b6b576040519150601f19603f3d011682016040523d82523d6000602084013e612b70565b606091505b5091509150612b80858383612ba8565b95945050505050565b34156125fc5760405163b398979f60e01b815260040160405180910390fd5b606082612bbd57612bb882612bfb565b610b51565b8151158015612bd457506001600160a01b0384163b155b15612bf45783604051639996b31560e01b815260040161115191906132cd565b5092915050565b805115612c0b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600060208284031215612c3657600080fd5b5035919050565b600060208284031215612c4f57600080fd5b81356001600160e01b031981168114610b5157600080fd5b6020808252825182820181905260009190848201906040850190845b81811015612ca85783516001600160a01b031683529284019291840191600101612c83565b50909695505050505050565b80356001600160a01b03811681146119bb57600080fd5b60008060408385031215612cde57600080fd5b82359150612cee60208401612cb4565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60028110612d1d57612d1d612cf7565b9052565b60058110612d1d57612d1d612cf7565b6004811061097b5761097b612cf7565b612d1d81612d31565b60005b83811015612d65578181015183820152602001612d4d565b50506000910152565b60008151808452612d86816020860160208601612d4a565b601f01601f19169290920160200192915050565b602081528151602082015260006020830151612db96040840182612d0d565b506040830151612dcc6060840182612d0d565b506060830151612ddf6080840182612d0d565b506080830151612df260a0840182612d21565b5060a0830151612e0560c0840182612d41565b5060c08301516001600160a01b03811660e08401525060e083015161010083810191909152830151610120808401919091528301516101408084019190915283015161016080840191909152830151610180808401919091528301516101a0808401919091528301516101c0808401919091528301516101e080840191909152830151610200612e988185018315159052565b840151610220848101919091528401516102408085019190915284015161026080850191909152840151610280808501919091528401516102a0808501919091528401516102c0808501919091528401516102e08085019190915284015161030080850191909152840151610320808501919091528401516103a061034080860182905291925090612f2e6103c0860184612d6e565b9250808601519050601f19610360818786030181880152612f4f8584612d6e565b945080880151925050610380818786030181880152612f6e8584612d6e565b908801518782039092018488015293509050612f8a8382612d6e565b9695505050505050565b600080600060408486031215612fa957600080fd5b8335925060208401356001600160401b0380821115612fc757600080fd5b818601915086601f830112612fdb57600080fd5b813581811115612fea57600080fd5b8760208260051b8501011115612fff57600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015612ca85783518352928401929184019160010161302e565b60006020828403121561305c57600080fd5b610b5182612cb4565b60008082840361018081121561307a57600080fd5b6101008082121561308a57600080fd5b849350608060ff198301121561309f57600080fd5b92959390920193505050565b6000602082840312156130bd57600080fd5b81356001600160401b038111156130d357600080fd5b82016101c08185031215610b5157600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561310f57600080fd5b61311883612cb4565b915060208301356001600160401b038082111561313457600080fd5b818501915085601f83011261314857600080fd5b81358181111561315a5761315a6130e6565b604051601f8201601f19908116603f01168101908382118183101715613182576131826130e6565b8160405282815288602084870101111561319b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b602081526000610b516020830184612d6e565b602081016131dd83612d31565b91905290565b602081016109af8284612d21565b6000806040838503121561320457600080fd5b61320d83612cb4565b946020939093013593505050565b60006020828403121561322d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109af576109af613234565b808201808211156109af576109af613234565b60006020828403121561328257600080fd5b815160ff81168114610b5157600080fd5b600181811c908216806132a757607f821691505b6020821081036132c757634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0391909116815260200190565b918252602082015260400190565b8183526000602080850194508260005b8581101561332b576001600160a01b0361331883612cb4565b16875295820195908201906001016132ff565b509495945050505050565b838152604060208201526000612b806040830184866132ef565b8035600281106119bb57600080fd5b6000808335601e1984360301811261337657600080fd5b83016020810192503590506001600160401b0381111561339557600080fd5b8060051b36038213156133a757600080fd5b9250929050565b81835260006001600160fb1b038311156133c757600080fd5b8260051b80836020870137939093016020019392505050565b6000808335601e198436030181126133f757600080fd5b83016020810192503590506001600160401b0381111561341657600080fd5b8036038213156133a757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526134676020820161346284613350565b612d0d565b600061347560208401613350565b6134826040840182612d0d565b5061348f60408401613350565b61349c6060840182612d0d565b5060608301356080830152608083013560a083015260a083013560c083015260c083013560e083015261010060e0840135818401526134dd8185018561335f565b91506101c061012081818701526134f96101e0870185856133ae565b93506135078188018861335f565b93509050601f196101408188870301818901526135258686856132ef565b9550613533818a018a6133e0565b955092505061016081888703018189015261354f868685613425565b955061355d818a018a6133e0565b9550925050610180818887030181890152613579868685613425565b9550613587818a018a6133e0565b95509250506101a08188870301818901526135a3868685613425565b95506135b1818a018a6133e0565b9550925050808786030183880152506135cb848483613425565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561360157600080fd5b81518015158114610b5157600080fd5b60008251613623818460208701612d4a565b919091019291505056fe189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcdfc0438b5754beb343462ff330f73266ff7457fdf879dfb68c958ccbe15765f3280335b2726d1c2b1770ba289d3de2cebd2f55c641e93c7e77d033cadab1b06b2294a958ea1cb2569bfbdbd8a8e8502b08b8a71ea5134d264f97f07ef7f8a8e856af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b743f71dfd216eaaf2f75bdb23d66ae4f5b7e2975e422538b68ef11b46b3874098a264697066735822122046da9a205b8774131e7ff18a2341def0d961084cedcc65164dd5377eb7f125e964736f6c63430008140033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x20 PUSH3 0x26 JUMP JUMPDEST PUSH3 0xDA JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH3 0xD7 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x3743 PUSH3 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x2795 ADD MSTORE DUP2 DUP2 PUSH2 0x27BE ADD MSTORE PUSH2 0x2906 ADD MSTORE PUSH2 0x3743 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x24E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x12462A EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x23BF958 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x39DDCA9 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x14CF9077 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x1BDD4B74 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x21C688FA EQ PUSH2 0x352 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0x24924BF7 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x262AD80B EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x2B5ADC1E EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x2BF7299B EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0x3800FF4D EQ PUSH2 0x454 JUMPI DUP1 PUSH4 0x3BB18A76 EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0x3CC376BB EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0x47B0B33E EQ PUSH2 0x4B4 JUMPI DUP1 PUSH4 0x4A6FF70B EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0x4CAF6D5F EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x514 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x5DE5720F EQ PUSH2 0x56F JUMPI DUP1 PUSH4 0x67FC8C89 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0x6C188593 EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0x81363AEB EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0x832C8BC6 EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0x87D30164 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x87D6E213 EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x669 JUMPI DUP1 PUSH4 0x952F2133 EQ PUSH2 0x689 JUMPI DUP1 PUSH4 0xA0427700 EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x6CB JUMPI DUP1 PUSH4 0xA2F05725 EQ PUSH2 0x6E0 JUMPI DUP1 PUSH4 0xA41483E3 EQ PUSH2 0x6F5 JUMPI DUP1 PUSH4 0xA7817BBC EQ PUSH2 0x715 JUMPI DUP1 PUSH4 0xA934718C EQ PUSH2 0x735 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x755 JUMPI DUP1 PUSH4 0xB30F0584 EQ PUSH2 0x786 JUMPI DUP1 PUSH4 0xB58BD356 EQ PUSH2 0x7A6 JUMPI DUP1 PUSH4 0xC048F6C9 EQ PUSH2 0x7C6 JUMPI DUP1 PUSH4 0xCB3E0D2B EQ PUSH2 0x7E6 JUMPI DUP1 PUSH4 0xCF33E76C EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0xD2177BDD EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0xE448EE26 EQ PUSH2 0x85B JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0x89B JUMPI DUP1 PUSH4 0xF7806522 EQ PUSH2 0x8BD JUMPI DUP1 PUSH4 0xFA7626D0 EQ PUSH2 0x8D2 JUMPI DUP1 PUSH4 0xFA968EEA EQ PUSH2 0x8F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x909 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x290 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C3D JUMP JUMPDEST PUSH2 0x97E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x2C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x2C67 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0xA41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x312 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0xACB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH2 0x340 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0xB58 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x2D9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x36D CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x10FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x11C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x11E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F94 JUMP JUMPDEST PUSH2 0x11F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E7 PUSH2 0x3E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1279 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x3012 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x40F CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x12FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x42F CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x13A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x44F CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x13CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x46F CALLDATASIZE PUSH1 0x4 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x13FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x4AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3065 JUMP JUMPDEST PUSH2 0x14C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x4CF CALLDATASIZE PUSH1 0x4 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1888 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x18E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x50F CALLDATASIZE PUSH1 0x4 PUSH2 0x30AB JUMP JUMPDEST PUSH2 0x192F JUMP JUMPDEST PUSH2 0x273 PUSH2 0x522 CALLDATASIZE PUSH1 0x4 PUSH2 0x30FC JUMP JUMPDEST PUSH2 0x19C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x19DF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x19 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x31BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x58A CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x19FC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1A86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x5CA CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1AC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5EF PUSH2 0x5EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x1B25 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x31D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x61C PUSH2 0x617 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1B6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x31E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x644 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x1BF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x664 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1C40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x684 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x1C82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x6C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1CB8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x1CF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x710 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1D0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x730 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1D4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x750 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1D8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x562 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x61C PUSH2 0x7A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1E3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x7C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1ECD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x7E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1F0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x801 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1F6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x821 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1FB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x203A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x856 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x204D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x876 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x2069 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x896 CALLDATASIZE PUSH1 0x4 PUSH2 0x31F1 JUMP JUMPDEST PUSH2 0x20A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x362E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x22BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x22D0 JUMP JUMPDEST PUSH2 0x911 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x92315 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH3 0x12462A SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x96F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x97B PUSH2 0x2319 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x9AF JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x9C1 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x9D1 DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xB ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA16 JUMPI JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xA4D PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0xA5D DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xE ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA16 JUMPI POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x14CF9077 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x0 SWAP1 PUSH4 0x14CF9077 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB51 SWAP2 SWAP1 PUSH2 0x321B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC3F PUSH1 0x40 DUP1 MLOAD PUSH2 0x3A0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC49 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0xC59 DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 DUP3 ADD SLOAD SWAP2 SWAP3 SWAP2 PUSH2 0xC80 SWAP2 SWAP1 PUSH2 0x324A JUMP JUMPDEST PUSH2 0xC8B SWAP1 PUSH1 0x1 PUSH2 0x325D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x3A0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP7 DUP2 MSTORE DUP4 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCB9 JUMPI PUSH2 0xCB9 PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE DUP4 SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCDC JUMPI PUSH2 0xCDC PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE DUP4 SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xD00 JUMPI PUSH2 0xD00 PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH20 0x0 PUSH4 0x9ED14864 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD3E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xD5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD7F SWAP2 SWAP1 PUSH2 0x3270 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xD93 JUMPI PUSH2 0xD93 PUSH2 0x2CF7 JUMP JUMPDEST PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xDA4 JUMPI PUSH2 0xDA4 PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE DUP4 SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xDC9 JUMPI PUSH2 0xDC9 PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE DUP4 SLOAD PUSH1 0x1 PUSH1 0x30 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 DUP6 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 DUP6 ADD SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x5 DUP6 ADD SLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xE DUP6 ADD SLOAD PUSH2 0x100 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 DUP7 ADD SLOAD PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x28 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x7 DUP6 ADD SLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xB DUP6 ADD SLOAD PUSH2 0x180 DUP4 ADD MSTORE PUSH1 0xC DUP6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE PUSH1 0xD DUP6 ADD SLOAD PUSH2 0x1C0 DUP4 ADD MSTORE PUSH1 0xF DUP6 ADD SLOAD PUSH2 0x1E0 DUP4 ADD MSTORE PUSH2 0x200 DUP3 ADD MSTORE PUSH1 0x8 DUP5 ADD SLOAD PUSH2 0x220 DUP3 ADD MSTORE PUSH1 0x9 DUP5 ADD SLOAD PUSH2 0x240 DUP3 ADD MSTORE PUSH1 0xA DUP5 ADD SLOAD PUSH2 0x260 DUP3 ADD MSTORE PUSH1 0x10 DUP5 ADD DUP1 SLOAD PUSH2 0x280 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xEBA SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xEE6 SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF33 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF08 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF33 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF16 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x11 ADD DUP1 SLOAD PUSH2 0xF4C SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF78 SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xFC5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF9A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFC5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xFA8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x12 ADD DUP1 SLOAD PUSH2 0xFDE SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x100A SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1057 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x102C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1057 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x103A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x13 ADD DUP1 SLOAD PUSH2 0x1070 SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x109C SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10E9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10BE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10E9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x10CC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1103 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x111C DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI POP PUSH2 0x112F PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x115A JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 SUB PUSH2 0x117B JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1185 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x5 DUP2 ADD DUP1 SLOAD SWAP1 DUP6 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36AE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x11B3 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP PUSH2 0x97B PUSH2 0x2319 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11D1 PUSH2 0x237B JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11F0 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1201 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x262AD80B PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x262AD80B SWAP1 PUSH2 0x123C SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3336 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1268 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1274 PUSH2 0x2319 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1285 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1295 DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xF ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x12DA JUMPI POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1302 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x131B DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1330 JUMPI POP PUSH2 0x132E PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1350 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST DUP2 PUSH1 0x0 SUB PUSH2 0x1371 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x137B PUSH2 0x232A JUMP JUMPDEST PUSH1 0x7 DUP2 ADD DUP1 SLOAD SWAP1 DUP6 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36EE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x11B3 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH2 0x13B2 DUP3 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x13BB DUP2 PUSH2 0x239F JUMP JUMPDEST PUSH2 0x13C5 DUP4 DUP4 PUSH2 0x23A9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x13F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1274 DUP3 DUP3 PUSH2 0x244A JUMP JUMPDEST PUSH2 0x1406 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x141F DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1434 JUMPI POP PUSH2 0x1432 PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1454 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x24C2 JUMP JUMPDEST POP PUSH2 0x97B PUSH2 0x2319 JUMP JUMPDEST PUSH2 0x146E PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1487 DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x149C JUMPI POP PUSH2 0x149A PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x14BC JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x2549 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF PUSH2 0x25D0 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x14F6 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1512 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1520 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x153E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x1567 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x1576 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x15A3 JUMPI POP PUSH1 0x0 PUSH2 0x1598 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x15C6 JUMPI POP PUSH1 0x0 PUSH2 0x15BB PUSH1 0x60 DUP9 ADD PUSH1 0x40 DUP10 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x15E9 JUMPI POP PUSH1 0x0 PUSH2 0x15DE PUSH1 0x80 DUP9 ADD PUSH1 0x60 DUP10 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1609 JUMPI POP PUSH1 0x0 PUSH2 0x15FE PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x162C JUMPI POP PUSH1 0x0 PUSH2 0x1621 PUSH1 0x40 DUP10 ADD PUSH1 0x20 DUP11 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x164F JUMPI POP PUSH1 0x0 PUSH2 0x1644 PUSH1 0x60 DUP10 ADD PUSH1 0x40 DUP11 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1672 JUMPI POP PUSH1 0x0 PUSH2 0x1667 PUSH1 0x80 DUP10 ADD PUSH1 0x60 DUP11 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1690 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x80 DUP8 ADD CALLDATALOAD ISZERO DUP1 PUSH2 0x16A3 JUMPI POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD ISZERO JUMPDEST DUP1 PUSH2 0x16B0 JUMPI POP PUSH1 0xC0 DUP8 ADD CALLDATALOAD ISZERO JUMPDEST DUP1 PUSH2 0x16BD JUMPI POP PUSH1 0xE0 DUP8 ADD CALLDATALOAD ISZERO JUMPDEST ISZERO PUSH2 0x16DB JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x16E3 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x16EB PUSH2 0x25FE JUMP JUMPDEST PUSH2 0x16F3 PUSH2 0x25F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FD PUSH2 0x232A JUMP JUMPDEST PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x4 DUP3 ADD SSTORE PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0x5 DUP3 ADD SSTORE PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH1 0x7 DUP3 ADD SSTORE SWAP1 POP PUSH2 0x172A PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x260E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x368E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 DUP10 PUSH1 0x80 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH2 0x174E SWAP3 SWAP2 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36AE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 DUP10 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH2 0x177A SWAP3 SWAP2 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36EE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 DUP10 PUSH1 0xC0 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH2 0x17A6 SWAP3 SWAP2 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x17F3 PUSH2 0x17BE PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x17CE PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x17DE PUSH1 0x60 DUP13 ADD PUSH1 0x40 DUP14 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x17EE PUSH1 0x80 DUP14 ADD PUSH1 0x60 DUP15 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x2686 JUMP JUMPDEST PUSH2 0x1838 PUSH2 0x1803 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1813 PUSH1 0x40 DUP11 ADD PUSH1 0x20 DUP12 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1823 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1833 PUSH1 0x80 DUP13 ADD PUSH1 0x60 DUP14 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x26AA JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x187F JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1890 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x18A9 DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x18BE JUMPI POP PUSH2 0x18BC PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x18DE JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x2707 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18F2 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1902 DUP5 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0xA ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1939 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x38399695 PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xE0E65A54 SWAP1 PUSH2 0x1970 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x344E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x198D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19B1 SWAP2 SWAP1 PUSH2 0x321B JUMP JUMPDEST SWAP1 POP PUSH2 0x19BB PUSH2 0x2319 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x19C8 PUSH2 0x278A JUMP JUMPDEST PUSH2 0x19D1 DUP3 PUSH2 0x282F JUMP JUMPDEST PUSH2 0x19DB DUP3 DUP3 PUSH2 0x2847 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19E9 PUSH2 0x28FB JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x364E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1A08 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1A18 DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xC ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA16 JUMPI POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1A8E PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x67FC8C89 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x67FC8C89 SWAP1 PUSH1 0x24 ADD PUSH2 0x943 JUMP JUMPDEST PUSH2 0x1ACE PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AE7 DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1AFC JUMPI POP PUSH2 0x1AFA PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1B1C JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x260E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B30 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1B40 DUP5 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x27B45219 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x0 SWAP1 PUSH4 0x9ED14864 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1BC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BE4 SWAP2 SWAP1 PUSH2 0x3270 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x9AF JUMPI PUSH2 0x9AF PUSH2 0x2CF7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C03 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1C13 DUP5 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x11 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C4A PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x87D6E213 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x87D6E213 SWAP1 PUSH1 0x24 ADD PUSH2 0x1970 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C8D PUSH2 0x237B JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CC2 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA04277 PUSH1 0xE8 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xA0427700 SWAP1 PUSH1 0x24 ADD PUSH2 0x1970 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D03 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x6 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1D14 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA41483E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xA41483E3 SWAP1 PUSH1 0x24 ADD PUSH2 0x943 JUMP JUMPDEST PUSH2 0x1D54 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x29E05EEF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xA7817BBC SWAP1 PUSH1 0x24 ADD PUSH2 0x943 JUMP JUMPDEST PUSH2 0x1D94 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1DAD DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1DC2 JUMPI POP PUSH2 0x1DC0 PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1DE2 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST DUP2 PUSH1 0x0 SUB PUSH2 0x1E03 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E0D PUSH2 0x232A JUMP JUMPDEST PUSH1 0x4 DUP2 ADD DUP1 SLOAD SWAP1 DUP6 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x368E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x11B3 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E45 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1E95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EB9 SWAP2 SWAP1 PUSH2 0x3270 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x19B1 JUMPI PUSH2 0x19B1 PUSH2 0x2CF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ED7 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5AC5E9AB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB58BD356 SWAP1 PUSH1 0x24 ADD PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x1F17 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F30 DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1F45 JUMPI POP PUSH2 0x1F43 PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1F65 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x2944 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F78 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCB3E0D2B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xCB3E0D2B SWAP1 PUSH1 0x24 ADD PUSH2 0x1970 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1FBC PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1FCC DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xD ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA16 JUMPI POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2044 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x4 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2056 DUP3 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x205F DUP2 PUSH2 0x239F JUMP JUMPDEST PUSH2 0x13C5 DUP4 DUP4 PUSH2 0x244A JUMP JUMPDEST PUSH2 0x2071 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x72247713 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xE448EE26 SWAP1 PUSH1 0x24 ADD PUSH2 0x943 JUMP JUMPDEST PUSH2 0x20B1 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20BD DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x20D2 JUMPI POP PUSH2 0x20D0 PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x20F2 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2119 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 SUB PUSH2 0x213A JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2144 PUSH2 0x232A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2179 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2196 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21BA SWAP2 SWAP1 PUSH2 0x321B JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x21E1 JUMPI DUP1 DUP5 PUSH1 0x40 MLOAD PUSH4 0x4720F4B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP3 SWAP2 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2212 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x35D6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2231 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2255 SWAP2 SWAP1 PUSH2 0x35EF JUMP JUMPDEST PUSH2 0x2272 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 CALLER SWAP1 PUSH32 0x8B192DC173E314B16D9067E45C2AFBDCDC1713FC4FE1A95AFF9076249648ABC0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH2 0x19DB PUSH2 0x2319 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22C7 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x5 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22DA PUSH2 0x232A JUMP JUMPDEST PUSH1 0x10 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22ED PUSH2 0x29CB JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x2313 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2323 PUSH2 0x29CB JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x4602C7A79EAC2C186A5049FA18AA513E24B689A1ED3277F24B1E5B426612D100 SWAP1 JUMP JUMPDEST DUP2 ISZERO DUP1 PUSH2 0x235A JUMPI POP DUP1 DUP3 GT JUMPDEST ISZERO PUSH2 0x19DB JUMPI PUSH1 0x40 MLOAD PUSH4 0x5BAFAFD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1151 JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH2 0x97B DUP2 CALLER PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23B4 PUSH2 0x237B JUMP JUMPDEST SWAP1 POP PUSH2 0x23C0 DUP5 DUP5 PUSH2 0x1C82 JUMP JUMPDEST PUSH2 0x2440 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x23F6 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2455 PUSH2 0x237B JUMP JUMPDEST SWAP1 POP PUSH2 0x2461 DUP5 DUP5 PUSH2 0x1C82 JUMP JUMPDEST ISZERO PUSH2 0x2440 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x24E9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x24F3 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 POP AND SWAP2 DUP3 SWAP1 PUSH32 0xD260589E8955F4324723F68C9C004AFE08C82D5790F93946BBF95F6EBCAB5347 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2570 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x257A PUSH2 0x232A JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 POP AND SWAP2 DUP3 SWAP1 PUSH32 0x897ACAEC25783CE4CF8FF29C16715E089A40D285E2E5D6FCF567AF00F4714259 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x25FC PUSH2 0x2A1A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2606 PUSH2 0x2A1A JUMP JUMPDEST PUSH2 0x25FC PUSH2 0x2A3F JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x262F JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2639 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x10 DUP2 ADD DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH32 0x82480E97991520549AC4B5D0E1D97EDB3BFAC2666202923B6903D2A953DC7608 SWAP1 PUSH2 0x2679 SWAP1 DUP4 SWAP1 DUP7 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x268F DUP5 PUSH2 0x2707 JUMP JUMPDEST PUSH2 0x2698 DUP4 PUSH2 0x24C2 JUMP JUMPDEST PUSH2 0x26A1 DUP3 PUSH2 0x2549 JUMP JUMPDEST PUSH2 0x13C5 DUP2 PUSH2 0x2944 JUMP JUMPDEST PUSH2 0x26B5 PUSH1 0x0 DUP6 PUSH2 0x23A9 JUMP JUMPDEST POP PUSH2 0x26CE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x362E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x23A9 JUMP JUMPDEST POP PUSH2 0x26E7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x23A9 JUMP JUMPDEST POP PUSH2 0x2700 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH2 0x23A9 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x272E JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2738 PUSH2 0x232A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 POP SWAP2 AND SWAP2 DUP3 SWAP1 PUSH32 0xB3061A8192D243178B0FD92D1809BC86C3FA3B177C046CF74974C45C32CD25E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2811 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2805 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x364E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x25FC JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x362E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x19DB DUP2 PUSH2 0x239F JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x28A1 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x289E SWAP2 DUP2 ADD SWAP1 PUSH2 0x321B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x28C0 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x364E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x28F1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1151 JUMP JUMPDEST PUSH2 0x1274 DUP4 DUP4 PUSH2 0x2A47 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x25FC JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x296B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2975 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 POP AND SWAP2 DUP3 SWAP1 PUSH32 0x2A190D74141C632BADC9D2CBB0EB33818F3B5F949C4E8AD29D80AA63A5537AC SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH2 0x29F9 DUP3 DUP3 PUSH2 0x1C82 JUMP JUMPDEST PUSH2 0x19DB JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP3 SWAP2 SWAP1 PUSH2 0x35D6 JUMP JUMPDEST PUSH2 0x2A22 PUSH2 0x2A9D JUMP JUMPDEST PUSH2 0x25FC JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2319 PUSH2 0x2A1A JUMP JUMPDEST PUSH2 0x2A50 DUP3 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x2A95 JUMPI PUSH2 0x1274 DUP3 DUP3 PUSH2 0x2B13 JUMP JUMPDEST PUSH2 0x19DB PUSH2 0x2B89 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA7 PUSH2 0x25D0 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x2AE4 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x364E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2B30 SWAP2 SWAP1 PUSH2 0x3611 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2B6B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2B70 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2B80 DUP6 DUP4 DUP4 PUSH2 0x2BA8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x25FC JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x2BBD JUMPI PUSH2 0x2BB8 DUP3 PUSH2 0x2BFB JUMP JUMPDEST PUSH2 0xB51 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2BD4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2BF4 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2C0B JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2CA8 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2C83 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x19BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2CEE PUSH1 0x20 DUP5 ADD PUSH2 0x2CB4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x2D1D JUMPI PUSH2 0x2D1D PUSH2 0x2CF7 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x5 DUP2 LT PUSH2 0x2D1D JUMPI PUSH2 0x2D1D PUSH2 0x2CF7 JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x97B JUMPI PUSH2 0x97B PUSH2 0x2CF7 JUMP JUMPDEST PUSH2 0x2D1D DUP2 PUSH2 0x2D31 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D65 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2D4D JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2D86 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2D4A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x2DB9 PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x2DCC PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x2DDF PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x2DF2 PUSH1 0xA0 DUP5 ADD DUP3 PUSH2 0x2D21 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x2E05 PUSH1 0xC0 DUP5 ADD DUP3 PUSH2 0x2D41 JUMP JUMPDEST POP PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x100 DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x120 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x140 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x160 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x180 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x1A0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x1C0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x1E0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x200 PUSH2 0x2E98 DUP2 DUP6 ADD DUP4 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST DUP5 ADD MLOAD PUSH2 0x220 DUP5 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x240 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x260 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x280 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x2A0 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x2C0 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x2E0 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x300 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x320 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x3A0 PUSH2 0x340 DUP1 DUP7 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 PUSH2 0x2F2E PUSH2 0x3C0 DUP7 ADD DUP5 PUSH2 0x2D6E JUMP JUMPDEST SWAP3 POP DUP1 DUP7 ADD MLOAD SWAP1 POP PUSH1 0x1F NOT PUSH2 0x360 DUP2 DUP8 DUP7 SUB ADD DUP2 DUP9 ADD MSTORE PUSH2 0x2F4F DUP6 DUP5 PUSH2 0x2D6E JUMP JUMPDEST SWAP5 POP DUP1 DUP9 ADD MLOAD SWAP3 POP POP PUSH2 0x380 DUP2 DUP8 DUP7 SUB ADD DUP2 DUP9 ADD MSTORE PUSH2 0x2F6E DUP6 DUP5 PUSH2 0x2D6E JUMP JUMPDEST SWAP1 DUP9 ADD MLOAD DUP8 DUP3 SUB SWAP1 SWAP3 ADD DUP5 DUP9 ADD MSTORE SWAP4 POP SWAP1 POP PUSH2 0x2F8A DUP4 DUP3 PUSH2 0x2D6E JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2FA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2FC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2FDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2FEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2CA8 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x302E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x305C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB51 DUP3 PUSH2 0x2CB4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x180 DUP2 SLT ISZERO PUSH2 0x307A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x100 DUP1 DUP3 SLT ISZERO PUSH2 0x308A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 SWAP4 POP PUSH1 0x80 PUSH1 0xFF NOT DUP4 ADD SLT ISZERO PUSH2 0x309F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP6 SWAP4 SWAP1 SWAP3 ADD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x30D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x1C0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x310F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3118 DUP4 PUSH2 0x2CB4 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x315A JUMPI PUSH2 0x315A PUSH2 0x30E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3182 JUMPI PUSH2 0x3182 PUSH2 0x30E6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x319B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB51 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D6E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x31DD DUP4 PUSH2 0x2D31 JUMP JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x9AF DUP3 DUP5 PUSH2 0x2D21 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x320D DUP4 PUSH2 0x2CB4 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9AF JUMPI PUSH2 0x9AF PUSH2 0x3234 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9AF JUMPI PUSH2 0x9AF PUSH2 0x3234 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x32A7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x32C7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x332B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3318 DUP4 PUSH2 0x2CB4 JUMP JUMPDEST AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x32FF JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2B80 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x32EF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x19BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x3376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x20 DUP2 ADD SWAP3 POP CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x5 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x33A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFB SHL SUB DUP4 GT ISZERO PUSH2 0x33C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x5 SHL DUP1 DUP4 PUSH1 0x20 DUP8 ADD CALLDATACOPY SWAP4 SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x33F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x20 DUP2 ADD SWAP3 POP CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x33A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH2 0x3467 PUSH1 0x20 DUP3 ADD PUSH2 0x3462 DUP5 PUSH2 0x3350 JUMP JUMPDEST PUSH2 0x2D0D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3475 PUSH1 0x20 DUP5 ADD PUSH2 0x3350 JUMP JUMPDEST PUSH2 0x3482 PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH2 0x348F PUSH1 0x40 DUP5 ADD PUSH2 0x3350 JUMP JUMPDEST PUSH2 0x349C PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 PUSH1 0xE0 DUP5 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE PUSH2 0x34DD DUP2 DUP6 ADD DUP6 PUSH2 0x335F JUMP JUMPDEST SWAP2 POP PUSH2 0x1C0 PUSH2 0x120 DUP2 DUP2 DUP8 ADD MSTORE PUSH2 0x34F9 PUSH2 0x1E0 DUP8 ADD DUP6 DUP6 PUSH2 0x33AE JUMP JUMPDEST SWAP4 POP PUSH2 0x3507 DUP2 DUP9 ADD DUP9 PUSH2 0x335F JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x1F NOT PUSH2 0x140 DUP2 DUP9 DUP8 SUB ADD DUP2 DUP10 ADD MSTORE PUSH2 0x3525 DUP7 DUP7 DUP6 PUSH2 0x32EF JUMP JUMPDEST SWAP6 POP PUSH2 0x3533 DUP2 DUP11 ADD DUP11 PUSH2 0x33E0 JUMP JUMPDEST SWAP6 POP SWAP3 POP POP PUSH2 0x160 DUP2 DUP9 DUP8 SUB ADD DUP2 DUP10 ADD MSTORE PUSH2 0x354F DUP7 DUP7 DUP6 PUSH2 0x3425 JUMP JUMPDEST SWAP6 POP PUSH2 0x355D DUP2 DUP11 ADD DUP11 PUSH2 0x33E0 JUMP JUMPDEST SWAP6 POP SWAP3 POP POP PUSH2 0x180 DUP2 DUP9 DUP8 SUB ADD DUP2 DUP10 ADD MSTORE PUSH2 0x3579 DUP7 DUP7 DUP6 PUSH2 0x3425 JUMP JUMPDEST SWAP6 POP PUSH2 0x3587 DUP2 DUP11 ADD DUP11 PUSH2 0x33E0 JUMP JUMPDEST SWAP6 POP SWAP3 POP POP PUSH2 0x1A0 DUP2 DUP9 DUP8 SUB ADD DUP2 DUP10 ADD MSTORE PUSH2 0x35A3 DUP7 DUP7 DUP6 PUSH2 0x3425 JUMP JUMPDEST SWAP6 POP PUSH2 0x35B1 DUP2 DUP11 ADD DUP11 PUSH2 0x33E0 JUMP JUMPDEST SWAP6 POP SWAP3 POP POP DUP1 DUP8 DUP7 SUB ADD DUP4 DUP9 ADD MSTORE POP PUSH2 0x35CB DUP5 DUP5 DUP4 PUSH2 0x3425 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3623 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2D4A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCDFC0438B5754BEB343462F RETURN ADDRESS 0xF7 ORIGIN PUSH7 0xFF7457FDF879DF 0xB6 DUP13 SWAP6 DUP13 0xCB 0xE1 JUMPI PUSH6 0xF3280335B272 PUSH14 0x1C2B1770BA289D3DE2CEBD2F55C6 COINBASE 0xE9 EXTCODECOPY PUSH31 0x77D033CADAB1B06B2294A958EA1CB2569BFBDBD8A8E8502B08B8A71EA5134D 0x26 0x4F SWAP8 CREATE PUSH31 0xF7F8A8E856AF926AA3845D4DC63A6C773ED36F51794728C97EBCD1BF845BCE 0xCB AND 0xEE 0xB6 0xB7 NUMBER 0xF7 SAR REVERT 0x21 PUSH15 0xAAF2F75BDB23D66AE4F5B7E2975E42 0x25 CODESIZE 0xB6 DUP15 CALL SHL CHAINID 0xB3 DUP8 BLOCKHASH SWAP9 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CHAINID 0xDA SWAP11 KECCAK256 JUMPDEST DUP8 PUSH21 0x131E7FF18A2341DEF0D961084CEDCC65164DD5377E 0xB7 CALL 0x25 0xE9 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"1421:16405:22:-:0;;;1171:4:2;1128:48;;1847:47:22;;;;;;;;;-1:-1:-1;1867:22:22;:20;:22::i;:::-;1421:16405;;7711:422:1;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:1;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:1;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:1;-1:-1:-1;;;;;8035:33:1;;;;;8087:29;;158:50:46;;;8087:29:1;;146:2:46;131:18;8087:29:1;;;;;;;7981:146;7760:373;7711:422::o;14:200:46:-;1421:16405:22;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@CONTRACTS_ADDRESS_MANAGER_ROLE_7079":{"entryPoint":null,"id":7079,"parameterSlots":0,"returnSlots":0},"@DEFAULT_ADMIN_ROLE_28":{"entryPoint":null,"id":28,"parameterSlots":0,"returnSlots":0},"@SETTINGS_MANAGER_ROLE_7084":{"entryPoint":null,"id":7084,"parameterSlots":0,"returnSlots":0},"@UPGRADER_ROLE_7074":{"entryPoint":null,"id":7074,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_640":{"entryPoint":null,"id":640,"parameterSlots":0,"returnSlots":0},"@__AccessControl_init_63":{"entryPoint":9716,"id":63,"parameterSlots":0,"returnSlots":0},"@__ReentrancyGuard_init_884":{"entryPoint":9726,"id":884,"parameterSlots":0,"returnSlots":0},"@__ReentrancyGuard_init_unchained_902":{"entryPoint":10815,"id":902,"parameterSlots":0,"returnSlots":0},"@__UUPSUpgradeable_init_670":{"entryPoint":null,"id":670,"parameterSlots":0,"returnSlots":0},"@_authorizeUpgrade_7316":{"entryPoint":10287,"id":7316,"parameterSlots":1,"returnSlots":0},"@_checkInitializing_538":{"entryPoint":10778,"id":538,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_1427":{"entryPoint":11145,"id":1427,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_746":{"entryPoint":10491,"id":746,"parameterSlots":0,"returnSlots":0},"@_checkProxy_730":{"entryPoint":10122,"id":730,"parameterSlots":0,"returnSlots":0},"@_checkRole_129":{"entryPoint":9119,"id":129,"parameterSlots":1,"returnSlots":0},"@_checkRole_150":{"entryPoint":10735,"id":150,"parameterSlots":2,"returnSlots":0},"@_ensureChallengeExists_8578":{"entryPoint":9038,"id":8578,"parameterSlots":2,"returnSlots":0},"@_getAccessControlStorage_46":{"entryPoint":9083,"id":46,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_615":{"entryPoint":9680,"id":615,"parameterSlots":0,"returnSlots":1},"@_getReentrancyGuardStorage_872":{"entryPoint":10699,"id":872,"parameterSlots":0,"returnSlots":1},"@_grantRole_315":{"entryPoint":9129,"id":315,"parameterSlots":2,"returnSlots":1},"@_initializeAddresses_8526":{"entryPoint":9862,"id":8526,"parameterSlots":4,"returnSlots":0},"@_initializeRoles_8558":{"entryPoint":9898,"id":8558,"parameterSlots":4,"returnSlots":0},"@_isInitializing_606":{"entryPoint":10909,"id":606,"parameterSlots":0,"returnSlots":1},"@_msgSender_826":{"entryPoint":null,"id":826,"parameterSlots":0,"returnSlots":1},"@_nonReentrantAfter_954":{"entryPoint":8985,"id":954,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBefore_938":{"entryPoint":8931,"id":938,"parameterSlots":0,"returnSlots":0},"@_revert_1917":{"entryPoint":11259,"id":1917,"parameterSlots":1,"returnSlots":0},"@_revokeRole_361":{"entryPoint":9290,"id":361,"parameterSlots":2,"returnSlots":1},"@_setB3TRAddress_8322":{"entryPoint":9991,"id":8322,"parameterSlots":1,"returnSlots":0},"@_setImplementation_1213":{"entryPoint":10935,"id":1213,"parameterSlots":1,"returnSlots":0},"@_setMinBetAmount_8498":{"entryPoint":9742,"id":8498,"parameterSlots":1,"returnSlots":0},"@_setVeBetterPassportAddress_8368":{"entryPoint":9410,"id":8368,"parameterSlots":1,"returnSlots":0},"@_setX2EarnAppsAddress_8460":{"entryPoint":10564,"id":8460,"parameterSlots":1,"returnSlots":0},"@_setXAllocationVotingAddress_8414":{"entryPoint":9545,"id":8414,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_797":{"entryPoint":10311,"id":797,"parameterSlots":2,"returnSlots":0},"@addInvites_7827":{"entryPoint":4601,"id":7827,"parameterSlots":3,"returnSlots":0},"@cancelChallenge_7887":{"entryPoint":7436,"id":7887,"parameterSlots":1,"returnSlots":0},"@challengeCount_7337":{"entryPoint":7417,"id":7337,"parameterSlots":0,"returnSlots":1},"@claimChallengePayout_7938":{"entryPoint":7232,"id":7938,"parameterSlots":1,"returnSlots":1},"@claimChallengeRefund_7986":{"entryPoint":7885,"id":7986,"parameterSlots":1,"returnSlots":1},"@claimCreatorSplitWinRefund_7970":{"entryPoint":8046,"id":7970,"parameterSlots":1,"returnSlots":1},"@claimSplitWinPrize_7954":{"entryPoint":7352,"id":7954,"parameterSlots":1,"returnSlots":1},"@completeChallenge_7922":{"entryPoint":7500,"id":7922,"parameterSlots":1,"returnSlots":0},"@createChallenge_7808":{"entryPoint":6447,"id":7808,"parameterSlots":1,"returnSlots":1},"@declineChallenge_7872":{"entryPoint":2313,"id":7872,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_1837":{"entryPoint":11027,"id":1837,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1950":{"entryPoint":null,"id":1950,"parameterSlots":1,"returnSlots":1},"@getChallengeDeclined_7612":{"entryPoint":8112,"id":7612,"parameterSlots":1,"returnSlots":1},"@getChallengeInvited_7581":{"entryPoint":6652,"id":7581,"parameterSlots":1,"returnSlots":1},"@getChallengeParticipants_7550":{"entryPoint":2485,"id":7550,"parameterSlots":1,"returnSlots":1},"@getChallengeSelectedApps_7643":{"entryPoint":4729,"id":7643,"parameterSlots":1,"returnSlots":1},"@getChallengeStatus_7519":{"entryPoint":7021,"id":7519,"parameterSlots":1,"returnSlots":1},"@getChallengeWinners_7674":{"entryPoint":2625,"id":7674,"parameterSlots":1,"returnSlots":1},"@getChallenge_7501":{"entryPoint":2904,"id":7501,"parameterSlots":1,"returnSlots":1},"@getChallengesStorage_12654":{"entryPoint":9002,"id":12654,"parameterSlots":0,"returnSlots":1},"@getImplementation_1186":{"entryPoint":null,"id":1186,"parameterSlots":0,"returnSlots":1},"@getParticipantActions_7791":{"entryPoint":2763,"id":7791,"parameterSlots":2,"returnSlots":1},"@getParticipantStatus_7708":{"entryPoint":6949,"id":7708,"parameterSlots":2,"returnSlots":1},"@getRoleAdmin_171":{"entryPoint":4550,"id":171,"parameterSlots":1,"returnSlots":1},"@grantRole_190":{"entryPoint":5033,"id":190,"parameterSlots":2,"returnSlots":0},"@hasRole_116":{"entryPoint":7298,"id":116,"parameterSlots":2,"returnSlots":1},"@initialize_7280":{"entryPoint":5317,"id":7280,"parameterSlots":2,"returnSlots":0},"@isInvitationEligible_7741":{"entryPoint":6375,"id":7741,"parameterSlots":2,"returnSlots":1},"@isSplitWinWinner_7774":{"entryPoint":7160,"id":7774,"parameterSlots":2,"returnSlots":1},"@joinChallenge_7842":{"entryPoint":8297,"id":7842,"parameterSlots":1,"returnSlots":0},"@leaveChallenge_7857":{"entryPoint":6790,"id":7857,"parameterSlots":1,"returnSlots":0},"@maxChallengeDuration_7349":{"entryPoint":8250,"id":7349,"parameterSlots":0,"returnSlots":1},"@maxParticipants_7373":{"entryPoint":4582,"id":7373,"parameterSlots":0,"returnSlots":1},"@maxSelectedApps_7361":{"entryPoint":8893,"id":7361,"parameterSlots":0,"returnSlots":1},"@minBetAmount_7385":{"entryPoint":8912,"id":7385,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_688":{"entryPoint":6623,"id":688,"parameterSlots":0,"returnSlots":1},"@renounceRole_232":{"entryPoint":5067,"id":232,"parameterSlots":2,"returnSlots":0},"@revokeRole_209":{"entryPoint":8269,"id":209,"parameterSlots":2,"returnSlots":0},"@setB3TRAddress_8080":{"entryPoint":6280,"id":8080,"parameterSlots":1,"returnSlots":0},"@setMaxChallengeDuration_8172":{"entryPoint":7564,"id":8172,"parameterSlots":1,"returnSlots":0},"@setMaxParticipants_8260":{"entryPoint":4858,"id":8260,"parameterSlots":1,"returnSlots":0},"@setMaxSelectedApps_8216":{"entryPoint":4347,"id":8216,"parameterSlots":1,"returnSlots":0},"@setMinBetAmount_8276":{"entryPoint":6854,"id":8276,"parameterSlots":1,"returnSlots":0},"@setVeBetterPassportAddress_8096":{"entryPoint":5118,"id":8096,"parameterSlots":1,"returnSlots":0},"@setX2EarnAppsAddress_8128":{"entryPoint":7951,"id":8128,"parameterSlots":1,"returnSlots":0},"@setXAllocationVotingAddress_8112":{"entryPoint":5222,"id":8112,"parameterSlots":1,"returnSlots":0},"@supportsInterface_1012":{"entryPoint":null,"id":1012,"parameterSlots":1,"returnSlots":1},"@supportsInterface_91":{"entryPoint":2430,"id":91,"parameterSlots":1,"returnSlots":1},"@syncChallenge_7907":{"entryPoint":7739,"id":7907,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_1247":{"entryPoint":10823,"id":1247,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_708":{"entryPoint":6592,"id":708,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1877":{"entryPoint":11176,"id":1877,"parameterSlots":3,"returnSlots":1},"@version_7325":{"entryPoint":null,"id":7325,"parameterSlots":0,"returnSlots":1},"@withdraw_8064":{"entryPoint":8361,"id":8064,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":11444,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_enum_ChallengeKind":{"entryPoint":13136,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":12362,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":12540,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":12785,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":13807,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":11325,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_CreateChallengeParams_$12717_calldata_ptr":{"entryPoint":12459,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_InitializationData_$12734_calldata_ptrt_struct$_InitializationRoleData_$12743_calldata_ptr":{"entryPoint":12389,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":11300,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":12827,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":11467,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_array$_t_address_$dyn_calldata_ptr":{"entryPoint":12180,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":12912,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_address_dyn_calldata":{"entryPoint":13039,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_bytes32_dyn_calldata":{"entryPoint":13230,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_ChallengeKind":{"entryPoint":11533,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_ChallengeStatus":{"entryPoint":11553,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_SettlementMode":{"entryPoint":11585,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":11630,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_calldata":{"entryPoint":13349,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":13841,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":13005,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":13782,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":11367,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":12306,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_ChallengeStatus_$12673__to_t_uint8__fromStack_reversed":{"entryPoint":12771,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_ParticipantStatus_$12683__to_t_uint8__fromStack_reversed":{"entryPoint":12752,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12733,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_ChallengeView_$12870_memory_ptr__to_t_struct$_ChallengeView_$12870_memory_ptr__fromStack_reversed":{"entryPoint":11674,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_CreateChallengeParams_$12717_calldata_ptr__to_t_struct$_CreateChallengeParams_$12717_memory_ptr__fromStack_library_reversed":{"entryPoint":13390,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_calldata_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_library_reversed":{"entryPoint":13110,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":13025,"id":null,"parameterSlots":3,"returnSlots":1},"calldata_access_array_bytes32_dyn_calldata":{"entryPoint":13151,"id":null,"parameterSlots":2,"returnSlots":2},"calldata_access_string_calldata":{"entryPoint":13280,"id":null,"parameterSlots":2,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":12893,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":12874,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":11594,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":12947,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":12852,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":11511,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":12518,"id":null,"parameterSlots":0,"returnSlots":0},"validator_assert_enum_SettlementMode":{"entryPoint":11569,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:21607:46","statements":[{"nodeType":"YulBlock","src":"6:3:46","statements":[]},{"body":{"nodeType":"YulBlock","src":"84:110:46","statements":[{"body":{"nodeType":"YulBlock","src":"130:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"139:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"142:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"132:6:46"},"nodeType":"YulFunctionCall","src":"132:12:46"},"nodeType":"YulExpressionStatement","src":"132:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"105:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"114:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"101:3:46"},"nodeType":"YulFunctionCall","src":"101:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"126:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"97:3:46"},"nodeType":"YulFunctionCall","src":"97:32:46"},"nodeType":"YulIf","src":"94:52:46"},{"nodeType":"YulAssignment","src":"155:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"178:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"165:12:46"},"nodeType":"YulFunctionCall","src":"165:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"155:6:46"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"50:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"61:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"73:6:46","type":""}],"src":"14:180:46"},{"body":{"nodeType":"YulBlock","src":"268:217:46","statements":[{"body":{"nodeType":"YulBlock","src":"314:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"323:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"326:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"316:6:46"},"nodeType":"YulFunctionCall","src":"316:12:46"},"nodeType":"YulExpressionStatement","src":"316:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"289:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"298:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"285:3:46"},"nodeType":"YulFunctionCall","src":"285:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"310:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"281:3:46"},"nodeType":"YulFunctionCall","src":"281:32:46"},"nodeType":"YulIf","src":"278:52:46"},{"nodeType":"YulVariableDeclaration","src":"339:36:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"365:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"352:12:46"},"nodeType":"YulFunctionCall","src":"352:23:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"343:5:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"439:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"448:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"451:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"441:6:46"},"nodeType":"YulFunctionCall","src":"441:12:46"},"nodeType":"YulExpressionStatement","src":"441:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"397:5:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"408:5:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"419:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"424:10:46","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"415:3:46"},"nodeType":"YulFunctionCall","src":"415:20:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"404:3:46"},"nodeType":"YulFunctionCall","src":"404:32:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"394:2:46"},"nodeType":"YulFunctionCall","src":"394:43:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"387:6:46"},"nodeType":"YulFunctionCall","src":"387:51:46"},"nodeType":"YulIf","src":"384:71:46"},{"nodeType":"YulAssignment","src":"464:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"474:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"464:6:46"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"234:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"245:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"257:6:46","type":""}],"src":"199:286:46"},{"body":{"nodeType":"YulBlock","src":"531:50:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"548:3:46"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"567:5:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"560:6:46"},"nodeType":"YulFunctionCall","src":"560:13:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"553:6:46"},"nodeType":"YulFunctionCall","src":"553:21:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"541:6:46"},"nodeType":"YulFunctionCall","src":"541:34:46"},"nodeType":"YulExpressionStatement","src":"541:34:46"}]},"name":"abi_encode_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"515:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"522:3:46","type":""}],"src":"490:91:46"},{"body":{"nodeType":"YulBlock","src":"681:92:46","statements":[{"nodeType":"YulAssignment","src":"691:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"703:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"714:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"699:3:46"},"nodeType":"YulFunctionCall","src":"699:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"691:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"733:9:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"758:6:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"751:6:46"},"nodeType":"YulFunctionCall","src":"751:14:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"744:6:46"},"nodeType":"YulFunctionCall","src":"744:22:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"726:6:46"},"nodeType":"YulFunctionCall","src":"726:41:46"},"nodeType":"YulExpressionStatement","src":"726:41:46"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"650:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"661:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"672:4:46","type":""}],"src":"586:187:46"},{"body":{"nodeType":"YulBlock","src":"822:60:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"839:3:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"848:5:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"863:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"868:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"859:3:46"},"nodeType":"YulFunctionCall","src":"859:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"872:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"855:3:46"},"nodeType":"YulFunctionCall","src":"855:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"844:3:46"},"nodeType":"YulFunctionCall","src":"844:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"832:6:46"},"nodeType":"YulFunctionCall","src":"832:44:46"},"nodeType":"YulExpressionStatement","src":"832:44:46"}]},"name":"abi_encode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"806:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"813:3:46","type":""}],"src":"778:104:46"},{"body":{"nodeType":"YulBlock","src":"1038:507:46","statements":[{"nodeType":"YulVariableDeclaration","src":"1048:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"1058:2:46","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1052:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1069:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1087:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"1098:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1083:3:46"},"nodeType":"YulFunctionCall","src":"1083:18:46"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"1073:6:46","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1117:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"1128:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1110:6:46"},"nodeType":"YulFunctionCall","src":"1110:21:46"},"nodeType":"YulExpressionStatement","src":"1110:21:46"},{"nodeType":"YulVariableDeclaration","src":"1140:17:46","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"1151:6:46"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"1144:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1166:27:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1186:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1180:5:46"},"nodeType":"YulFunctionCall","src":"1180:13:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1170:6:46","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"1209:6:46"},{"name":"length","nodeType":"YulIdentifier","src":"1217:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1202:6:46"},"nodeType":"YulFunctionCall","src":"1202:22:46"},"nodeType":"YulExpressionStatement","src":"1202:22:46"},{"nodeType":"YulAssignment","src":"1233:25:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1244:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"1255:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1240:3:46"},"nodeType":"YulFunctionCall","src":"1240:18:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1233:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"1267:29:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1285:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"1293:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1281:3:46"},"nodeType":"YulFunctionCall","src":"1281:15:46"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"1271:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1305:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"1314:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1309:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"1373:146:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1394:3:46"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1409:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1403:5:46"},"nodeType":"YulFunctionCall","src":"1403:13:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1426:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1431:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1422:3:46"},"nodeType":"YulFunctionCall","src":"1422:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"1435:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1418:3:46"},"nodeType":"YulFunctionCall","src":"1418:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1399:3:46"},"nodeType":"YulFunctionCall","src":"1399:39:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1387:6:46"},"nodeType":"YulFunctionCall","src":"1387:52:46"},"nodeType":"YulExpressionStatement","src":"1387:52:46"},{"nodeType":"YulAssignment","src":"1452:19:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1463:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"1468:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1459:3:46"},"nodeType":"YulFunctionCall","src":"1459:12:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1452:3:46"}]},{"nodeType":"YulAssignment","src":"1484:25:46","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1498:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"1506:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1494:3:46"},"nodeType":"YulFunctionCall","src":"1494:15:46"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1484:6:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1335:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"1338:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1332:2:46"},"nodeType":"YulFunctionCall","src":"1332:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1346:18:46","statements":[{"nodeType":"YulAssignment","src":"1348:14:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1357:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"1360:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1353:3:46"},"nodeType":"YulFunctionCall","src":"1353:9:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1348:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"1328:3:46","statements":[]},"src":"1324:195:46"},{"nodeType":"YulAssignment","src":"1528:11:46","value":{"name":"pos","nodeType":"YulIdentifier","src":"1536:3:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1528:4:46"}]}]},"name":"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1007:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1018:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1029:4:46","type":""}],"src":"887:658:46"},{"body":{"nodeType":"YulBlock","src":"1599:124:46","statements":[{"nodeType":"YulAssignment","src":"1609:29:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1631:6:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1618:12:46"},"nodeType":"YulFunctionCall","src":"1618:20:46"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1609:5:46"}]},{"body":{"nodeType":"YulBlock","src":"1701:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1710:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1713:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1703:6:46"},"nodeType":"YulFunctionCall","src":"1703:12:46"},"nodeType":"YulExpressionStatement","src":"1703:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1660:5:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1671:5:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1686:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1691:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1682:3:46"},"nodeType":"YulFunctionCall","src":"1682:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"1695:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1678:3:46"},"nodeType":"YulFunctionCall","src":"1678:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1667:3:46"},"nodeType":"YulFunctionCall","src":"1667:31:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1657:2:46"},"nodeType":"YulFunctionCall","src":"1657:42:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1650:6:46"},"nodeType":"YulFunctionCall","src":"1650:50:46"},"nodeType":"YulIf","src":"1647:70:46"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1578:6:46","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1589:5:46","type":""}],"src":"1550:173:46"},{"body":{"nodeType":"YulBlock","src":"1815:167:46","statements":[{"body":{"nodeType":"YulBlock","src":"1861:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1870:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1873:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1863:6:46"},"nodeType":"YulFunctionCall","src":"1863:12:46"},"nodeType":"YulExpressionStatement","src":"1863:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1836:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"1845:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1832:3:46"},"nodeType":"YulFunctionCall","src":"1832:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"1857:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1828:3:46"},"nodeType":"YulFunctionCall","src":"1828:32:46"},"nodeType":"YulIf","src":"1825:52:46"},{"nodeType":"YulAssignment","src":"1886:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1909:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1896:12:46"},"nodeType":"YulFunctionCall","src":"1896:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1886:6:46"}]},{"nodeType":"YulAssignment","src":"1928:48:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1961:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"1972:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1957:3:46"},"nodeType":"YulFunctionCall","src":"1957:18:46"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1938:18:46"},"nodeType":"YulFunctionCall","src":"1938:38:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1928:6:46"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1773:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1784:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1796:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1804:6:46","type":""}],"src":"1728:254:46"},{"body":{"nodeType":"YulBlock","src":"2088:76:46","statements":[{"nodeType":"YulAssignment","src":"2098:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2110:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"2121:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2106:3:46"},"nodeType":"YulFunctionCall","src":"2106:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2098:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2140:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"2151:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2133:6:46"},"nodeType":"YulFunctionCall","src":"2133:25:46"},"nodeType":"YulExpressionStatement","src":"2133:25:46"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2057:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2068:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2079:4:46","type":""}],"src":"1987:177:46"},{"body":{"nodeType":"YulBlock","src":"2201:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2218:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2225:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2230:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2221:3:46"},"nodeType":"YulFunctionCall","src":"2221:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2211:6:46"},"nodeType":"YulFunctionCall","src":"2211:31:46"},"nodeType":"YulExpressionStatement","src":"2211:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2258:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2261:4:46","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2251:6:46"},"nodeType":"YulFunctionCall","src":"2251:15:46"},"nodeType":"YulExpressionStatement","src":"2251:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2282:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2285:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2275:6:46"},"nodeType":"YulFunctionCall","src":"2275:15:46"},"nodeType":"YulExpressionStatement","src":"2275:15:46"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2169:127:46"},{"body":{"nodeType":"YulBlock","src":"2356:89:46","statements":[{"body":{"nodeType":"YulBlock","src":"2390:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"2392:16:46"},"nodeType":"YulFunctionCall","src":"2392:18:46"},"nodeType":"YulExpressionStatement","src":"2392:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2379:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"2386:1:46","type":"","value":"2"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2376:2:46"},"nodeType":"YulFunctionCall","src":"2376:12:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2369:6:46"},"nodeType":"YulFunctionCall","src":"2369:20:46"},"nodeType":"YulIf","src":"2366:46:46"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2428:3:46"},{"name":"value","nodeType":"YulIdentifier","src":"2433:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2421:6:46"},"nodeType":"YulFunctionCall","src":"2421:18:46"},"nodeType":"YulExpressionStatement","src":"2421:18:46"}]},"name":"abi_encode_enum_ChallengeKind","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2340:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2347:3:46","type":""}],"src":"2301:144:46"},{"body":{"nodeType":"YulBlock","src":"2507:89:46","statements":[{"body":{"nodeType":"YulBlock","src":"2541:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"2543:16:46"},"nodeType":"YulFunctionCall","src":"2543:18:46"},"nodeType":"YulExpressionStatement","src":"2543:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2530:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"2537:1:46","type":"","value":"5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2527:2:46"},"nodeType":"YulFunctionCall","src":"2527:12:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2520:6:46"},"nodeType":"YulFunctionCall","src":"2520:20:46"},"nodeType":"YulIf","src":"2517:46:46"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2579:3:46"},{"name":"value","nodeType":"YulIdentifier","src":"2584:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2572:6:46"},"nodeType":"YulFunctionCall","src":"2572:18:46"},"nodeType":"YulExpressionStatement","src":"2572:18:46"}]},"name":"abi_encode_enum_ChallengeStatus","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2491:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2498:3:46","type":""}],"src":"2450:146:46"},{"body":{"nodeType":"YulBlock","src":"2658:62:46","statements":[{"body":{"nodeType":"YulBlock","src":"2692:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"2694:16:46"},"nodeType":"YulFunctionCall","src":"2694:18:46"},"nodeType":"YulExpressionStatement","src":"2694:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2681:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"2688:1:46","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2678:2:46"},"nodeType":"YulFunctionCall","src":"2678:12:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2671:6:46"},"nodeType":"YulFunctionCall","src":"2671:20:46"},"nodeType":"YulIf","src":"2668:46:46"}]},"name":"validator_assert_enum_SettlementMode","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2647:5:46","type":""}],"src":"2601:119:46"},{"body":{"nodeType":"YulBlock","src":"2781:86:46","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2828:5:46"}],"functionName":{"name":"validator_assert_enum_SettlementMode","nodeType":"YulIdentifier","src":"2791:36:46"},"nodeType":"YulFunctionCall","src":"2791:43:46"},"nodeType":"YulExpressionStatement","src":"2791:43:46"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2850:3:46"},{"name":"value","nodeType":"YulIdentifier","src":"2855:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2843:6:46"},"nodeType":"YulFunctionCall","src":"2843:18:46"},"nodeType":"YulExpressionStatement","src":"2843:18:46"}]},"name":"abi_encode_enum_SettlementMode","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2765:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2772:3:46","type":""}],"src":"2725:142:46"},{"body":{"nodeType":"YulBlock","src":"2938:184:46","statements":[{"nodeType":"YulVariableDeclaration","src":"2948:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"2957:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2952:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"3017:63:46","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3042:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"3047:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3038:3:46"},"nodeType":"YulFunctionCall","src":"3038:11:46"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3061:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"3066:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3057:3:46"},"nodeType":"YulFunctionCall","src":"3057:11:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3051:5:46"},"nodeType":"YulFunctionCall","src":"3051:18:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3031:6:46"},"nodeType":"YulFunctionCall","src":"3031:39:46"},"nodeType":"YulExpressionStatement","src":"3031:39:46"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2978:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"2981:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2975:2:46"},"nodeType":"YulFunctionCall","src":"2975:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2989:19:46","statements":[{"nodeType":"YulAssignment","src":"2991:15:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3000:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"3003:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2996:3:46"},"nodeType":"YulFunctionCall","src":"2996:10:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2991:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"2971:3:46","statements":[]},"src":"2967:113:46"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3100:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"3105:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3096:3:46"},"nodeType":"YulFunctionCall","src":"3096:16:46"},{"kind":"number","nodeType":"YulLiteral","src":"3114:1:46","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3089:6:46"},"nodeType":"YulFunctionCall","src":"3089:27:46"},"nodeType":"YulExpressionStatement","src":"3089:27:46"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"2916:3:46","type":""},{"name":"dst","nodeType":"YulTypedName","src":"2921:3:46","type":""},{"name":"length","nodeType":"YulTypedName","src":"2926:6:46","type":""}],"src":"2872:250:46"},{"body":{"nodeType":"YulBlock","src":"3177:221:46","statements":[{"nodeType":"YulVariableDeclaration","src":"3187:26:46","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3207:5:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3201:5:46"},"nodeType":"YulFunctionCall","src":"3201:12:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3191:6:46","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3229:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"3234:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3222:6:46"},"nodeType":"YulFunctionCall","src":"3222:19:46"},"nodeType":"YulExpressionStatement","src":"3222:19:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3289:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"3296:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3285:3:46"},"nodeType":"YulFunctionCall","src":"3285:16:46"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3307:3:46"},{"kind":"number","nodeType":"YulLiteral","src":"3312:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3303:3:46"},"nodeType":"YulFunctionCall","src":"3303:14:46"},{"name":"length","nodeType":"YulIdentifier","src":"3319:6:46"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"3250:34:46"},"nodeType":"YulFunctionCall","src":"3250:76:46"},"nodeType":"YulExpressionStatement","src":"3250:76:46"},{"nodeType":"YulAssignment","src":"3335:57:46","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3350:3:46"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3363:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"3371:2:46","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3359:3:46"},"nodeType":"YulFunctionCall","src":"3359:15:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3380:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3376:3:46"},"nodeType":"YulFunctionCall","src":"3376:7:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3355:3:46"},"nodeType":"YulFunctionCall","src":"3355:29:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3346:3:46"},"nodeType":"YulFunctionCall","src":"3346:39:46"},{"kind":"number","nodeType":"YulLiteral","src":"3387:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3342:3:46"},"nodeType":"YulFunctionCall","src":"3342:50:46"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3335:3:46"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3154:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3161:3:46","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3169:3:46","type":""}],"src":"3127:271:46"},{"body":{"nodeType":"YulBlock","src":"3568:3633:46","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3585:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3596:2:46","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3578:6:46"},"nodeType":"YulFunctionCall","src":"3578:21:46"},"nodeType":"YulExpressionStatement","src":"3578:21:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3619:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3630:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3615:3:46"},"nodeType":"YulFunctionCall","src":"3615:18:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3641:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3635:5:46"},"nodeType":"YulFunctionCall","src":"3635:13:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3608:6:46"},"nodeType":"YulFunctionCall","src":"3608:41:46"},"nodeType":"YulExpressionStatement","src":"3608:41:46"},{"nodeType":"YulVariableDeclaration","src":"3658:42:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3688:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"3696:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3684:3:46"},"nodeType":"YulFunctionCall","src":"3684:15:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3678:5:46"},"nodeType":"YulFunctionCall","src":"3678:22:46"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"3662:12:46","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"3739:12:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3757:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3768:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3753:3:46"},"nodeType":"YulFunctionCall","src":"3753:18:46"}],"functionName":{"name":"abi_encode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"3709:29:46"},"nodeType":"YulFunctionCall","src":"3709:63:46"},"nodeType":"YulExpressionStatement","src":"3709:63:46"},{"nodeType":"YulVariableDeclaration","src":"3781:44:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3813:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"3821:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3809:3:46"},"nodeType":"YulFunctionCall","src":"3809:15:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3803:5:46"},"nodeType":"YulFunctionCall","src":"3803:22:46"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"3785:14:46","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"3864:14:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3884:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3895:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3880:3:46"},"nodeType":"YulFunctionCall","src":"3880:18:46"}],"functionName":{"name":"abi_encode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"3834:29:46"},"nodeType":"YulFunctionCall","src":"3834:65:46"},"nodeType":"YulExpressionStatement","src":"3834:65:46"},{"nodeType":"YulVariableDeclaration","src":"3908:44:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3940:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"3948:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3936:3:46"},"nodeType":"YulFunctionCall","src":"3936:15:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3930:5:46"},"nodeType":"YulFunctionCall","src":"3930:22:46"},"variables":[{"name":"memberValue0_2","nodeType":"YulTypedName","src":"3912:14:46","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_2","nodeType":"YulIdentifier","src":"3991:14:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4011:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4022:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4007:3:46"},"nodeType":"YulFunctionCall","src":"4007:19:46"}],"functionName":{"name":"abi_encode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"3961:29:46"},"nodeType":"YulFunctionCall","src":"3961:66:46"},"nodeType":"YulExpressionStatement","src":"3961:66:46"},{"nodeType":"YulVariableDeclaration","src":"4036:45:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4068:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"4076:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4064:3:46"},"nodeType":"YulFunctionCall","src":"4064:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4058:5:46"},"nodeType":"YulFunctionCall","src":"4058:23:46"},"variables":[{"name":"memberValue0_3","nodeType":"YulTypedName","src":"4040:14:46","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_3","nodeType":"YulIdentifier","src":"4122:14:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4142:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4153:3:46","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4138:3:46"},"nodeType":"YulFunctionCall","src":"4138:19:46"}],"functionName":{"name":"abi_encode_enum_ChallengeStatus","nodeType":"YulIdentifier","src":"4090:31:46"},"nodeType":"YulFunctionCall","src":"4090:68:46"},"nodeType":"YulExpressionStatement","src":"4090:68:46"},{"nodeType":"YulVariableDeclaration","src":"4167:45:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4199:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"4207:3:46","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4195:3:46"},"nodeType":"YulFunctionCall","src":"4195:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4189:5:46"},"nodeType":"YulFunctionCall","src":"4189:23:46"},"variables":[{"name":"memberValue0_4","nodeType":"YulTypedName","src":"4171:14:46","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_4","nodeType":"YulIdentifier","src":"4252:14:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4272:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4283:3:46","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4268:3:46"},"nodeType":"YulFunctionCall","src":"4268:19:46"}],"functionName":{"name":"abi_encode_enum_SettlementMode","nodeType":"YulIdentifier","src":"4221:30:46"},"nodeType":"YulFunctionCall","src":"4221:67:46"},"nodeType":"YulExpressionStatement","src":"4221:67:46"},{"nodeType":"YulVariableDeclaration","src":"4297:45:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4329:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"4337:3:46","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4325:3:46"},"nodeType":"YulFunctionCall","src":"4325:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4319:5:46"},"nodeType":"YulFunctionCall","src":"4319:23:46"},"variables":[{"name":"memberValue0_5","nodeType":"YulTypedName","src":"4301:14:46","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_5","nodeType":"YulIdentifier","src":"4370:14:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4390:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4401:3:46","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:46"},"nodeType":"YulFunctionCall","src":"4386:19:46"}],"functionName":{"name":"abi_encode_address","nodeType":"YulIdentifier","src":"4351:18:46"},"nodeType":"YulFunctionCall","src":"4351:55:46"},"nodeType":"YulExpressionStatement","src":"4351:55:46"},{"nodeType":"YulVariableDeclaration","src":"4415:33:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4435:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"4443:3:46","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4431:3:46"},"nodeType":"YulFunctionCall","src":"4431:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4425:5:46"},"nodeType":"YulFunctionCall","src":"4425:23:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4419:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4457:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4467:3:46","type":"","value":"256"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4461:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4490:9:46"},{"name":"_2","nodeType":"YulIdentifier","src":"4501:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4486:3:46"},"nodeType":"YulFunctionCall","src":"4486:18:46"},{"name":"_1","nodeType":"YulIdentifier","src":"4506:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4479:6:46"},"nodeType":"YulFunctionCall","src":"4479:30:46"},"nodeType":"YulExpressionStatement","src":"4479:30:46"},{"nodeType":"YulVariableDeclaration","src":"4518:32:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4538:6:46"},{"name":"_2","nodeType":"YulIdentifier","src":"4546:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4534:3:46"},"nodeType":"YulFunctionCall","src":"4534:15:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4528:5:46"},"nodeType":"YulFunctionCall","src":"4528:22:46"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4522:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4559:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4569:3:46","type":"","value":"288"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4563:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4592:9:46"},{"name":"_4","nodeType":"YulIdentifier","src":"4603:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4588:3:46"},"nodeType":"YulFunctionCall","src":"4588:18:46"},{"name":"_3","nodeType":"YulIdentifier","src":"4608:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4581:6:46"},"nodeType":"YulFunctionCall","src":"4581:30:46"},"nodeType":"YulExpressionStatement","src":"4581:30:46"},{"nodeType":"YulVariableDeclaration","src":"4620:32:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4640:6:46"},{"name":"_4","nodeType":"YulIdentifier","src":"4648:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4636:3:46"},"nodeType":"YulFunctionCall","src":"4636:15:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4630:5:46"},"nodeType":"YulFunctionCall","src":"4630:22:46"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"4624:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4661:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4671:3:46","type":"","value":"320"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"4665:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4694:9:46"},{"name":"_6","nodeType":"YulIdentifier","src":"4705:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4690:3:46"},"nodeType":"YulFunctionCall","src":"4690:18:46"},{"name":"_5","nodeType":"YulIdentifier","src":"4710:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4683:6:46"},"nodeType":"YulFunctionCall","src":"4683:30:46"},"nodeType":"YulExpressionStatement","src":"4683:30:46"},{"nodeType":"YulVariableDeclaration","src":"4722:32:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4742:6:46"},{"name":"_6","nodeType":"YulIdentifier","src":"4750:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4738:3:46"},"nodeType":"YulFunctionCall","src":"4738:15:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4732:5:46"},"nodeType":"YulFunctionCall","src":"4732:22:46"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"4726:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4763:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4773:3:46","type":"","value":"352"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"4767:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4796:9:46"},{"name":"_8","nodeType":"YulIdentifier","src":"4807:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4792:3:46"},"nodeType":"YulFunctionCall","src":"4792:18:46"},{"name":"_7","nodeType":"YulIdentifier","src":"4812:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4785:6:46"},"nodeType":"YulFunctionCall","src":"4785:30:46"},"nodeType":"YulExpressionStatement","src":"4785:30:46"},{"nodeType":"YulVariableDeclaration","src":"4824:32:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4844:6:46"},{"name":"_8","nodeType":"YulIdentifier","src":"4852:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4840:3:46"},"nodeType":"YulFunctionCall","src":"4840:15:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4834:5:46"},"nodeType":"YulFunctionCall","src":"4834:22:46"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"4828:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4865:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4876:3:46","type":"","value":"384"},"variables":[{"name":"_10","nodeType":"YulTypedName","src":"4869:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4899:9:46"},{"name":"_10","nodeType":"YulIdentifier","src":"4910:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4895:3:46"},"nodeType":"YulFunctionCall","src":"4895:19:46"},{"name":"_9","nodeType":"YulIdentifier","src":"4916:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4888:6:46"},"nodeType":"YulFunctionCall","src":"4888:31:46"},"nodeType":"YulExpressionStatement","src":"4888:31:46"},{"nodeType":"YulVariableDeclaration","src":"4928:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4949:6:46"},{"name":"_10","nodeType":"YulIdentifier","src":"4957:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4945:3:46"},"nodeType":"YulFunctionCall","src":"4945:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4939:5:46"},"nodeType":"YulFunctionCall","src":"4939:23:46"},"variables":[{"name":"_11","nodeType":"YulTypedName","src":"4932:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4971:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4982:3:46","type":"","value":"416"},"variables":[{"name":"_12","nodeType":"YulTypedName","src":"4975:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5005:9:46"},{"name":"_12","nodeType":"YulIdentifier","src":"5016:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5001:3:46"},"nodeType":"YulFunctionCall","src":"5001:19:46"},{"name":"_11","nodeType":"YulIdentifier","src":"5022:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4994:6:46"},"nodeType":"YulFunctionCall","src":"4994:32:46"},"nodeType":"YulExpressionStatement","src":"4994:32:46"},{"nodeType":"YulVariableDeclaration","src":"5035:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5056:6:46"},{"name":"_12","nodeType":"YulIdentifier","src":"5064:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5052:3:46"},"nodeType":"YulFunctionCall","src":"5052:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5046:5:46"},"nodeType":"YulFunctionCall","src":"5046:23:46"},"variables":[{"name":"_13","nodeType":"YulTypedName","src":"5039:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5078:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5089:3:46","type":"","value":"448"},"variables":[{"name":"_14","nodeType":"YulTypedName","src":"5082:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5112:9:46"},{"name":"_14","nodeType":"YulIdentifier","src":"5123:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5108:3:46"},"nodeType":"YulFunctionCall","src":"5108:19:46"},{"name":"_13","nodeType":"YulIdentifier","src":"5129:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5101:6:46"},"nodeType":"YulFunctionCall","src":"5101:32:46"},"nodeType":"YulExpressionStatement","src":"5101:32:46"},{"nodeType":"YulVariableDeclaration","src":"5142:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5163:6:46"},{"name":"_14","nodeType":"YulIdentifier","src":"5171:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5159:3:46"},"nodeType":"YulFunctionCall","src":"5159:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5153:5:46"},"nodeType":"YulFunctionCall","src":"5153:23:46"},"variables":[{"name":"_15","nodeType":"YulTypedName","src":"5146:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5185:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5196:3:46","type":"","value":"480"},"variables":[{"name":"_16","nodeType":"YulTypedName","src":"5189:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5219:9:46"},{"name":"_16","nodeType":"YulIdentifier","src":"5230:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5215:3:46"},"nodeType":"YulFunctionCall","src":"5215:19:46"},{"name":"_15","nodeType":"YulIdentifier","src":"5236:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5208:6:46"},"nodeType":"YulFunctionCall","src":"5208:32:46"},"nodeType":"YulExpressionStatement","src":"5208:32:46"},{"nodeType":"YulVariableDeclaration","src":"5249:45:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5281:6:46"},{"name":"_16","nodeType":"YulIdentifier","src":"5289:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5277:3:46"},"nodeType":"YulFunctionCall","src":"5277:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5271:5:46"},"nodeType":"YulFunctionCall","src":"5271:23:46"},"variables":[{"name":"memberValue0_6","nodeType":"YulTypedName","src":"5253:14:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5303:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5314:3:46","type":"","value":"512"},"variables":[{"name":"_17","nodeType":"YulTypedName","src":"5307:3:46","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_6","nodeType":"YulIdentifier","src":"5342:14:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5362:9:46"},{"name":"_17","nodeType":"YulIdentifier","src":"5373:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5358:3:46"},"nodeType":"YulFunctionCall","src":"5358:19:46"}],"functionName":{"name":"abi_encode_bool","nodeType":"YulIdentifier","src":"5326:15:46"},"nodeType":"YulFunctionCall","src":"5326:52:46"},"nodeType":"YulExpressionStatement","src":"5326:52:46"},{"nodeType":"YulVariableDeclaration","src":"5387:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5408:6:46"},{"name":"_17","nodeType":"YulIdentifier","src":"5416:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5404:3:46"},"nodeType":"YulFunctionCall","src":"5404:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5398:5:46"},"nodeType":"YulFunctionCall","src":"5398:23:46"},"variables":[{"name":"_18","nodeType":"YulTypedName","src":"5391:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5430:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5441:3:46","type":"","value":"544"},"variables":[{"name":"_19","nodeType":"YulTypedName","src":"5434:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5464:9:46"},{"name":"_19","nodeType":"YulIdentifier","src":"5475:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5460:3:46"},"nodeType":"YulFunctionCall","src":"5460:19:46"},{"name":"_18","nodeType":"YulIdentifier","src":"5481:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5453:6:46"},"nodeType":"YulFunctionCall","src":"5453:32:46"},"nodeType":"YulExpressionStatement","src":"5453:32:46"},{"nodeType":"YulVariableDeclaration","src":"5494:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5515:6:46"},{"name":"_19","nodeType":"YulIdentifier","src":"5523:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5511:3:46"},"nodeType":"YulFunctionCall","src":"5511:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5505:5:46"},"nodeType":"YulFunctionCall","src":"5505:23:46"},"variables":[{"name":"_20","nodeType":"YulTypedName","src":"5498:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5537:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5548:3:46","type":"","value":"576"},"variables":[{"name":"_21","nodeType":"YulTypedName","src":"5541:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5571:9:46"},{"name":"_21","nodeType":"YulIdentifier","src":"5582:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5567:3:46"},"nodeType":"YulFunctionCall","src":"5567:19:46"},{"name":"_20","nodeType":"YulIdentifier","src":"5588:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5560:6:46"},"nodeType":"YulFunctionCall","src":"5560:32:46"},"nodeType":"YulExpressionStatement","src":"5560:32:46"},{"nodeType":"YulVariableDeclaration","src":"5601:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5622:6:46"},{"name":"_21","nodeType":"YulIdentifier","src":"5630:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5618:3:46"},"nodeType":"YulFunctionCall","src":"5618:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5612:5:46"},"nodeType":"YulFunctionCall","src":"5612:23:46"},"variables":[{"name":"_22","nodeType":"YulTypedName","src":"5605:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5644:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5655:3:46","type":"","value":"608"},"variables":[{"name":"_23","nodeType":"YulTypedName","src":"5648:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5678:9:46"},{"name":"_23","nodeType":"YulIdentifier","src":"5689:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5674:3:46"},"nodeType":"YulFunctionCall","src":"5674:19:46"},{"name":"_22","nodeType":"YulIdentifier","src":"5695:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5667:6:46"},"nodeType":"YulFunctionCall","src":"5667:32:46"},"nodeType":"YulExpressionStatement","src":"5667:32:46"},{"nodeType":"YulVariableDeclaration","src":"5708:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5729:6:46"},{"name":"_23","nodeType":"YulIdentifier","src":"5737:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5725:3:46"},"nodeType":"YulFunctionCall","src":"5725:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5719:5:46"},"nodeType":"YulFunctionCall","src":"5719:23:46"},"variables":[{"name":"_24","nodeType":"YulTypedName","src":"5712:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5751:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5762:3:46","type":"","value":"640"},"variables":[{"name":"_25","nodeType":"YulTypedName","src":"5755:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5785:9:46"},{"name":"_25","nodeType":"YulIdentifier","src":"5796:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5781:3:46"},"nodeType":"YulFunctionCall","src":"5781:19:46"},{"name":"_24","nodeType":"YulIdentifier","src":"5802:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5774:6:46"},"nodeType":"YulFunctionCall","src":"5774:32:46"},"nodeType":"YulExpressionStatement","src":"5774:32:46"},{"nodeType":"YulVariableDeclaration","src":"5815:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5836:6:46"},{"name":"_25","nodeType":"YulIdentifier","src":"5844:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5832:3:46"},"nodeType":"YulFunctionCall","src":"5832:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5826:5:46"},"nodeType":"YulFunctionCall","src":"5826:23:46"},"variables":[{"name":"_26","nodeType":"YulTypedName","src":"5819:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5858:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5869:3:46","type":"","value":"672"},"variables":[{"name":"_27","nodeType":"YulTypedName","src":"5862:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5892:9:46"},{"name":"_27","nodeType":"YulIdentifier","src":"5903:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5888:3:46"},"nodeType":"YulFunctionCall","src":"5888:19:46"},{"name":"_26","nodeType":"YulIdentifier","src":"5909:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5881:6:46"},"nodeType":"YulFunctionCall","src":"5881:32:46"},"nodeType":"YulExpressionStatement","src":"5881:32:46"},{"nodeType":"YulVariableDeclaration","src":"5922:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5943:6:46"},{"name":"_27","nodeType":"YulIdentifier","src":"5951:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5939:3:46"},"nodeType":"YulFunctionCall","src":"5939:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5933:5:46"},"nodeType":"YulFunctionCall","src":"5933:23:46"},"variables":[{"name":"_28","nodeType":"YulTypedName","src":"5926:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5965:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5976:3:46","type":"","value":"704"},"variables":[{"name":"_29","nodeType":"YulTypedName","src":"5969:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5999:9:46"},{"name":"_29","nodeType":"YulIdentifier","src":"6010:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5995:3:46"},"nodeType":"YulFunctionCall","src":"5995:19:46"},{"name":"_28","nodeType":"YulIdentifier","src":"6016:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5988:6:46"},"nodeType":"YulFunctionCall","src":"5988:32:46"},"nodeType":"YulExpressionStatement","src":"5988:32:46"},{"nodeType":"YulVariableDeclaration","src":"6029:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6050:6:46"},{"name":"_29","nodeType":"YulIdentifier","src":"6058:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6046:3:46"},"nodeType":"YulFunctionCall","src":"6046:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6040:5:46"},"nodeType":"YulFunctionCall","src":"6040:23:46"},"variables":[{"name":"_30","nodeType":"YulTypedName","src":"6033:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6072:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"6083:3:46","type":"","value":"736"},"variables":[{"name":"_31","nodeType":"YulTypedName","src":"6076:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6106:9:46"},{"name":"_31","nodeType":"YulIdentifier","src":"6117:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6102:3:46"},"nodeType":"YulFunctionCall","src":"6102:19:46"},{"name":"_30","nodeType":"YulIdentifier","src":"6123:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6095:6:46"},"nodeType":"YulFunctionCall","src":"6095:32:46"},"nodeType":"YulExpressionStatement","src":"6095:32:46"},{"nodeType":"YulVariableDeclaration","src":"6136:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6157:6:46"},{"name":"_31","nodeType":"YulIdentifier","src":"6165:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6153:3:46"},"nodeType":"YulFunctionCall","src":"6153:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6147:5:46"},"nodeType":"YulFunctionCall","src":"6147:23:46"},"variables":[{"name":"_32","nodeType":"YulTypedName","src":"6140:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6179:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"6190:3:46","type":"","value":"768"},"variables":[{"name":"_33","nodeType":"YulTypedName","src":"6183:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6213:9:46"},{"name":"_33","nodeType":"YulIdentifier","src":"6224:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6209:3:46"},"nodeType":"YulFunctionCall","src":"6209:19:46"},{"name":"_32","nodeType":"YulIdentifier","src":"6230:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6202:6:46"},"nodeType":"YulFunctionCall","src":"6202:32:46"},"nodeType":"YulExpressionStatement","src":"6202:32:46"},{"nodeType":"YulVariableDeclaration","src":"6243:34:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6264:6:46"},{"name":"_33","nodeType":"YulIdentifier","src":"6272:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6260:3:46"},"nodeType":"YulFunctionCall","src":"6260:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6254:5:46"},"nodeType":"YulFunctionCall","src":"6254:23:46"},"variables":[{"name":"_34","nodeType":"YulTypedName","src":"6247:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6286:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"6297:3:46","type":"","value":"800"},"variables":[{"name":"_35","nodeType":"YulTypedName","src":"6290:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6320:9:46"},{"name":"_35","nodeType":"YulIdentifier","src":"6331:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6316:3:46"},"nodeType":"YulFunctionCall","src":"6316:19:46"},{"name":"_34","nodeType":"YulIdentifier","src":"6337:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6309:6:46"},"nodeType":"YulFunctionCall","src":"6309:32:46"},"nodeType":"YulExpressionStatement","src":"6309:32:46"},{"nodeType":"YulVariableDeclaration","src":"6350:45:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6382:6:46"},{"name":"_35","nodeType":"YulIdentifier","src":"6390:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6378:3:46"},"nodeType":"YulFunctionCall","src":"6378:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6372:5:46"},"nodeType":"YulFunctionCall","src":"6372:23:46"},"variables":[{"name":"memberValue0_7","nodeType":"YulTypedName","src":"6354:14:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6404:17:46","value":{"kind":"number","nodeType":"YulLiteral","src":"6415:6:46","type":"","value":"0x03a0"},"variables":[{"name":"_36","nodeType":"YulTypedName","src":"6408:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6430:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"6441:3:46","type":"","value":"832"},"variables":[{"name":"_37","nodeType":"YulTypedName","src":"6434:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6464:9:46"},{"name":"_37","nodeType":"YulIdentifier","src":"6475:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6460:3:46"},"nodeType":"YulFunctionCall","src":"6460:19:46"},{"name":"_36","nodeType":"YulIdentifier","src":"6481:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6453:6:46"},"nodeType":"YulFunctionCall","src":"6453:32:46"},"nodeType":"YulExpressionStatement","src":"6453:32:46"},{"nodeType":"YulVariableDeclaration","src":"6494:68:46","value":{"arguments":[{"name":"memberValue0_7","nodeType":"YulIdentifier","src":"6526:14:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6546:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6557:3:46","type":"","value":"960"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6542:3:46"},"nodeType":"YulFunctionCall","src":"6542:19:46"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"6508:17:46"},"nodeType":"YulFunctionCall","src":"6508:54:46"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6498:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6571:45:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6603:6:46"},{"name":"_37","nodeType":"YulIdentifier","src":"6611:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6599:3:46"},"nodeType":"YulFunctionCall","src":"6599:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6593:5:46"},"nodeType":"YulFunctionCall","src":"6593:23:46"},"variables":[{"name":"memberValue0_8","nodeType":"YulTypedName","src":"6575:14:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6625:18:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6640:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6636:3:46"},"nodeType":"YulFunctionCall","src":"6636:7:46"},"variables":[{"name":"_38","nodeType":"YulTypedName","src":"6629:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6652:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"6663:3:46","type":"","value":"864"},"variables":[{"name":"_39","nodeType":"YulTypedName","src":"6656:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6686:9:46"},{"name":"_39","nodeType":"YulIdentifier","src":"6697:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6682:3:46"},"nodeType":"YulFunctionCall","src":"6682:19:46"},{"arguments":[{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6711:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"6719:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6707:3:46"},"nodeType":"YulFunctionCall","src":"6707:22:46"},{"name":"_38","nodeType":"YulIdentifier","src":"6731:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6703:3:46"},"nodeType":"YulFunctionCall","src":"6703:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6675:6:46"},"nodeType":"YulFunctionCall","src":"6675:61:46"},"nodeType":"YulExpressionStatement","src":"6675:61:46"},{"nodeType":"YulVariableDeclaration","src":"6745:55:46","value":{"arguments":[{"name":"memberValue0_8","nodeType":"YulIdentifier","src":"6777:14:46"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6793:6:46"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"6759:17:46"},"nodeType":"YulFunctionCall","src":"6759:41:46"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"6749:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6809:45:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6841:6:46"},{"name":"_39","nodeType":"YulIdentifier","src":"6849:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6837:3:46"},"nodeType":"YulFunctionCall","src":"6837:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6831:5:46"},"nodeType":"YulFunctionCall","src":"6831:23:46"},"variables":[{"name":"memberValue0_9","nodeType":"YulTypedName","src":"6813:14:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6863:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"6874:3:46","type":"","value":"896"},"variables":[{"name":"_40","nodeType":"YulTypedName","src":"6867:3:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6897:9:46"},{"name":"_40","nodeType":"YulIdentifier","src":"6908:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6893:3:46"},"nodeType":"YulFunctionCall","src":"6893:19:46"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"6922:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"6930:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6918:3:46"},"nodeType":"YulFunctionCall","src":"6918:22:46"},{"name":"_38","nodeType":"YulIdentifier","src":"6942:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6914:3:46"},"nodeType":"YulFunctionCall","src":"6914:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6886:6:46"},"nodeType":"YulFunctionCall","src":"6886:61:46"},"nodeType":"YulExpressionStatement","src":"6886:61:46"},{"nodeType":"YulVariableDeclaration","src":"6956:55:46","value":{"arguments":[{"name":"memberValue0_9","nodeType":"YulIdentifier","src":"6988:14:46"},{"name":"tail_2","nodeType":"YulIdentifier","src":"7004:6:46"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"6970:17:46"},"nodeType":"YulFunctionCall","src":"6970:41:46"},"variables":[{"name":"tail_3","nodeType":"YulTypedName","src":"6960:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7020:46:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7053:6:46"},{"name":"_40","nodeType":"YulIdentifier","src":"7061:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7049:3:46"},"nodeType":"YulFunctionCall","src":"7049:16:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7043:5:46"},"nodeType":"YulFunctionCall","src":"7043:23:46"},"variables":[{"name":"memberValue0_10","nodeType":"YulTypedName","src":"7024:15:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7086:9:46"},{"name":"_36","nodeType":"YulIdentifier","src":"7097:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7082:3:46"},"nodeType":"YulFunctionCall","src":"7082:19:46"},{"arguments":[{"arguments":[{"name":"tail_3","nodeType":"YulIdentifier","src":"7111:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"7119:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7107:3:46"},"nodeType":"YulFunctionCall","src":"7107:22:46"},{"name":"_38","nodeType":"YulIdentifier","src":"7131:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7103:3:46"},"nodeType":"YulFunctionCall","src":"7103:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7075:6:46"},"nodeType":"YulFunctionCall","src":"7075:61:46"},"nodeType":"YulExpressionStatement","src":"7075:61:46"},{"nodeType":"YulAssignment","src":"7145:50:46","value":{"arguments":[{"name":"memberValue0_10","nodeType":"YulIdentifier","src":"7171:15:46"},{"name":"tail_3","nodeType":"YulIdentifier","src":"7188:6:46"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"7153:17:46"},"nodeType":"YulFunctionCall","src":"7153:42:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7145:4:46"}]}]},"name":"abi_encode_tuple_t_struct$_ChallengeView_$12870_memory_ptr__to_t_struct$_ChallengeView_$12870_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3537:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3548:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3559:4:46","type":""}],"src":"3403:3798:46"},{"body":{"nodeType":"YulBlock","src":"7276:110:46","statements":[{"body":{"nodeType":"YulBlock","src":"7322:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7331:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7334:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7324:6:46"},"nodeType":"YulFunctionCall","src":"7324:12:46"},"nodeType":"YulExpressionStatement","src":"7324:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7297:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"7306:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7293:3:46"},"nodeType":"YulFunctionCall","src":"7293:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"7318:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7289:3:46"},"nodeType":"YulFunctionCall","src":"7289:32:46"},"nodeType":"YulIf","src":"7286:52:46"},{"nodeType":"YulAssignment","src":"7347:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7370:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7357:12:46"},"nodeType":"YulFunctionCall","src":"7357:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7347:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7242:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7253:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7265:6:46","type":""}],"src":"7206:180:46"},{"body":{"nodeType":"YulBlock","src":"7492:76:46","statements":[{"nodeType":"YulAssignment","src":"7502:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7514:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7525:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7510:3:46"},"nodeType":"YulFunctionCall","src":"7510:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7502:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7544:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"7555:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7537:6:46"},"nodeType":"YulFunctionCall","src":"7537:25:46"},"nodeType":"YulExpressionStatement","src":"7537:25:46"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7461:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7472:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7483:4:46","type":""}],"src":"7391:177:46"},{"body":{"nodeType":"YulBlock","src":"7695:561:46","statements":[{"body":{"nodeType":"YulBlock","src":"7741:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7750:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7753:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7743:6:46"},"nodeType":"YulFunctionCall","src":"7743:12:46"},"nodeType":"YulExpressionStatement","src":"7743:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7716:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"7725:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7712:3:46"},"nodeType":"YulFunctionCall","src":"7712:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"7737:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7708:3:46"},"nodeType":"YulFunctionCall","src":"7708:32:46"},"nodeType":"YulIf","src":"7705:52:46"},{"nodeType":"YulAssignment","src":"7766:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7789:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7776:12:46"},"nodeType":"YulFunctionCall","src":"7776:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7766:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"7808:46:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7839:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7850:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7835:3:46"},"nodeType":"YulFunctionCall","src":"7835:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7822:12:46"},"nodeType":"YulFunctionCall","src":"7822:32:46"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7812:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7863:28:46","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7881:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"7885:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7877:3:46"},"nodeType":"YulFunctionCall","src":"7877:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"7889:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7873:3:46"},"nodeType":"YulFunctionCall","src":"7873:18:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7867:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"7918:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7927:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7930:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7920:6:46"},"nodeType":"YulFunctionCall","src":"7920:12:46"},"nodeType":"YulExpressionStatement","src":"7920:12:46"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7906:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"7914:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7903:2:46"},"nodeType":"YulFunctionCall","src":"7903:14:46"},"nodeType":"YulIf","src":"7900:34:46"},{"nodeType":"YulVariableDeclaration","src":"7943:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7957:9:46"},{"name":"offset","nodeType":"YulIdentifier","src":"7968:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7953:3:46"},"nodeType":"YulFunctionCall","src":"7953:22:46"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7947:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"8023:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8032:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8035:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8025:6:46"},"nodeType":"YulFunctionCall","src":"8025:12:46"},"nodeType":"YulExpressionStatement","src":"8025:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8002:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"8006:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7998:3:46"},"nodeType":"YulFunctionCall","src":"7998:13:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8013:7:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7994:3:46"},"nodeType":"YulFunctionCall","src":"7994:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7987:6:46"},"nodeType":"YulFunctionCall","src":"7987:35:46"},"nodeType":"YulIf","src":"7984:55:46"},{"nodeType":"YulVariableDeclaration","src":"8048:30:46","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8075:2:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8062:12:46"},"nodeType":"YulFunctionCall","src":"8062:16:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8052:6:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"8105:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8114:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8117:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8107:6:46"},"nodeType":"YulFunctionCall","src":"8107:12:46"},"nodeType":"YulExpressionStatement","src":"8107:12:46"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8093:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8101:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8090:2:46"},"nodeType":"YulFunctionCall","src":"8090:14:46"},"nodeType":"YulIf","src":"8087:34:46"},{"body":{"nodeType":"YulBlock","src":"8179:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8188:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8191:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8181:6:46"},"nodeType":"YulFunctionCall","src":"8181:12:46"},"nodeType":"YulExpressionStatement","src":"8181:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8144:2:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8152:1:46","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"8155:6:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8148:3:46"},"nodeType":"YulFunctionCall","src":"8148:14:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8140:3:46"},"nodeType":"YulFunctionCall","src":"8140:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"8165:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8136:3:46"},"nodeType":"YulFunctionCall","src":"8136:32:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8170:7:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8133:2:46"},"nodeType":"YulFunctionCall","src":"8133:45:46"},"nodeType":"YulIf","src":"8130:65:46"},{"nodeType":"YulAssignment","src":"8204:21:46","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"8218:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"8222:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8214:3:46"},"nodeType":"YulFunctionCall","src":"8214:11:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8204:6:46"}]},{"nodeType":"YulAssignment","src":"8234:16:46","value":{"name":"length","nodeType":"YulIdentifier","src":"8244:6:46"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8234:6:46"}]}]},"name":"abi_decode_tuple_t_uint256t_array$_t_address_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7645:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7656:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7668:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7676:6:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7684:6:46","type":""}],"src":"7573:683:46"},{"body":{"nodeType":"YulBlock","src":"8412:481:46","statements":[{"nodeType":"YulVariableDeclaration","src":"8422:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"8432:2:46","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8426:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8443:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8461:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8472:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8457:3:46"},"nodeType":"YulFunctionCall","src":"8457:18:46"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"8447:6:46","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8491:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8502:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8484:6:46"},"nodeType":"YulFunctionCall","src":"8484:21:46"},"nodeType":"YulExpressionStatement","src":"8484:21:46"},{"nodeType":"YulVariableDeclaration","src":"8514:17:46","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"8525:6:46"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"8518:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8540:27:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8560:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8554:5:46"},"nodeType":"YulFunctionCall","src":"8554:13:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8544:6:46","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"8583:6:46"},{"name":"length","nodeType":"YulIdentifier","src":"8591:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8576:6:46"},"nodeType":"YulFunctionCall","src":"8576:22:46"},"nodeType":"YulExpressionStatement","src":"8576:22:46"},{"nodeType":"YulAssignment","src":"8607:25:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8618:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"8629:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8614:3:46"},"nodeType":"YulFunctionCall","src":"8614:18:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8607:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"8641:29:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8659:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8667:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8655:3:46"},"nodeType":"YulFunctionCall","src":"8655:15:46"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"8645:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8679:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"8688:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8683:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"8747:120:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8768:3:46"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8779:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8773:5:46"},"nodeType":"YulFunctionCall","src":"8773:13:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8761:6:46"},"nodeType":"YulFunctionCall","src":"8761:26:46"},"nodeType":"YulExpressionStatement","src":"8761:26:46"},{"nodeType":"YulAssignment","src":"8800:19:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8811:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8816:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8807:3:46"},"nodeType":"YulFunctionCall","src":"8807:12:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8800:3:46"}]},{"nodeType":"YulAssignment","src":"8832:25:46","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8846:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8854:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8842:3:46"},"nodeType":"YulFunctionCall","src":"8842:15:46"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8832:6:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8709:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"8712:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8706:2:46"},"nodeType":"YulFunctionCall","src":"8706:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8720:18:46","statements":[{"nodeType":"YulAssignment","src":"8722:14:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8731:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"8734:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8727:3:46"},"nodeType":"YulFunctionCall","src":"8727:9:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8722:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"8702:3:46","statements":[]},"src":"8698:169:46"},{"nodeType":"YulAssignment","src":"8876:11:46","value":{"name":"pos","nodeType":"YulIdentifier","src":"8884:3:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8876:4:46"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8381:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8392:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8403:4:46","type":""}],"src":"8261:632:46"},{"body":{"nodeType":"YulBlock","src":"8985:167:46","statements":[{"body":{"nodeType":"YulBlock","src":"9031:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9040:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9043:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9033:6:46"},"nodeType":"YulFunctionCall","src":"9033:12:46"},"nodeType":"YulExpressionStatement","src":"9033:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9006:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"9015:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9002:3:46"},"nodeType":"YulFunctionCall","src":"9002:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"9027:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8998:3:46"},"nodeType":"YulFunctionCall","src":"8998:32:46"},"nodeType":"YulIf","src":"8995:52:46"},{"nodeType":"YulAssignment","src":"9056:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9079:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9066:12:46"},"nodeType":"YulFunctionCall","src":"9066:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9056:6:46"}]},{"nodeType":"YulAssignment","src":"9098:48:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9131:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"9142:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9127:3:46"},"nodeType":"YulFunctionCall","src":"9127:18:46"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"9108:18:46"},"nodeType":"YulFunctionCall","src":"9108:38:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9098:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8943:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8954:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8966:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8974:6:46","type":""}],"src":"8898:254:46"},{"body":{"nodeType":"YulBlock","src":"9227:116:46","statements":[{"body":{"nodeType":"YulBlock","src":"9273:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9282:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9285:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9275:6:46"},"nodeType":"YulFunctionCall","src":"9275:12:46"},"nodeType":"YulExpressionStatement","src":"9275:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9248:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"9257:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9244:3:46"},"nodeType":"YulFunctionCall","src":"9244:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"9269:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9240:3:46"},"nodeType":"YulFunctionCall","src":"9240:32:46"},"nodeType":"YulIf","src":"9237:52:46"},{"nodeType":"YulAssignment","src":"9298:39:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9327:9:46"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"9308:18:46"},"nodeType":"YulFunctionCall","src":"9308:29:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9298:6:46"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9193:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9204:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9216:6:46","type":""}],"src":"9157:186:46"},{"body":{"nodeType":"YulBlock","src":"9517:273:46","statements":[{"nodeType":"YulVariableDeclaration","src":"9527:33:46","value":{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9541:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"9550:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9537:3:46"},"nodeType":"YulFunctionCall","src":"9537:23:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9531:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"9585:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9594:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9597:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9587:6:46"},"nodeType":"YulFunctionCall","src":"9587:12:46"},"nodeType":"YulExpressionStatement","src":"9587:12:46"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9576:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"9580:3:46","type":"","value":"384"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9572:3:46"},"nodeType":"YulFunctionCall","src":"9572:12:46"},"nodeType":"YulIf","src":"9569:32:46"},{"nodeType":"YulVariableDeclaration","src":"9610:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"9620:3:46","type":"","value":"256"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9614:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"9647:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9656:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9659:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9649:6:46"},"nodeType":"YulFunctionCall","src":"9649:12:46"},"nodeType":"YulExpressionStatement","src":"9649:12:46"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9639:2:46"},{"name":"_2","nodeType":"YulIdentifier","src":"9643:2:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9635:3:46"},"nodeType":"YulFunctionCall","src":"9635:11:46"},"nodeType":"YulIf","src":"9632:31:46"},{"nodeType":"YulAssignment","src":"9672:19:46","value":{"name":"headStart","nodeType":"YulIdentifier","src":"9682:9:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9672:6:46"}]},{"body":{"nodeType":"YulBlock","src":"9731:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9740:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9743:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9733:6:46"},"nodeType":"YulFunctionCall","src":"9733:12:46"},"nodeType":"YulExpressionStatement","src":"9733:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9711:2:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9719:3:46","type":"","value":"255"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9715:3:46"},"nodeType":"YulFunctionCall","src":"9715:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9707:3:46"},"nodeType":"YulFunctionCall","src":"9707:17:46"},{"kind":"number","nodeType":"YulLiteral","src":"9726:3:46","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9703:3:46"},"nodeType":"YulFunctionCall","src":"9703:27:46"},"nodeType":"YulIf","src":"9700:47:46"},{"nodeType":"YulAssignment","src":"9756:28:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9770:9:46"},{"name":"_2","nodeType":"YulIdentifier","src":"9781:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9766:3:46"},"nodeType":"YulFunctionCall","src":"9766:18:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9756:6:46"}]}]},"name":"abi_decode_tuple_t_struct$_InitializationData_$12734_calldata_ptrt_struct$_InitializationRoleData_$12743_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9475:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9486:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9498:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9506:6:46","type":""}],"src":"9348:442:46"},{"body":{"nodeType":"YulBlock","src":"9907:290:46","statements":[{"body":{"nodeType":"YulBlock","src":"9953:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9962:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9965:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9955:6:46"},"nodeType":"YulFunctionCall","src":"9955:12:46"},"nodeType":"YulExpressionStatement","src":"9955:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9928:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"9937:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9924:3:46"},"nodeType":"YulFunctionCall","src":"9924:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"9949:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9920:3:46"},"nodeType":"YulFunctionCall","src":"9920:32:46"},"nodeType":"YulIf","src":"9917:52:46"},{"nodeType":"YulVariableDeclaration","src":"9978:37:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10005:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9992:12:46"},"nodeType":"YulFunctionCall","src":"9992:23:46"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9982:6:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"10058:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10067:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10070:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10060:6:46"},"nodeType":"YulFunctionCall","src":"10060:12:46"},"nodeType":"YulExpressionStatement","src":"10060:12:46"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10030:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10046:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"10050:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10042:3:46"},"nodeType":"YulFunctionCall","src":"10042:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"10054:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10038:3:46"},"nodeType":"YulFunctionCall","src":"10038:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10027:2:46"},"nodeType":"YulFunctionCall","src":"10027:30:46"},"nodeType":"YulIf","src":"10024:50:46"},{"nodeType":"YulVariableDeclaration","src":"10083:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10097:9:46"},{"name":"offset","nodeType":"YulIdentifier","src":"10108:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10093:3:46"},"nodeType":"YulFunctionCall","src":"10093:22:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10087:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"10154:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10163:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10166:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10156:6:46"},"nodeType":"YulFunctionCall","src":"10156:12:46"},"nodeType":"YulExpressionStatement","src":"10156:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10135:7:46"},{"name":"_1","nodeType":"YulIdentifier","src":"10144:2:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10131:3:46"},"nodeType":"YulFunctionCall","src":"10131:16:46"},{"kind":"number","nodeType":"YulLiteral","src":"10149:3:46","type":"","value":"448"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10127:3:46"},"nodeType":"YulFunctionCall","src":"10127:26:46"},"nodeType":"YulIf","src":"10124:46:46"},{"nodeType":"YulAssignment","src":"10179:12:46","value":{"name":"_1","nodeType":"YulIdentifier","src":"10189:2:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10179:6:46"}]}]},"name":"abi_decode_tuple_t_struct$_CreateChallengeParams_$12717_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9873:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9884:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9896:6:46","type":""}],"src":"9795:402:46"},{"body":{"nodeType":"YulBlock","src":"10234:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10251:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10258:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10263:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10254:3:46"},"nodeType":"YulFunctionCall","src":"10254:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10244:6:46"},"nodeType":"YulFunctionCall","src":"10244:31:46"},"nodeType":"YulExpressionStatement","src":"10244:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10291:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10294:4:46","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10284:6:46"},"nodeType":"YulFunctionCall","src":"10284:15:46"},"nodeType":"YulExpressionStatement","src":"10284:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10315:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10318:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10308:6:46"},"nodeType":"YulFunctionCall","src":"10308:15:46"},"nodeType":"YulExpressionStatement","src":"10308:15:46"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"10202:127:46"},{"body":{"nodeType":"YulBlock","src":"10430:899:46","statements":[{"body":{"nodeType":"YulBlock","src":"10476:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10485:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10488:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10478:6:46"},"nodeType":"YulFunctionCall","src":"10478:12:46"},"nodeType":"YulExpressionStatement","src":"10478:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10451:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"10460:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10447:3:46"},"nodeType":"YulFunctionCall","src":"10447:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"10472:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10443:3:46"},"nodeType":"YulFunctionCall","src":"10443:32:46"},"nodeType":"YulIf","src":"10440:52:46"},{"nodeType":"YulAssignment","src":"10501:39:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10530:9:46"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"10511:18:46"},"nodeType":"YulFunctionCall","src":"10511:29:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10501:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"10549:46:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10580:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"10591:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10576:3:46"},"nodeType":"YulFunctionCall","src":"10576:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10563:12:46"},"nodeType":"YulFunctionCall","src":"10563:32:46"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10553:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"10604:28:46","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10622:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"10626:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10618:3:46"},"nodeType":"YulFunctionCall","src":"10618:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"10630:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10614:3:46"},"nodeType":"YulFunctionCall","src":"10614:18:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10608:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"10659:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10668:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10671:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10661:6:46"},"nodeType":"YulFunctionCall","src":"10661:12:46"},"nodeType":"YulExpressionStatement","src":"10661:12:46"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10647:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"10655:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10644:2:46"},"nodeType":"YulFunctionCall","src":"10644:14:46"},"nodeType":"YulIf","src":"10641:34:46"},{"nodeType":"YulVariableDeclaration","src":"10684:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10698:9:46"},{"name":"offset","nodeType":"YulIdentifier","src":"10709:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10694:3:46"},"nodeType":"YulFunctionCall","src":"10694:22:46"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"10688:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"10764:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10773:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10776:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10766:6:46"},"nodeType":"YulFunctionCall","src":"10766:12:46"},"nodeType":"YulExpressionStatement","src":"10766:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"10743:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"10747:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10739:3:46"},"nodeType":"YulFunctionCall","src":"10739:13:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10754:7:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10735:3:46"},"nodeType":"YulFunctionCall","src":"10735:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10728:6:46"},"nodeType":"YulFunctionCall","src":"10728:35:46"},"nodeType":"YulIf","src":"10725:55:46"},{"nodeType":"YulVariableDeclaration","src":"10789:26:46","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"10812:2:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10799:12:46"},"nodeType":"YulFunctionCall","src":"10799:16:46"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"10793:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"10838:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"10840:16:46"},"nodeType":"YulFunctionCall","src":"10840:18:46"},"nodeType":"YulExpressionStatement","src":"10840:18:46"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"10830:2:46"},{"name":"_1","nodeType":"YulIdentifier","src":"10834:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10827:2:46"},"nodeType":"YulFunctionCall","src":"10827:10:46"},"nodeType":"YulIf","src":"10824:36:46"},{"nodeType":"YulVariableDeclaration","src":"10869:17:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10883:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10879:3:46"},"nodeType":"YulFunctionCall","src":"10879:7:46"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"10873:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"10895:23:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10915:2:46","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10909:5:46"},"nodeType":"YulFunctionCall","src":"10909:9:46"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"10899:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"10927:71:46","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10949:6:46"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"10973:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"10977:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10969:3:46"},"nodeType":"YulFunctionCall","src":"10969:13:46"},{"name":"_4","nodeType":"YulIdentifier","src":"10984:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10965:3:46"},"nodeType":"YulFunctionCall","src":"10965:22:46"},{"kind":"number","nodeType":"YulLiteral","src":"10989:2:46","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10961:3:46"},"nodeType":"YulFunctionCall","src":"10961:31:46"},{"name":"_4","nodeType":"YulIdentifier","src":"10994:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10957:3:46"},"nodeType":"YulFunctionCall","src":"10957:40:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10945:3:46"},"nodeType":"YulFunctionCall","src":"10945:53:46"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"10931:10:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"11057:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"11059:16:46"},"nodeType":"YulFunctionCall","src":"11059:18:46"},"nodeType":"YulExpressionStatement","src":"11059:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"11016:10:46"},{"name":"_1","nodeType":"YulIdentifier","src":"11028:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11013:2:46"},"nodeType":"YulFunctionCall","src":"11013:18:46"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"11036:10:46"},{"name":"memPtr","nodeType":"YulIdentifier","src":"11048:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11033:2:46"},"nodeType":"YulFunctionCall","src":"11033:22:46"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"11010:2:46"},"nodeType":"YulFunctionCall","src":"11010:46:46"},"nodeType":"YulIf","src":"11007:72:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11095:2:46","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"11099:10:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11088:6:46"},"nodeType":"YulFunctionCall","src":"11088:22:46"},"nodeType":"YulExpressionStatement","src":"11088:22:46"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11126:6:46"},{"name":"_3","nodeType":"YulIdentifier","src":"11134:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11119:6:46"},"nodeType":"YulFunctionCall","src":"11119:18:46"},"nodeType":"YulExpressionStatement","src":"11119:18:46"},{"body":{"nodeType":"YulBlock","src":"11183:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11192:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11195:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11185:6:46"},"nodeType":"YulFunctionCall","src":"11185:12:46"},"nodeType":"YulExpressionStatement","src":"11185:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"11160:2:46"},{"name":"_3","nodeType":"YulIdentifier","src":"11164:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11156:3:46"},"nodeType":"YulFunctionCall","src":"11156:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"11169:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11152:3:46"},"nodeType":"YulFunctionCall","src":"11152:20:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11174:7:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11149:2:46"},"nodeType":"YulFunctionCall","src":"11149:33:46"},"nodeType":"YulIf","src":"11146:53:46"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11225:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"11233:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11221:3:46"},"nodeType":"YulFunctionCall","src":"11221:15:46"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"11242:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"11246:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11238:3:46"},"nodeType":"YulFunctionCall","src":"11238:11:46"},{"name":"_3","nodeType":"YulIdentifier","src":"11251:2:46"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"11208:12:46"},"nodeType":"YulFunctionCall","src":"11208:46:46"},"nodeType":"YulExpressionStatement","src":"11208:46:46"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11278:6:46"},{"name":"_3","nodeType":"YulIdentifier","src":"11286:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11274:3:46"},"nodeType":"YulFunctionCall","src":"11274:15:46"},{"kind":"number","nodeType":"YulLiteral","src":"11291:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11270:3:46"},"nodeType":"YulFunctionCall","src":"11270:24:46"},{"kind":"number","nodeType":"YulLiteral","src":"11296:1:46","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11263:6:46"},"nodeType":"YulFunctionCall","src":"11263:35:46"},"nodeType":"YulExpressionStatement","src":"11263:35:46"},{"nodeType":"YulAssignment","src":"11307:16:46","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"11317:6:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"11307:6:46"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10388:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10399:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10411:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10419:6:46","type":""}],"src":"10334:995:46"},{"body":{"nodeType":"YulBlock","src":"11455:99:46","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11472:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"11483:2:46","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11465:6:46"},"nodeType":"YulFunctionCall","src":"11465:21:46"},"nodeType":"YulExpressionStatement","src":"11465:21:46"},{"nodeType":"YulAssignment","src":"11495:53:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11521:6:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11533:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"11544:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11529:3:46"},"nodeType":"YulFunctionCall","src":"11529:18:46"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"11503:17:46"},"nodeType":"YulFunctionCall","src":"11503:45:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11495:4:46"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11424:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11435:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11446:4:46","type":""}],"src":"11334:220:46"},{"body":{"nodeType":"YulBlock","src":"11681:129:46","statements":[{"nodeType":"YulAssignment","src":"11691:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11703:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"11714:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11699:3:46"},"nodeType":"YulFunctionCall","src":"11699:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11691:4:46"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11763:6:46"}],"functionName":{"name":"validator_assert_enum_SettlementMode","nodeType":"YulIdentifier","src":"11726:36:46"},"nodeType":"YulFunctionCall","src":"11726:44:46"},"nodeType":"YulExpressionStatement","src":"11726:44:46"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11786:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"11797:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11779:6:46"},"nodeType":"YulFunctionCall","src":"11779:25:46"},"nodeType":"YulExpressionStatement","src":"11779:25:46"}]},"name":"abi_encode_tuple_t_enum$_ParticipantStatus_$12683__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11650:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11661:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11672:4:46","type":""}],"src":"11559:251:46"},{"body":{"nodeType":"YulBlock","src":"11935:101:46","statements":[{"nodeType":"YulAssignment","src":"11945:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11957:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"11968:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11953:3:46"},"nodeType":"YulFunctionCall","src":"11953:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11945:4:46"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12012:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"12020:9:46"}],"functionName":{"name":"abi_encode_enum_ChallengeStatus","nodeType":"YulIdentifier","src":"11980:31:46"},"nodeType":"YulFunctionCall","src":"11980:50:46"},"nodeType":"YulExpressionStatement","src":"11980:50:46"}]},"name":"abi_encode_tuple_t_enum$_ChallengeStatus_$12673__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11904:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11915:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11926:4:46","type":""}],"src":"11815:221:46"},{"body":{"nodeType":"YulBlock","src":"12128:167:46","statements":[{"body":{"nodeType":"YulBlock","src":"12174:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12183:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12186:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12176:6:46"},"nodeType":"YulFunctionCall","src":"12176:12:46"},"nodeType":"YulExpressionStatement","src":"12176:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12149:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"12158:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12145:3:46"},"nodeType":"YulFunctionCall","src":"12145:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"12170:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12141:3:46"},"nodeType":"YulFunctionCall","src":"12141:32:46"},"nodeType":"YulIf","src":"12138:52:46"},{"nodeType":"YulAssignment","src":"12199:39:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12228:9:46"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"12209:18:46"},"nodeType":"YulFunctionCall","src":"12209:29:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12199:6:46"}]},{"nodeType":"YulAssignment","src":"12247:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12274:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12285:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12270:3:46"},"nodeType":"YulFunctionCall","src":"12270:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12257:12:46"},"nodeType":"YulFunctionCall","src":"12257:32:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12247:6:46"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12086:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12097:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12109:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12117:6:46","type":""}],"src":"12041:254:46"},{"body":{"nodeType":"YulBlock","src":"12409:76:46","statements":[{"nodeType":"YulAssignment","src":"12419:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12431:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12442:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12427:3:46"},"nodeType":"YulFunctionCall","src":"12427:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12419:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12461:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"12472:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12454:6:46"},"nodeType":"YulFunctionCall","src":"12454:25:46"},"nodeType":"YulExpressionStatement","src":"12454:25:46"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12378:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12389:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12400:4:46","type":""}],"src":"12300:185:46"},{"body":{"nodeType":"YulBlock","src":"12627:145:46","statements":[{"nodeType":"YulAssignment","src":"12637:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12649:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12660:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12645:3:46"},"nodeType":"YulFunctionCall","src":"12645:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12637:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12679:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"12690:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12672:6:46"},"nodeType":"YulFunctionCall","src":"12672:25:46"},"nodeType":"YulExpressionStatement","src":"12672:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12717:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12728:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12713:3:46"},"nodeType":"YulFunctionCall","src":"12713:18:46"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12737:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12753:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"12758:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12749:3:46"},"nodeType":"YulFunctionCall","src":"12749:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"12762:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12745:3:46"},"nodeType":"YulFunctionCall","src":"12745:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12733:3:46"},"nodeType":"YulFunctionCall","src":"12733:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12706:6:46"},"nodeType":"YulFunctionCall","src":"12706:60:46"},"nodeType":"YulExpressionStatement","src":"12706:60:46"}]},"name":"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12588:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12599:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12607:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12618:4:46","type":""}],"src":"12490:282:46"},{"body":{"nodeType":"YulBlock","src":"12858:103:46","statements":[{"body":{"nodeType":"YulBlock","src":"12904:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12913:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12916:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12906:6:46"},"nodeType":"YulFunctionCall","src":"12906:12:46"},"nodeType":"YulExpressionStatement","src":"12906:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12879:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"12888:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12875:3:46"},"nodeType":"YulFunctionCall","src":"12875:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"12900:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12871:3:46"},"nodeType":"YulFunctionCall","src":"12871:32:46"},"nodeType":"YulIf","src":"12868:52:46"},{"nodeType":"YulAssignment","src":"12929:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12945:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12939:5:46"},"nodeType":"YulFunctionCall","src":"12939:16:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12929:6:46"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12824:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12835:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12847:6:46","type":""}],"src":"12777:184:46"},{"body":{"nodeType":"YulBlock","src":"12998:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13015:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13022:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"13027:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"13018:3:46"},"nodeType":"YulFunctionCall","src":"13018:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13008:6:46"},"nodeType":"YulFunctionCall","src":"13008:31:46"},"nodeType":"YulExpressionStatement","src":"13008:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13055:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"13058:4:46","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13048:6:46"},"nodeType":"YulFunctionCall","src":"13048:15:46"},"nodeType":"YulExpressionStatement","src":"13048:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13079:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13082:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13072:6:46"},"nodeType":"YulFunctionCall","src":"13072:15:46"},"nodeType":"YulExpressionStatement","src":"13072:15:46"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"12966:127:46"},{"body":{"nodeType":"YulBlock","src":"13147:79:46","statements":[{"nodeType":"YulAssignment","src":"13157:17:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"13169:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"13172:1:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13165:3:46"},"nodeType":"YulFunctionCall","src":"13165:9:46"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"13157:4:46"}]},{"body":{"nodeType":"YulBlock","src":"13198:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"13200:16:46"},"nodeType":"YulFunctionCall","src":"13200:18:46"},"nodeType":"YulExpressionStatement","src":"13200:18:46"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"13189:4:46"},{"name":"x","nodeType":"YulIdentifier","src":"13195:1:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13186:2:46"},"nodeType":"YulFunctionCall","src":"13186:11:46"},"nodeType":"YulIf","src":"13183:37:46"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"13129:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"13132:1:46","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"13138:4:46","type":""}],"src":"13098:128:46"},{"body":{"nodeType":"YulBlock","src":"13279:77:46","statements":[{"nodeType":"YulAssignment","src":"13289:16:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"13300:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"13303:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13296:3:46"},"nodeType":"YulFunctionCall","src":"13296:9:46"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"13289:3:46"}]},{"body":{"nodeType":"YulBlock","src":"13328:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"13330:16:46"},"nodeType":"YulFunctionCall","src":"13330:18:46"},"nodeType":"YulExpressionStatement","src":"13330:18:46"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"13320:1:46"},{"name":"sum","nodeType":"YulIdentifier","src":"13323:3:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13317:2:46"},"nodeType":"YulFunctionCall","src":"13317:10:46"},"nodeType":"YulIf","src":"13314:36:46"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"13262:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"13265:1:46","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"13271:3:46","type":""}],"src":"13231:125:46"},{"body":{"nodeType":"YulBlock","src":"13440:194:46","statements":[{"body":{"nodeType":"YulBlock","src":"13486:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13495:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13498:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13488:6:46"},"nodeType":"YulFunctionCall","src":"13488:12:46"},"nodeType":"YulExpressionStatement","src":"13488:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13461:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"13470:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13457:3:46"},"nodeType":"YulFunctionCall","src":"13457:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"13482:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13453:3:46"},"nodeType":"YulFunctionCall","src":"13453:32:46"},"nodeType":"YulIf","src":"13450:52:46"},{"nodeType":"YulVariableDeclaration","src":"13511:29:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13530:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13524:5:46"},"nodeType":"YulFunctionCall","src":"13524:16:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13515:5:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"13588:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13597:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13600:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13590:6:46"},"nodeType":"YulFunctionCall","src":"13590:12:46"},"nodeType":"YulExpressionStatement","src":"13590:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13562:5:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13573:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"13580:4:46","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13569:3:46"},"nodeType":"YulFunctionCall","src":"13569:16:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"13559:2:46"},"nodeType":"YulFunctionCall","src":"13559:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13552:6:46"},"nodeType":"YulFunctionCall","src":"13552:35:46"},"nodeType":"YulIf","src":"13549:55:46"},{"nodeType":"YulAssignment","src":"13613:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"13623:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13613:6:46"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13406:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13417:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13429:6:46","type":""}],"src":"13361:273:46"},{"body":{"nodeType":"YulBlock","src":"13694:325:46","statements":[{"nodeType":"YulAssignment","src":"13704:22:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13718:1:46","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"13721:4:46"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"13714:3:46"},"nodeType":"YulFunctionCall","src":"13714:12:46"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"13704:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"13735:38:46","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"13765:4:46"},{"kind":"number","nodeType":"YulLiteral","src":"13771:1:46","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13761:3:46"},"nodeType":"YulFunctionCall","src":"13761:12:46"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"13739:18:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"13812:31:46","statements":[{"nodeType":"YulAssignment","src":"13814:27:46","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13828:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"13836:4:46","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13824:3:46"},"nodeType":"YulFunctionCall","src":"13824:17:46"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"13814:6:46"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"13792:18:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13785:6:46"},"nodeType":"YulFunctionCall","src":"13785:26:46"},"nodeType":"YulIf","src":"13782:61:46"},{"body":{"nodeType":"YulBlock","src":"13902:111:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13923:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13930:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"13935:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"13926:3:46"},"nodeType":"YulFunctionCall","src":"13926:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13916:6:46"},"nodeType":"YulFunctionCall","src":"13916:31:46"},"nodeType":"YulExpressionStatement","src":"13916:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13967:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"13970:4:46","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13960:6:46"},"nodeType":"YulFunctionCall","src":"13960:15:46"},"nodeType":"YulExpressionStatement","src":"13960:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13995:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13998:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13988:6:46"},"nodeType":"YulFunctionCall","src":"13988:15:46"},"nodeType":"YulExpressionStatement","src":"13988:15:46"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"13858:18:46"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13881:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"13889:2:46","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"13878:2:46"},"nodeType":"YulFunctionCall","src":"13878:14:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"13855:2:46"},"nodeType":"YulFunctionCall","src":"13855:38:46"},"nodeType":"YulIf","src":"13852:161:46"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"13674:4:46","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"13683:6:46","type":""}],"src":"13639:380:46"},{"body":{"nodeType":"YulBlock","src":"14125:102:46","statements":[{"nodeType":"YulAssignment","src":"14135:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14147:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"14158:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14143:3:46"},"nodeType":"YulFunctionCall","src":"14143:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14135:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14177:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14192:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14208:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"14213:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14204:3:46"},"nodeType":"YulFunctionCall","src":"14204:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"14217:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14200:3:46"},"nodeType":"YulFunctionCall","src":"14200:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14188:3:46"},"nodeType":"YulFunctionCall","src":"14188:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14170:6:46"},"nodeType":"YulFunctionCall","src":"14170:51:46"},"nodeType":"YulExpressionStatement","src":"14170:51:46"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14094:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14105:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14116:4:46","type":""}],"src":"14024:203:46"},{"body":{"nodeType":"YulBlock","src":"14361:119:46","statements":[{"nodeType":"YulAssignment","src":"14371:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14383:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"14394:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14379:3:46"},"nodeType":"YulFunctionCall","src":"14379:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14371:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14413:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"14424:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14406:6:46"},"nodeType":"YulFunctionCall","src":"14406:25:46"},"nodeType":"YulExpressionStatement","src":"14406:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14451:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"14462:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14447:3:46"},"nodeType":"YulFunctionCall","src":"14447:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"14467:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14440:6:46"},"nodeType":"YulFunctionCall","src":"14440:34:46"},"nodeType":"YulExpressionStatement","src":"14440:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14322:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14333:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14341:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14352:4:46","type":""}],"src":"14232:248:46"},{"body":{"nodeType":"YulBlock","src":"14563:369:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14580:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"14585:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14573:6:46"},"nodeType":"YulFunctionCall","src":"14573:19:46"},"nodeType":"YulExpressionStatement","src":"14573:19:46"},{"nodeType":"YulVariableDeclaration","src":"14601:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"14611:4:46","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"14605:2:46","type":""}]},{"nodeType":"YulAssignment","src":"14624:19:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14635:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"14640:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14631:3:46"},"nodeType":"YulFunctionCall","src":"14631:12:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14624:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"14652:19:46","value":{"name":"value","nodeType":"YulIdentifier","src":"14666:5:46"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"14656:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14680:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"14689:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"14684:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"14748:159:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14769:3:46"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"14797:6:46"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"14778:18:46"},"nodeType":"YulFunctionCall","src":"14778:26:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14814:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"14819:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14810:3:46"},"nodeType":"YulFunctionCall","src":"14810:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"14823:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14806:3:46"},"nodeType":"YulFunctionCall","src":"14806:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14774:3:46"},"nodeType":"YulFunctionCall","src":"14774:52:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14762:6:46"},"nodeType":"YulFunctionCall","src":"14762:65:46"},"nodeType":"YulExpressionStatement","src":"14762:65:46"},{"nodeType":"YulAssignment","src":"14840:19:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14851:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"14856:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14847:3:46"},"nodeType":"YulFunctionCall","src":"14847:12:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14840:3:46"}]},{"nodeType":"YulAssignment","src":"14872:25:46","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"14886:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"14894:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14882:3:46"},"nodeType":"YulFunctionCall","src":"14882:15:46"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"14872:6:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"14710:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"14713:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14707:2:46"},"nodeType":"YulFunctionCall","src":"14707:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"14721:18:46","statements":[{"nodeType":"YulAssignment","src":"14723:14:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"14732:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"14735:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14728:3:46"},"nodeType":"YulFunctionCall","src":"14728:9:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"14723:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"14703:3:46","statements":[]},"src":"14699:208:46"},{"nodeType":"YulAssignment","src":"14916:10:46","value":{"name":"pos","nodeType":"YulIdentifier","src":"14923:3:46"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14916:3:46"}]}]},"name":"abi_encode_array_address_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14532:5:46","type":""},{"name":"length","nodeType":"YulTypedName","src":"14539:6:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14547:3:46","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14555:3:46","type":""}],"src":"14485:447:46"},{"body":{"nodeType":"YulBlock","src":"15134:170:46","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15151:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"15162:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15144:6:46"},"nodeType":"YulFunctionCall","src":"15144:25:46"},"nodeType":"YulExpressionStatement","src":"15144:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15189:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"15200:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15185:3:46"},"nodeType":"YulFunctionCall","src":"15185:18:46"},{"kind":"number","nodeType":"YulLiteral","src":"15205:2:46","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15178:6:46"},"nodeType":"YulFunctionCall","src":"15178:30:46"},"nodeType":"YulExpressionStatement","src":"15178:30:46"},{"nodeType":"YulAssignment","src":"15217:81:46","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"15263:6:46"},{"name":"value2","nodeType":"YulIdentifier","src":"15271:6:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15283:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"15294:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15279:3:46"},"nodeType":"YulFunctionCall","src":"15279:18:46"}],"functionName":{"name":"abi_encode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"15225:37:46"},"nodeType":"YulFunctionCall","src":"15225:73:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15217:4:46"}]}]},"name":"abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_calldata_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15087:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15098:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15106:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15114:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15125:4:46","type":""}],"src":"14937:367:46"},{"body":{"nodeType":"YulBlock","src":"15446:119:46","statements":[{"nodeType":"YulAssignment","src":"15456:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15468:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"15479:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15464:3:46"},"nodeType":"YulFunctionCall","src":"15464:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15456:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15498:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"15509:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15491:6:46"},"nodeType":"YulFunctionCall","src":"15491:25:46"},"nodeType":"YulExpressionStatement","src":"15491:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15536:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"15547:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15532:3:46"},"nodeType":"YulFunctionCall","src":"15532:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"15552:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15525:6:46"},"nodeType":"YulFunctionCall","src":"15525:34:46"},"nodeType":"YulExpressionStatement","src":"15525:34:46"}]},"name":"abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15407:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15418:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15426:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15437:4:46","type":""}],"src":"15309:256:46"},{"body":{"nodeType":"YulBlock","src":"15678:101:46","statements":[{"nodeType":"YulAssignment","src":"15688:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15700:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"15711:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15696:3:46"},"nodeType":"YulFunctionCall","src":"15696:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15688:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15730:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15745:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15761:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"15765:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15757:3:46"},"nodeType":"YulFunctionCall","src":"15757:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"15769:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15753:3:46"},"nodeType":"YulFunctionCall","src":"15753:18:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15741:3:46"},"nodeType":"YulFunctionCall","src":"15741:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15723:6:46"},"nodeType":"YulFunctionCall","src":"15723:50:46"},"nodeType":"YulExpressionStatement","src":"15723:50:46"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15647:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15658:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15669:4:46","type":""}],"src":"15570:209:46"},{"body":{"nodeType":"YulBlock","src":"15844:94:46","statements":[{"nodeType":"YulAssignment","src":"15854:29:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15876:6:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"15863:12:46"},"nodeType":"YulFunctionCall","src":"15863:20:46"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"15854:5:46"}]},{"body":{"nodeType":"YulBlock","src":"15916:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15925:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15928:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15918:6:46"},"nodeType":"YulFunctionCall","src":"15918:12:46"},"nodeType":"YulExpressionStatement","src":"15918:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15905:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"15912:1:46","type":"","value":"2"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15902:2:46"},"nodeType":"YulFunctionCall","src":"15902:12:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15895:6:46"},"nodeType":"YulFunctionCall","src":"15895:20:46"},"nodeType":"YulIf","src":"15892:40:46"}]},"name":"abi_decode_enum_ChallengeKind","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"15823:6:46","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"15834:5:46","type":""}],"src":"15784:154:46"},{"body":{"nodeType":"YulBlock","src":"16031:432:46","statements":[{"nodeType":"YulVariableDeclaration","src":"16041:43:46","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16080:3:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16067:12:46"},"nodeType":"YulFunctionCall","src":"16067:17:46"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"16045:18:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"16173:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16182:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16185:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"16175:6:46"},"nodeType":"YulFunctionCall","src":"16175:12:46"},"nodeType":"YulExpressionStatement","src":"16175:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"16107:18:46"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"16135:12:46"},"nodeType":"YulFunctionCall","src":"16135:14:46"},{"name":"base_ref","nodeType":"YulIdentifier","src":"16151:8:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16131:3:46"},"nodeType":"YulFunctionCall","src":"16131:29:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16166:2:46","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"16162:3:46"},"nodeType":"YulFunctionCall","src":"16162:7:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16127:3:46"},"nodeType":"YulFunctionCall","src":"16127:43:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"16103:3:46"},"nodeType":"YulFunctionCall","src":"16103:68:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"16096:6:46"},"nodeType":"YulFunctionCall","src":"16096:76:46"},"nodeType":"YulIf","src":"16093:96:46"},{"nodeType":"YulVariableDeclaration","src":"16198:48:46","value":{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"16217:18:46"},{"name":"base_ref","nodeType":"YulIdentifier","src":"16237:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16213:3:46"},"nodeType":"YulFunctionCall","src":"16213:33:46"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"16202:7:46","type":""}]},{"nodeType":"YulAssignment","src":"16255:31:46","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"16278:7:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16265:12:46"},"nodeType":"YulFunctionCall","src":"16265:21:46"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"16255:6:46"}]},{"nodeType":"YulAssignment","src":"16295:27:46","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"16308:7:46"},{"kind":"number","nodeType":"YulLiteral","src":"16317:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16304:3:46"},"nodeType":"YulFunctionCall","src":"16304:18:46"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"16295:5:46"}]},{"body":{"nodeType":"YulBlock","src":"16365:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16374:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16377:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"16367:6:46"},"nodeType":"YulFunctionCall","src":"16367:12:46"},"nodeType":"YulExpressionStatement","src":"16367:12:46"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"16337:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16353:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"16357:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16349:3:46"},"nodeType":"YulFunctionCall","src":"16349:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"16361:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16345:3:46"},"nodeType":"YulFunctionCall","src":"16345:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16334:2:46"},"nodeType":"YulFunctionCall","src":"16334:30:46"},"nodeType":"YulIf","src":"16331:50:46"},{"body":{"nodeType":"YulBlock","src":"16441:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16450:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16453:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"16443:6:46"},"nodeType":"YulFunctionCall","src":"16443:12:46"},"nodeType":"YulExpressionStatement","src":"16443:12:46"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16397:5:46"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"16408:12:46"},"nodeType":"YulFunctionCall","src":"16408:14:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16428:1:46","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"16431:6:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16424:3:46"},"nodeType":"YulFunctionCall","src":"16424:14:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16404:3:46"},"nodeType":"YulFunctionCall","src":"16404:35:46"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"16393:3:46"},"nodeType":"YulFunctionCall","src":"16393:47:46"},"nodeType":"YulIf","src":"16390:67:46"}]},"name":"calldata_access_array_bytes32_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"15995:8:46","type":""},{"name":"ptr","nodeType":"YulTypedName","src":"16005:3:46","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"16013:5:46","type":""},{"name":"length","nodeType":"YulTypedName","src":"16020:6:46","type":""}],"src":"15943:520:46"},{"body":{"nodeType":"YulBlock","src":"16546:233:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16563:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"16568:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16556:6:46"},"nodeType":"YulFunctionCall","src":"16556:19:46"},"nodeType":"YulExpressionStatement","src":"16556:19:46"},{"body":{"nodeType":"YulBlock","src":"16619:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16628:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16631:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"16621:6:46"},"nodeType":"YulFunctionCall","src":"16621:12:46"},"nodeType":"YulExpressionStatement","src":"16621:12:46"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"16590:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16606:3:46","type":"","value":"251"},{"kind":"number","nodeType":"YulLiteral","src":"16611:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16602:3:46"},"nodeType":"YulFunctionCall","src":"16602:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"16615:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16598:3:46"},"nodeType":"YulFunctionCall","src":"16598:19:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16587:2:46"},"nodeType":"YulFunctionCall","src":"16587:31:46"},"nodeType":"YulIf","src":"16584:51:46"},{"nodeType":"YulVariableDeclaration","src":"16644:30:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16664:1:46","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"16667:6:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16660:3:46"},"nodeType":"YulFunctionCall","src":"16660:14:46"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"16648:8:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16700:3:46"},{"kind":"number","nodeType":"YulLiteral","src":"16705:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16696:3:46"},"nodeType":"YulFunctionCall","src":"16696:14:46"},{"name":"start","nodeType":"YulIdentifier","src":"16712:5:46"},{"name":"length_1","nodeType":"YulIdentifier","src":"16719:8:46"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"16683:12:46"},"nodeType":"YulFunctionCall","src":"16683:45:46"},"nodeType":"YulExpressionStatement","src":"16683:45:46"},{"nodeType":"YulAssignment","src":"16737:36:46","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16752:3:46"},{"name":"length_1","nodeType":"YulIdentifier","src":"16757:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16748:3:46"},"nodeType":"YulFunctionCall","src":"16748:18:46"},{"kind":"number","nodeType":"YulLiteral","src":"16768:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16744:3:46"},"nodeType":"YulFunctionCall","src":"16744:29:46"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16737:3:46"}]}]},"name":"abi_encode_array_bytes32_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"16515:5:46","type":""},{"name":"length","nodeType":"YulTypedName","src":"16522:6:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16530:3:46","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16538:3:46","type":""}],"src":"16468:311:46"},{"body":{"nodeType":"YulBlock","src":"16861:424:46","statements":[{"nodeType":"YulVariableDeclaration","src":"16871:43:46","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16910:3:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16897:12:46"},"nodeType":"YulFunctionCall","src":"16897:17:46"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"16875:18:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"17003:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17012:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17015:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17005:6:46"},"nodeType":"YulFunctionCall","src":"17005:12:46"},"nodeType":"YulExpressionStatement","src":"17005:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"16937:18:46"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"16965:12:46"},"nodeType":"YulFunctionCall","src":"16965:14:46"},{"name":"base_ref","nodeType":"YulIdentifier","src":"16981:8:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16961:3:46"},"nodeType":"YulFunctionCall","src":"16961:29:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16996:2:46","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"16992:3:46"},"nodeType":"YulFunctionCall","src":"16992:7:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16957:3:46"},"nodeType":"YulFunctionCall","src":"16957:43:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"16933:3:46"},"nodeType":"YulFunctionCall","src":"16933:68:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"16926:6:46"},"nodeType":"YulFunctionCall","src":"16926:76:46"},"nodeType":"YulIf","src":"16923:96:46"},{"nodeType":"YulVariableDeclaration","src":"17028:48:46","value":{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"17047:18:46"},{"name":"base_ref","nodeType":"YulIdentifier","src":"17067:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17043:3:46"},"nodeType":"YulFunctionCall","src":"17043:33:46"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"17032:7:46","type":""}]},{"nodeType":"YulAssignment","src":"17085:31:46","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"17108:7:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"17095:12:46"},"nodeType":"YulFunctionCall","src":"17095:21:46"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"17085:6:46"}]},{"nodeType":"YulAssignment","src":"17125:27:46","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"17138:7:46"},{"kind":"number","nodeType":"YulLiteral","src":"17147:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17134:3:46"},"nodeType":"YulFunctionCall","src":"17134:18:46"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17125:5:46"}]},{"body":{"nodeType":"YulBlock","src":"17195:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17204:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17207:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17197:6:46"},"nodeType":"YulFunctionCall","src":"17197:12:46"},"nodeType":"YulExpressionStatement","src":"17197:12:46"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"17167:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17183:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"17187:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"17179:3:46"},"nodeType":"YulFunctionCall","src":"17179:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"17191:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17175:3:46"},"nodeType":"YulFunctionCall","src":"17175:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"17164:2:46"},"nodeType":"YulFunctionCall","src":"17164:30:46"},"nodeType":"YulIf","src":"17161:50:46"},{"body":{"nodeType":"YulBlock","src":"17263:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17272:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17275:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17265:6:46"},"nodeType":"YulFunctionCall","src":"17265:12:46"},"nodeType":"YulExpressionStatement","src":"17265:12:46"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17227:5:46"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"17238:12:46"},"nodeType":"YulFunctionCall","src":"17238:14:46"},{"name":"length","nodeType":"YulIdentifier","src":"17254:6:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17234:3:46"},"nodeType":"YulFunctionCall","src":"17234:27:46"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"17223:3:46"},"nodeType":"YulFunctionCall","src":"17223:39:46"},"nodeType":"YulIf","src":"17220:59:46"}]},"name":"calldata_access_string_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"16825:8:46","type":""},{"name":"ptr","nodeType":"YulTypedName","src":"16835:3:46","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"16843:5:46","type":""},{"name":"length","nodeType":"YulTypedName","src":"16850:6:46","type":""}],"src":"16784:501:46"},{"body":{"nodeType":"YulBlock","src":"17357:200:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17374:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"17379:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17367:6:46"},"nodeType":"YulFunctionCall","src":"17367:19:46"},"nodeType":"YulExpressionStatement","src":"17367:19:46"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17412:3:46"},{"kind":"number","nodeType":"YulLiteral","src":"17417:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17408:3:46"},"nodeType":"YulFunctionCall","src":"17408:14:46"},{"name":"start","nodeType":"YulIdentifier","src":"17424:5:46"},{"name":"length","nodeType":"YulIdentifier","src":"17431:6:46"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"17395:12:46"},"nodeType":"YulFunctionCall","src":"17395:43:46"},"nodeType":"YulExpressionStatement","src":"17395:43:46"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17462:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"17467:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17458:3:46"},"nodeType":"YulFunctionCall","src":"17458:16:46"},{"kind":"number","nodeType":"YulLiteral","src":"17476:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17454:3:46"},"nodeType":"YulFunctionCall","src":"17454:27:46"},{"kind":"number","nodeType":"YulLiteral","src":"17483:1:46","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17447:6:46"},"nodeType":"YulFunctionCall","src":"17447:38:46"},"nodeType":"YulExpressionStatement","src":"17447:38:46"},{"nodeType":"YulAssignment","src":"17494:57:46","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17509:3:46"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"17522:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"17530:2:46","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17518:3:46"},"nodeType":"YulFunctionCall","src":"17518:15:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17539:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"17535:3:46"},"nodeType":"YulFunctionCall","src":"17535:7:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17514:3:46"},"nodeType":"YulFunctionCall","src":"17514:29:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17505:3:46"},"nodeType":"YulFunctionCall","src":"17505:39:46"},{"kind":"number","nodeType":"YulLiteral","src":"17546:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17501:3:46"},"nodeType":"YulFunctionCall","src":"17501:50:46"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17494:3:46"}]}]},"name":"abi_encode_string_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"17326:5:46","type":""},{"name":"length","nodeType":"YulTypedName","src":"17333:6:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17341:3:46","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17349:3:46","type":""}],"src":"17290:267:46"},{"body":{"nodeType":"YulBlock","src":"17753:2531:46","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17770:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17781:2:46","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17763:6:46"},"nodeType":"YulFunctionCall","src":"17763:21:46"},"nodeType":"YulExpressionStatement","src":"17763:21:46"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17853:6:46"}],"functionName":{"name":"abi_decode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"17823:29:46"},"nodeType":"YulFunctionCall","src":"17823:37:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17866:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17877:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17862:3:46"},"nodeType":"YulFunctionCall","src":"17862:18:46"}],"functionName":{"name":"abi_encode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"17793:29:46"},"nodeType":"YulFunctionCall","src":"17793:88:46"},"nodeType":"YulExpressionStatement","src":"17793:88:46"},{"nodeType":"YulVariableDeclaration","src":"17890:66:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17944:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"17952:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17940:3:46"},"nodeType":"YulFunctionCall","src":"17940:15:46"}],"functionName":{"name":"abi_decode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"17910:29:46"},"nodeType":"YulFunctionCall","src":"17910:46:46"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"17894:12:46","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"17995:12:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18013:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"18024:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18009:3:46"},"nodeType":"YulFunctionCall","src":"18009:18:46"}],"functionName":{"name":"abi_encode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"17965:29:46"},"nodeType":"YulFunctionCall","src":"17965:63:46"},"nodeType":"YulExpressionStatement","src":"17965:63:46"},{"nodeType":"YulVariableDeclaration","src":"18037:68:46","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18093:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"18101:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18089:3:46"},"nodeType":"YulFunctionCall","src":"18089:15:46"}],"functionName":{"name":"abi_decode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"18059:29:46"},"nodeType":"YulFunctionCall","src":"18059:46:46"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"18041:14:46","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"18144:14:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18164:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"18175:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18160:3:46"},"nodeType":"YulFunctionCall","src":"18160:18:46"}],"functionName":{"name":"abi_encode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"18114:29:46"},"nodeType":"YulFunctionCall","src":"18114:65:46"},"nodeType":"YulExpressionStatement","src":"18114:65:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18199:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"18210:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18195:3:46"},"nodeType":"YulFunctionCall","src":"18195:19:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18233:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"18241:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18229:3:46"},"nodeType":"YulFunctionCall","src":"18229:15:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"18216:12:46"},"nodeType":"YulFunctionCall","src":"18216:29:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18188:6:46"},"nodeType":"YulFunctionCall","src":"18188:58:46"},"nodeType":"YulExpressionStatement","src":"18188:58:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18266:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"18277:3:46","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18262:3:46"},"nodeType":"YulFunctionCall","src":"18262:19:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18300:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"18308:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18296:3:46"},"nodeType":"YulFunctionCall","src":"18296:16:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"18283:12:46"},"nodeType":"YulFunctionCall","src":"18283:30:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18255:6:46"},"nodeType":"YulFunctionCall","src":"18255:59:46"},"nodeType":"YulExpressionStatement","src":"18255:59:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18334:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"18345:3:46","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18330:3:46"},"nodeType":"YulFunctionCall","src":"18330:19:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18368:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"18376:3:46","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18364:3:46"},"nodeType":"YulFunctionCall","src":"18364:16:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"18351:12:46"},"nodeType":"YulFunctionCall","src":"18351:30:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18323:6:46"},"nodeType":"YulFunctionCall","src":"18323:59:46"},"nodeType":"YulExpressionStatement","src":"18323:59:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18402:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"18413:3:46","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18398:3:46"},"nodeType":"YulFunctionCall","src":"18398:19:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18436:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"18444:3:46","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18432:3:46"},"nodeType":"YulFunctionCall","src":"18432:16:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"18419:12:46"},"nodeType":"YulFunctionCall","src":"18419:30:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18391:6:46"},"nodeType":"YulFunctionCall","src":"18391:59:46"},"nodeType":"YulExpressionStatement","src":"18391:59:46"},{"nodeType":"YulVariableDeclaration","src":"18459:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"18469:3:46","type":"","value":"256"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"18463:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18492:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"18503:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18488:3:46"},"nodeType":"YulFunctionCall","src":"18488:18:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18525:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"18533:3:46","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18521:3:46"},"nodeType":"YulFunctionCall","src":"18521:16:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"18508:12:46"},"nodeType":"YulFunctionCall","src":"18508:30:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18481:6:46"},"nodeType":"YulFunctionCall","src":"18481:58:46"},"nodeType":"YulExpressionStatement","src":"18481:58:46"},{"nodeType":"YulVariableDeclaration","src":"18548:103:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18627:6:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18639:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"18647:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18635:3:46"},"nodeType":"YulFunctionCall","src":"18635:15:46"}],"functionName":{"name":"calldata_access_array_bytes32_dyn_calldata","nodeType":"YulIdentifier","src":"18584:42:46"},"nodeType":"YulFunctionCall","src":"18584:67:46"},"variables":[{"name":"memberValue0_2","nodeType":"YulTypedName","src":"18552:14:46","type":""},{"name":"memberValue1","nodeType":"YulTypedName","src":"18568:12:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18660:16:46","value":{"kind":"number","nodeType":"YulLiteral","src":"18670:6:46","type":"","value":"0x01c0"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"18664:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18685:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"18695:3:46","type":"","value":"288"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"18689:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18718:9:46"},{"name":"_3","nodeType":"YulIdentifier","src":"18729:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18714:3:46"},"nodeType":"YulFunctionCall","src":"18714:18:46"},{"name":"_2","nodeType":"YulIdentifier","src":"18734:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18707:6:46"},"nodeType":"YulFunctionCall","src":"18707:30:46"},"nodeType":"YulExpressionStatement","src":"18707:30:46"},{"nodeType":"YulVariableDeclaration","src":"18746:102:46","value":{"arguments":[{"name":"memberValue0_2","nodeType":"YulIdentifier","src":"18798:14:46"},{"name":"memberValue1","nodeType":"YulIdentifier","src":"18814:12:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18832:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"18843:3:46","type":"","value":"480"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18828:3:46"},"nodeType":"YulFunctionCall","src":"18828:19:46"}],"functionName":{"name":"abi_encode_array_bytes32_dyn_calldata","nodeType":"YulIdentifier","src":"18760:37:46"},"nodeType":"YulFunctionCall","src":"18760:88:46"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"18750:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18857:105:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18938:6:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18950:6:46"},{"name":"_3","nodeType":"YulIdentifier","src":"18958:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18946:3:46"},"nodeType":"YulFunctionCall","src":"18946:15:46"}],"functionName":{"name":"calldata_access_array_bytes32_dyn_calldata","nodeType":"YulIdentifier","src":"18895:42:46"},"nodeType":"YulFunctionCall","src":"18895:67:46"},"variables":[{"name":"memberValue0_3","nodeType":"YulTypedName","src":"18861:14:46","type":""},{"name":"memberValue1_1","nodeType":"YulTypedName","src":"18877:14:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18971:17:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18985:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"18981:3:46"},"nodeType":"YulFunctionCall","src":"18981:7:46"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"18975:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18997:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"19007:3:46","type":"","value":"320"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"19001:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19030:9:46"},{"name":"_5","nodeType":"YulIdentifier","src":"19041:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19026:3:46"},"nodeType":"YulFunctionCall","src":"19026:18:46"},{"arguments":[{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"19054:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"19062:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19050:3:46"},"nodeType":"YulFunctionCall","src":"19050:22:46"},{"name":"_4","nodeType":"YulIdentifier","src":"19074:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19046:3:46"},"nodeType":"YulFunctionCall","src":"19046:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19019:6:46"},"nodeType":"YulFunctionCall","src":"19019:59:46"},"nodeType":"YulExpressionStatement","src":"19019:59:46"},{"nodeType":"YulVariableDeclaration","src":"19087:91:46","value":{"arguments":[{"name":"memberValue0_3","nodeType":"YulIdentifier","src":"19139:14:46"},{"name":"memberValue1_1","nodeType":"YulIdentifier","src":"19155:14:46"},{"name":"tail_1","nodeType":"YulIdentifier","src":"19171:6:46"}],"functionName":{"name":"abi_encode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"19101:37:46"},"nodeType":"YulFunctionCall","src":"19101:77:46"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"19091:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"19187:94:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19257:6:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19269:6:46"},{"name":"_5","nodeType":"YulIdentifier","src":"19277:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19265:3:46"},"nodeType":"YulFunctionCall","src":"19265:15:46"}],"functionName":{"name":"calldata_access_string_calldata","nodeType":"YulIdentifier","src":"19225:31:46"},"nodeType":"YulFunctionCall","src":"19225:56:46"},"variables":[{"name":"memberValue0_4","nodeType":"YulTypedName","src":"19191:14:46","type":""},{"name":"memberValue1_2","nodeType":"YulTypedName","src":"19207:14:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"19290:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"19300:3:46","type":"","value":"352"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"19294:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19323:9:46"},{"name":"_6","nodeType":"YulIdentifier","src":"19334:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19319:3:46"},"nodeType":"YulFunctionCall","src":"19319:18:46"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"19347:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"19355:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19343:3:46"},"nodeType":"YulFunctionCall","src":"19343:22:46"},{"name":"_4","nodeType":"YulIdentifier","src":"19367:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19339:3:46"},"nodeType":"YulFunctionCall","src":"19339:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19312:6:46"},"nodeType":"YulFunctionCall","src":"19312:59:46"},"nodeType":"YulExpressionStatement","src":"19312:59:46"},{"nodeType":"YulVariableDeclaration","src":"19380:80:46","value":{"arguments":[{"name":"memberValue0_4","nodeType":"YulIdentifier","src":"19421:14:46"},{"name":"memberValue1_2","nodeType":"YulIdentifier","src":"19437:14:46"},{"name":"tail_2","nodeType":"YulIdentifier","src":"19453:6:46"}],"functionName":{"name":"abi_encode_string_calldata","nodeType":"YulIdentifier","src":"19394:26:46"},"nodeType":"YulFunctionCall","src":"19394:66:46"},"variables":[{"name":"tail_3","nodeType":"YulTypedName","src":"19384:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"19469:94:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19539:6:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19551:6:46"},{"name":"_6","nodeType":"YulIdentifier","src":"19559:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19547:3:46"},"nodeType":"YulFunctionCall","src":"19547:15:46"}],"functionName":{"name":"calldata_access_string_calldata","nodeType":"YulIdentifier","src":"19507:31:46"},"nodeType":"YulFunctionCall","src":"19507:56:46"},"variables":[{"name":"memberValue0_5","nodeType":"YulTypedName","src":"19473:14:46","type":""},{"name":"memberValue1_3","nodeType":"YulTypedName","src":"19489:14:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"19572:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"19582:3:46","type":"","value":"384"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"19576:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19605:9:46"},{"name":"_7","nodeType":"YulIdentifier","src":"19616:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19601:3:46"},"nodeType":"YulFunctionCall","src":"19601:18:46"},{"arguments":[{"arguments":[{"name":"tail_3","nodeType":"YulIdentifier","src":"19629:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"19637:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19625:3:46"},"nodeType":"YulFunctionCall","src":"19625:22:46"},{"name":"_4","nodeType":"YulIdentifier","src":"19649:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19621:3:46"},"nodeType":"YulFunctionCall","src":"19621:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19594:6:46"},"nodeType":"YulFunctionCall","src":"19594:59:46"},"nodeType":"YulExpressionStatement","src":"19594:59:46"},{"nodeType":"YulVariableDeclaration","src":"19662:80:46","value":{"arguments":[{"name":"memberValue0_5","nodeType":"YulIdentifier","src":"19703:14:46"},{"name":"memberValue1_3","nodeType":"YulIdentifier","src":"19719:14:46"},{"name":"tail_3","nodeType":"YulIdentifier","src":"19735:6:46"}],"functionName":{"name":"abi_encode_string_calldata","nodeType":"YulIdentifier","src":"19676:26:46"},"nodeType":"YulFunctionCall","src":"19676:66:46"},"variables":[{"name":"tail_4","nodeType":"YulTypedName","src":"19666:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"19751:94:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19821:6:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19833:6:46"},{"name":"_7","nodeType":"YulIdentifier","src":"19841:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19829:3:46"},"nodeType":"YulFunctionCall","src":"19829:15:46"}],"functionName":{"name":"calldata_access_string_calldata","nodeType":"YulIdentifier","src":"19789:31:46"},"nodeType":"YulFunctionCall","src":"19789:56:46"},"variables":[{"name":"memberValue0_6","nodeType":"YulTypedName","src":"19755:14:46","type":""},{"name":"memberValue1_4","nodeType":"YulTypedName","src":"19771:14:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"19854:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"19864:3:46","type":"","value":"416"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"19858:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19887:9:46"},{"name":"_8","nodeType":"YulIdentifier","src":"19898:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19883:3:46"},"nodeType":"YulFunctionCall","src":"19883:18:46"},{"arguments":[{"arguments":[{"name":"tail_4","nodeType":"YulIdentifier","src":"19911:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"19919:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19907:3:46"},"nodeType":"YulFunctionCall","src":"19907:22:46"},{"name":"_4","nodeType":"YulIdentifier","src":"19931:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19903:3:46"},"nodeType":"YulFunctionCall","src":"19903:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19876:6:46"},"nodeType":"YulFunctionCall","src":"19876:59:46"},"nodeType":"YulExpressionStatement","src":"19876:59:46"},{"nodeType":"YulVariableDeclaration","src":"19944:80:46","value":{"arguments":[{"name":"memberValue0_6","nodeType":"YulIdentifier","src":"19985:14:46"},{"name":"memberValue1_4","nodeType":"YulIdentifier","src":"20001:14:46"},{"name":"tail_4","nodeType":"YulIdentifier","src":"20017:6:46"}],"functionName":{"name":"abi_encode_string_calldata","nodeType":"YulIdentifier","src":"19958:26:46"},"nodeType":"YulFunctionCall","src":"19958:66:46"},"variables":[{"name":"tail_5","nodeType":"YulTypedName","src":"19948:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"20033:94:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20103:6:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20115:6:46"},{"name":"_8","nodeType":"YulIdentifier","src":"20123:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20111:3:46"},"nodeType":"YulFunctionCall","src":"20111:15:46"}],"functionName":{"name":"calldata_access_string_calldata","nodeType":"YulIdentifier","src":"20071:31:46"},"nodeType":"YulFunctionCall","src":"20071:56:46"},"variables":[{"name":"memberValue0_7","nodeType":"YulTypedName","src":"20037:14:46","type":""},{"name":"memberValue1_5","nodeType":"YulTypedName","src":"20053:14:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20147:9:46"},{"name":"_2","nodeType":"YulIdentifier","src":"20158:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20143:3:46"},"nodeType":"YulFunctionCall","src":"20143:18:46"},{"arguments":[{"arguments":[{"name":"tail_5","nodeType":"YulIdentifier","src":"20171:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"20179:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20167:3:46"},"nodeType":"YulFunctionCall","src":"20167:22:46"},{"name":"_4","nodeType":"YulIdentifier","src":"20191:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20163:3:46"},"nodeType":"YulFunctionCall","src":"20163:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20136:6:46"},"nodeType":"YulFunctionCall","src":"20136:59:46"},"nodeType":"YulExpressionStatement","src":"20136:59:46"},{"nodeType":"YulAssignment","src":"20204:74:46","value":{"arguments":[{"name":"memberValue0_7","nodeType":"YulIdentifier","src":"20239:14:46"},{"name":"memberValue1_5","nodeType":"YulIdentifier","src":"20255:14:46"},{"name":"tail_5","nodeType":"YulIdentifier","src":"20271:6:46"}],"functionName":{"name":"abi_encode_string_calldata","nodeType":"YulIdentifier","src":"20212:26:46"},"nodeType":"YulFunctionCall","src":"20212:66:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20204:4:46"}]}]},"name":"abi_encode_tuple_t_struct$_CreateChallengeParams_$12717_calldata_ptr__to_t_struct$_CreateChallengeParams_$12717_memory_ptr__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17722:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17733:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17744:4:46","type":""}],"src":"17562:2722:46"},{"body":{"nodeType":"YulBlock","src":"20418:145:46","statements":[{"nodeType":"YulAssignment","src":"20428:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20440:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"20451:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20436:3:46"},"nodeType":"YulFunctionCall","src":"20436:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20428:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20470:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20485:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20501:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"20506:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"20497:3:46"},"nodeType":"YulFunctionCall","src":"20497:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"20510:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20493:3:46"},"nodeType":"YulFunctionCall","src":"20493:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20481:3:46"},"nodeType":"YulFunctionCall","src":"20481:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20463:6:46"},"nodeType":"YulFunctionCall","src":"20463:51:46"},"nodeType":"YulExpressionStatement","src":"20463:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20534:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"20545:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20530:3:46"},"nodeType":"YulFunctionCall","src":"20530:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"20550:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20523:6:46"},"nodeType":"YulFunctionCall","src":"20523:34:46"},"nodeType":"YulExpressionStatement","src":"20523:34:46"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20379:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20390:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20398:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20409:4:46","type":""}],"src":"20289:274:46"},{"body":{"nodeType":"YulBlock","src":"20646:199:46","statements":[{"body":{"nodeType":"YulBlock","src":"20692:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20701:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"20704:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"20694:6:46"},"nodeType":"YulFunctionCall","src":"20694:12:46"},"nodeType":"YulExpressionStatement","src":"20694:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"20667:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"20676:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20663:3:46"},"nodeType":"YulFunctionCall","src":"20663:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"20688:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"20659:3:46"},"nodeType":"YulFunctionCall","src":"20659:32:46"},"nodeType":"YulIf","src":"20656:52:46"},{"nodeType":"YulVariableDeclaration","src":"20717:29:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20736:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20730:5:46"},"nodeType":"YulFunctionCall","src":"20730:16:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"20721:5:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"20799:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20808:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"20811:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"20801:6:46"},"nodeType":"YulFunctionCall","src":"20801:12:46"},"nodeType":"YulExpressionStatement","src":"20801:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20768:5:46"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20789:5:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"20782:6:46"},"nodeType":"YulFunctionCall","src":"20782:13:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"20775:6:46"},"nodeType":"YulFunctionCall","src":"20775:21:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"20765:2:46"},"nodeType":"YulFunctionCall","src":"20765:32:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"20758:6:46"},"nodeType":"YulFunctionCall","src":"20758:40:46"},"nodeType":"YulIf","src":"20755:60:46"},{"nodeType":"YulAssignment","src":"20824:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"20834:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"20824:6:46"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20612:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"20623:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"20635:6:46","type":""}],"src":"20568:277:46"},{"body":{"nodeType":"YulBlock","src":"20931:103:46","statements":[{"body":{"nodeType":"YulBlock","src":"20977:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20986:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"20989:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"20979:6:46"},"nodeType":"YulFunctionCall","src":"20979:12:46"},"nodeType":"YulExpressionStatement","src":"20979:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"20952:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"20961:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20948:3:46"},"nodeType":"YulFunctionCall","src":"20948:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"20973:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"20944:3:46"},"nodeType":"YulFunctionCall","src":"20944:32:46"},"nodeType":"YulIf","src":"20941:52:46"},{"nodeType":"YulAssignment","src":"21002:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21018:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21012:5:46"},"nodeType":"YulFunctionCall","src":"21012:16:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"21002:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20897:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"20908:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"20920:6:46","type":""}],"src":"20850:184:46"},{"body":{"nodeType":"YulBlock","src":"21168:145:46","statements":[{"nodeType":"YulAssignment","src":"21178:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21190:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"21201:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21186:3:46"},"nodeType":"YulFunctionCall","src":"21186:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21178:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21220:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21235:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21251:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"21256:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"21247:3:46"},"nodeType":"YulFunctionCall","src":"21247:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"21260:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21243:3:46"},"nodeType":"YulFunctionCall","src":"21243:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"21231:3:46"},"nodeType":"YulFunctionCall","src":"21231:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21213:6:46"},"nodeType":"YulFunctionCall","src":"21213:51:46"},"nodeType":"YulExpressionStatement","src":"21213:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21284:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"21295:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21280:3:46"},"nodeType":"YulFunctionCall","src":"21280:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"21300:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21273:6:46"},"nodeType":"YulFunctionCall","src":"21273:34:46"},"nodeType":"YulExpressionStatement","src":"21273:34:46"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21129:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21140:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21148:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21159:4:46","type":""}],"src":"21039:274:46"},{"body":{"nodeType":"YulBlock","src":"21455:150:46","statements":[{"nodeType":"YulVariableDeclaration","src":"21465:27:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21485:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21479:5:46"},"nodeType":"YulFunctionCall","src":"21479:13:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"21469:6:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21540:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"21548:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21536:3:46"},"nodeType":"YulFunctionCall","src":"21536:17:46"},{"name":"pos","nodeType":"YulIdentifier","src":"21555:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"21560:6:46"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"21501:34:46"},"nodeType":"YulFunctionCall","src":"21501:66:46"},"nodeType":"YulExpressionStatement","src":"21501:66:46"},{"nodeType":"YulAssignment","src":"21576:23:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21587:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"21592:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21583:3:46"},"nodeType":"YulFunctionCall","src":"21583:16:46"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21576:3:46"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21431:3:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21436:6:46","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21447:3:46","type":""}],"src":"21318:287:46"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_bool(value, pos)\n    {\n        mstore(pos, iszero(iszero(value)))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_address(value, pos)\n    {\n        mstore(pos, and(value, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_enum_ChallengeKind(value, pos)\n    {\n        if iszero(lt(value, 2)) { panic_error_0x21() }\n        mstore(pos, value)\n    }\n    function abi_encode_enum_ChallengeStatus(value, pos)\n    {\n        if iszero(lt(value, 5)) { panic_error_0x21() }\n        mstore(pos, value)\n    }\n    function validator_assert_enum_SettlementMode(value)\n    {\n        if iszero(lt(value, 4)) { panic_error_0x21() }\n    }\n    function abi_encode_enum_SettlementMode(value, pos)\n    {\n        validator_assert_enum_SettlementMode(value)\n        mstore(pos, value)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_struct$_ChallengeView_$12870_memory_ptr__to_t_struct$_ChallengeView_$12870_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), mload(value0))\n        let memberValue0 := mload(add(value0, 32))\n        abi_encode_enum_ChallengeKind(memberValue0, add(headStart, 64))\n        let memberValue0_1 := mload(add(value0, 64))\n        abi_encode_enum_ChallengeKind(memberValue0_1, add(headStart, 96))\n        let memberValue0_2 := mload(add(value0, 96))\n        abi_encode_enum_ChallengeKind(memberValue0_2, add(headStart, 128))\n        let memberValue0_3 := mload(add(value0, 128))\n        abi_encode_enum_ChallengeStatus(memberValue0_3, add(headStart, 160))\n        let memberValue0_4 := mload(add(value0, 160))\n        abi_encode_enum_SettlementMode(memberValue0_4, add(headStart, 192))\n        let memberValue0_5 := mload(add(value0, 192))\n        abi_encode_address(memberValue0_5, add(headStart, 224))\n        let _1 := mload(add(value0, 224))\n        let _2 := 256\n        mstore(add(headStart, _2), _1)\n        let _3 := mload(add(value0, _2))\n        let _4 := 288\n        mstore(add(headStart, _4), _3)\n        let _5 := mload(add(value0, _4))\n        let _6 := 320\n        mstore(add(headStart, _6), _5)\n        let _7 := mload(add(value0, _6))\n        let _8 := 352\n        mstore(add(headStart, _8), _7)\n        let _9 := mload(add(value0, _8))\n        let _10 := 384\n        mstore(add(headStart, _10), _9)\n        let _11 := mload(add(value0, _10))\n        let _12 := 416\n        mstore(add(headStart, _12), _11)\n        let _13 := mload(add(value0, _12))\n        let _14 := 448\n        mstore(add(headStart, _14), _13)\n        let _15 := mload(add(value0, _14))\n        let _16 := 480\n        mstore(add(headStart, _16), _15)\n        let memberValue0_6 := mload(add(value0, _16))\n        let _17 := 512\n        abi_encode_bool(memberValue0_6, add(headStart, _17))\n        let _18 := mload(add(value0, _17))\n        let _19 := 544\n        mstore(add(headStart, _19), _18)\n        let _20 := mload(add(value0, _19))\n        let _21 := 576\n        mstore(add(headStart, _21), _20)\n        let _22 := mload(add(value0, _21))\n        let _23 := 608\n        mstore(add(headStart, _23), _22)\n        let _24 := mload(add(value0, _23))\n        let _25 := 640\n        mstore(add(headStart, _25), _24)\n        let _26 := mload(add(value0, _25))\n        let _27 := 672\n        mstore(add(headStart, _27), _26)\n        let _28 := mload(add(value0, _27))\n        let _29 := 704\n        mstore(add(headStart, _29), _28)\n        let _30 := mload(add(value0, _29))\n        let _31 := 736\n        mstore(add(headStart, _31), _30)\n        let _32 := mload(add(value0, _31))\n        let _33 := 768\n        mstore(add(headStart, _33), _32)\n        let _34 := mload(add(value0, _33))\n        let _35 := 800\n        mstore(add(headStart, _35), _34)\n        let memberValue0_7 := mload(add(value0, _35))\n        let _36 := 0x03a0\n        let _37 := 832\n        mstore(add(headStart, _37), _36)\n        let tail_1 := abi_encode_string(memberValue0_7, add(headStart, 960))\n        let memberValue0_8 := mload(add(value0, _37))\n        let _38 := not(31)\n        let _39 := 864\n        mstore(add(headStart, _39), add(sub(tail_1, headStart), _38))\n        let tail_2 := abi_encode_string(memberValue0_8, tail_1)\n        let memberValue0_9 := mload(add(value0, _39))\n        let _40 := 896\n        mstore(add(headStart, _40), add(sub(tail_2, headStart), _38))\n        let tail_3 := abi_encode_string(memberValue0_9, tail_2)\n        let memberValue0_10 := mload(add(value0, _40))\n        mstore(add(headStart, _36), add(sub(tail_3, headStart), _38))\n        tail := abi_encode_string(memberValue0_10, tail_3)\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_address_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n    }\n    function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_struct$_InitializationData_$12734_calldata_ptrt_struct$_InitializationRoleData_$12743_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 384) { revert(0, 0) }\n        let _2 := 256\n        if slt(_1, _2) { revert(0, 0) }\n        value0 := headStart\n        if slt(add(_1, not(255)), 128) { revert(0, 0) }\n        value1 := add(headStart, _2)\n    }\n    function abi_decode_tuple_t_struct$_CreateChallengeParams_$12717_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 448) { revert(0, 0) }\n        value0 := _1\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value1 := memPtr\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_enum$_ParticipantStatus_$12683__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        validator_assert_enum_SettlementMode(value0)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_enum$_ChallengeStatus_$12673__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        abi_encode_enum_ChallengeStatus(value0, headStart)\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_library_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n        value0 := value\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_array_address_dyn_calldata(value, length, pos) -> end\n    {\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := value\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(abi_decode_address(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_calldata_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_library_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_array_address_dyn_calldata(value1, value2, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n    function abi_decode_enum_ChallengeKind(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(lt(value, 2)) { revert(0, 0) }\n    }\n    function calldata_access_array_bytes32_dyn_calldata(base_ref, ptr) -> value, length\n    {\n        let rel_offset_of_tail := calldataload(ptr)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let value_1 := add(rel_offset_of_tail, base_ref)\n        length := calldataload(value_1)\n        value := add(value_1, 0x20)\n        if gt(length, sub(shl(64, 1), 1)) { revert(0, 0) }\n        if sgt(value, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n    }\n    function abi_encode_array_bytes32_dyn_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        if gt(length, sub(shl(251, 1), 1)) { revert(0, 0) }\n        let length_1 := shl(5, length)\n        calldatacopy(add(pos, 0x20), start, length_1)\n        end := add(add(pos, length_1), 0x20)\n    }\n    function calldata_access_string_calldata(base_ref, ptr) -> value, length\n    {\n        let rel_offset_of_tail := calldataload(ptr)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let value_1 := add(rel_offset_of_tail, base_ref)\n        length := calldataload(value_1)\n        value := add(value_1, 0x20)\n        if gt(length, sub(shl(64, 1), 1)) { revert(0, 0) }\n        if sgt(value, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_string_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_struct$_CreateChallengeParams_$12717_calldata_ptr__to_t_struct$_CreateChallengeParams_$12717_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        abi_encode_enum_ChallengeKind(abi_decode_enum_ChallengeKind(value0), add(headStart, 32))\n        let memberValue0 := abi_decode_enum_ChallengeKind(add(value0, 32))\n        abi_encode_enum_ChallengeKind(memberValue0, add(headStart, 64))\n        let memberValue0_1 := abi_decode_enum_ChallengeKind(add(value0, 64))\n        abi_encode_enum_ChallengeKind(memberValue0_1, add(headStart, 96))\n        mstore(add(headStart, 128), calldataload(add(value0, 96)))\n        mstore(add(headStart, 160), calldataload(add(value0, 128)))\n        mstore(add(headStart, 192), calldataload(add(value0, 160)))\n        mstore(add(headStart, 224), calldataload(add(value0, 192)))\n        let _1 := 256\n        mstore(add(headStart, _1), calldataload(add(value0, 224)))\n        let memberValue0_2, memberValue1 := calldata_access_array_bytes32_dyn_calldata(value0, add(value0, _1))\n        let _2 := 0x01c0\n        let _3 := 288\n        mstore(add(headStart, _3), _2)\n        let tail_1 := abi_encode_array_bytes32_dyn_calldata(memberValue0_2, memberValue1, add(headStart, 480))\n        let memberValue0_3, memberValue1_1 := calldata_access_array_bytes32_dyn_calldata(value0, add(value0, _3))\n        let _4 := not(31)\n        let _5 := 320\n        mstore(add(headStart, _5), add(sub(tail_1, headStart), _4))\n        let tail_2 := abi_encode_array_address_dyn_calldata(memberValue0_3, memberValue1_1, tail_1)\n        let memberValue0_4, memberValue1_2 := calldata_access_string_calldata(value0, add(value0, _5))\n        let _6 := 352\n        mstore(add(headStart, _6), add(sub(tail_2, headStart), _4))\n        let tail_3 := abi_encode_string_calldata(memberValue0_4, memberValue1_2, tail_2)\n        let memberValue0_5, memberValue1_3 := calldata_access_string_calldata(value0, add(value0, _6))\n        let _7 := 384\n        mstore(add(headStart, _7), add(sub(tail_3, headStart), _4))\n        let tail_4 := abi_encode_string_calldata(memberValue0_5, memberValue1_3, tail_3)\n        let memberValue0_6, memberValue1_4 := calldata_access_string_calldata(value0, add(value0, _7))\n        let _8 := 416\n        mstore(add(headStart, _8), add(sub(tail_4, headStart), _4))\n        let tail_5 := abi_encode_string_calldata(memberValue0_6, memberValue1_4, tail_4)\n        let memberValue0_7, memberValue1_5 := calldata_access_string_calldata(value0, add(value0, _8))\n        mstore(add(headStart, _2), add(sub(tail_5, headStart), _4))\n        tail := abi_encode_string_calldata(memberValue0_7, memberValue1_5, tail_5)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n}","id":46,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"636":[{"length":32,"start":10133},{"length":32,"start":10174},{"length":32,"start":10502}]},"linkReferences":{"contracts/challenges/libraries/ChallengeCoreLogic.sol":{"ChallengeCoreLogic":[{"length":20,"start":2342},{"length":20,"start":3335},{"length":20,"start":4624},{"length":20,"start":6472},{"length":20,"start":6820},{"length":20,"start":7046},{"length":20,"start":7466},{"length":20,"start":7771},{"length":20,"start":8327}]},"contracts/challenges/libraries/ChallengeSettlementLogic.sol":{"ChallengeSettlementLogic":[{"length":20,"start":2803},{"length":20,"start":7264},{"length":20,"start":7383},{"length":20,"start":7530},{"length":20,"start":7917},{"length":20,"start":8078}]}},"object":"60806040526004361061024e5760003560e01c806212462a1461025357806301ffc9a714610275578063023bf958146102aa578063039ddca9146102d757806314cf9077146102f75780631bdd4b741461032557806321c688fa14610352578063248a9ca31461037257806324924bf714610392578063262ad80b146103a75780632b5adc1e146103c75780632bf7299b146103f45780632f2ff15d1461041457806336568abe146104345780633800ff4d146104545780633bb18a76146104745780633cc376bb1461049457806347b0b33e146104b45780634a6ff70b146104d45780634caf6d5f146104f45780634f1ef2861461051457806352d1902d1461052757806354fd4d501461053c5780635de5720f1461056f57806367fc8c891461058f5780636c188593146105af57806381363aeb146105cf578063832c8bc6146105fc57806387d301641461062957806387d6e2131461064957806391d1485414610669578063952f213314610689578063a0427700146106ab578063a217fddf146106cb578063a2f05725146106e0578063a41483e3146106f5578063a7817bbc14610715578063a934718c14610735578063ad3cb1cc14610755578063b30f058414610786578063b58bd356146107a6578063c048f6c9146107c6578063cb3e0d2b146107e6578063cf33e76c14610806578063d2177bdd14610826578063d547741f1461083b578063e448ee261461085b578063f3fef3a31461087b578063f72c0d8b1461089b578063f7806522146108bd578063fa7626d0146108d2578063fa968eea146108f4575b600080fd5b34801561025f57600080fd5b5061027361026e366004612c24565b610909565b005b34801561028157600080fd5b50610295610290366004612c3d565b61097e565b60405190151581526020015b60405180910390f35b3480156102b657600080fd5b506102ca6102c5366004612c24565b6109b5565b6040516102a19190612c67565b3480156102e357600080fd5b506102ca6102f2366004612c24565b610a41565b34801561030357600080fd5b50610317610312366004612ccb565b610acb565b6040519081526020016102a1565b34801561033157600080fd5b50610345610340366004612c24565b610b58565b6040516102a19190612d9a565b34801561035e57600080fd5b5061027361036d366004612c24565b6110fb565b34801561037e57600080fd5b5061031761038d366004612c24565b6111c6565b34801561039e57600080fd5b506103176111e6565b3480156103b357600080fd5b506102736103c2366004612f94565b6111f9565b3480156103d357600080fd5b506103e76103e2366004612c24565b611279565b6040516102a19190613012565b34801561040057600080fd5b5061027361040f366004612c24565b6112fa565b34801561042057600080fd5b5061027361042f366004612ccb565b6113a9565b34801561044057600080fd5b5061027361044f366004612ccb565b6113cb565b34801561046057600080fd5b5061027361046f36600461304a565b6113fe565b34801561048057600080fd5b5061027361048f36600461304a565b611466565b3480156104a057600080fd5b506102736104af366004613065565b6114c5565b3480156104c057600080fd5b506102736104cf36600461304a565b611888565b3480156104e057600080fd5b506102956104ef366004612ccb565b6118e7565b34801561050057600080fd5b5061031761050f3660046130ab565b61192f565b6102736105223660046130fc565b6119c0565b34801561053357600080fd5b506103176119df565b34801561054857600080fd5b506040805180820190915260018152601960f91b60208201525b6040516102a191906131bd565b34801561057b57600080fd5b506102ca61058a366004612c24565b6119fc565b34801561059b57600080fd5b506102736105aa366004612c24565b611a86565b3480156105bb57600080fd5b506102736105ca366004612c24565b611ac6565b3480156105db57600080fd5b506105ef6105ea366004612ccb565b611b25565b6040516102a191906131d0565b34801561060857600080fd5b5061061c610617366004612c24565b611b6d565b6040516102a191906131e3565b34801561063557600080fd5b50610295610644366004612ccb565b611bf8565b34801561065557600080fd5b50610317610664366004612c24565b611c40565b34801561067557600080fd5b50610295610684366004612ccb565b611c82565b34801561069557600080fd5b506103176000805160206136ce83398151915281565b3480156106b757600080fd5b506103176106c6366004612c24565b611cb8565b3480156106d757600080fd5b50610317600081565b3480156106ec57600080fd5b50610317611cf9565b34801561070157600080fd5b50610273610710366004612c24565b611d0c565b34801561072157600080fd5b50610273610730366004612c24565b611d4c565b34801561074157600080fd5b50610273610750366004612c24565b611d8c565b34801561076157600080fd5b50610562604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561079257600080fd5b5061061c6107a1366004612c24565b611e3b565b3480156107b257600080fd5b506103176107c1366004612c24565b611ecd565b3480156107d257600080fd5b506102736107e136600461304a565b611f0f565b3480156107f257600080fd5b50610317610801366004612c24565b611f6e565b34801561081257600080fd5b506102ca610821366004612c24565b611fb0565b34801561083257600080fd5b5061031761203a565b34801561084757600080fd5b50610273610856366004612ccb565b61204d565b34801561086757600080fd5b50610273610876366004612c24565b612069565b34801561088757600080fd5b506102736108963660046131f1565b6120a9565b3480156108a757600080fd5b5061031760008051602061362e83398151915281565b3480156108c957600080fd5b506103176122bd565b3480156108de57600080fd5b5061031760008051602061366e83398151915281565b34801561090057600080fd5b506103176122d0565b6109116122e3565b6040516209231560e11b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__906212462a906024015b60006040518083038186803b15801561095b57600080fd5b505af415801561096f573d6000803e3d6000fd5b5050505061097b612319565b50565b60006001600160e01b03198216637965db0b60e01b14806109af57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006109c161232a565b90506109d183826006015461234e565b6000838152600882016020908152604091829020600b0180548351818402810184019094528084529091830182828015610a3457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a16575b5050505050915050919050565b60606000610a4d61232a565b9050610a5d83826006015461234e565b6000838152600882016020908152604091829020600e0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b6040516314cf907760e01b8152600481018390526001600160a01b038216602482015260009073__$74730aeb69cabb170809b4d7c58740053a$__906314cf907790604401602060405180830381865af4158015610b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b51919061321b565b9392505050565b610c3f604080516103a081019091526000808252602082019081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6000610c4961232a565b9050610c5983826006015461234e565b6000838152600882016020526040812060028101546003820154919291610c80919061324a565b610c8b90600161325d565b604080516103a08101909152868152835491925090602082019060ff166001811115610cb957610cb9612cf7565b81528354602090910190610100900460ff166001811115610cdc57610cdc612cf7565b8152835460209091019062010000900460ff166001811115610d0057610d00612cf7565b815260200173__$e5c34f23aa37ff925bd96f5e6125be3c79$__639ed14864886040518263ffffffff1660e01b8152600401610d3e91815260200190565b602060405180830381865af4158015610d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7f9190613270565b60ff166004811115610d9357610d93612cf7565b6004811115610da457610da4612cf7565b81528354602090910190600160201b900460ff166003811115610dc957610dc9612cf7565b81528354600160301b81046001600160a01b0316602083015260018501546040830152600285015460608301526003850154608083015260a08201849052600485015460c0830152600585015460e0830152600e85015461010083018190526006860154610120840152600160281b90910460ff1615156101408301526007850154610160830152600b850154610180830152600c8501546101a0830152600d8501546101c0830152600f8501546101e083015261020082015260088401546102208201526009840154610240820152600a84015461026082015260108401805461028090920191610eba90613293565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee690613293565b8015610f335780601f10610f0857610100808354040283529160200191610f33565b820191906000526020600020905b815481529060010190602001808311610f1657829003601f168201915b50505050508152602001836011018054610f4c90613293565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7890613293565b8015610fc55780601f10610f9a57610100808354040283529160200191610fc5565b820191906000526020600020905b815481529060010190602001808311610fa857829003601f168201915b50505050508152602001836012018054610fde90613293565b80601f016020809104026020016040519081016040528092919081815260200182805461100a90613293565b80156110575780601f1061102c57610100808354040283529160200191611057565b820191906000526020600020905b81548152906001019060200180831161103a57829003601f168201915b5050505050815260200183601301805461107090613293565b80601f016020809104026020016040519081016040528092919081815260200182805461109c90613293565b80156110e95780601f106110be576101008083540402835291602001916110e9565b820191906000526020600020905b8154815290600101906020018083116110cc57829003601f168201915b50505050508152509350505050919050565b6111036122e3565b60008051602061366e83398151915261111c8133611c82565b158015611131575061112f600033611c82565b155b1561115a57336040516309edd0f760e11b815260040161115191906132cd565b60405180910390fd5b8160000361117b5760405163162908e360e11b815260040160405180910390fd5b600061118561232a565b60058101805490859055604051919250906000805160206136ae833981519152906111b390839087906132e1565b60405180910390a150505061097b612319565b6000806111d161237b565b60009384526020525050604090206001015490565b60006111f061232a565b60070154905090565b6112016122e3565b60405163262ad80b60e01b815273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063262ad80b9061123c90869086908690600401613336565b60006040518083038186803b15801561125457600080fd5b505af4158015611268573d6000803e3d6000fd5b50505050611274612319565b505050565b6060600061128561232a565b905061129583826006015461234e565b6000838152600882016020908152604091829020600f0180548351818402810184019094528084529091830182828015610a3457602002820191906000526020600020905b8154815260200190600101908083116112da575050505050915050919050565b6113026122e3565b60008051602061366e83398151915261131b8133611c82565b158015611330575061132e600033611c82565b155b1561135057336040516309edd0f760e11b815260040161115191906132cd565b816000036113715760405163162908e360e11b815260040160405180910390fd5b600061137b61232a565b60078101805490859055604051919250906000805160206136ee833981519152906111b390839087906132e1565b6113b2826111c6565b6113bb8161239f565b6113c583836123a9565b50505050565b6001600160a01b03811633146113f45760405163334bd91960e11b815260040160405180910390fd5b611274828261244a565b6114066122e3565b6000805160206136ce83398151915261141f8133611c82565b1580156114345750611432600033611c82565b155b1561145457336040516309edd0f760e11b815260040161115191906132cd565b61145d826124c2565b5061097b612319565b61146e6122e3565b6000805160206136ce8339815191526114878133611c82565b15801561149c575061149a600033611c82565b155b156114bc57336040516309edd0f760e11b815260040161115191906132cd565b61145d82612549565b60006114cf6125d0565b805490915060ff600160401b82041615906001600160401b03166000811580156114f65750825b90506000826001600160401b031660011480156115125750303b155b905081158015611520575080155b1561153e5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561156757845460ff60401b1916600160401b1785555b6000611576602088018861304a565b6001600160a01b031614806115a357506000611598604088016020890161304a565b6001600160a01b0316145b806115c6575060006115bb606088016040890161304a565b6001600160a01b0316145b806115e9575060006115de608088016060890161304a565b6001600160a01b0316145b80611609575060006115fe602089018961304a565b6001600160a01b0316145b8061162c575060006116216040890160208a0161304a565b6001600160a01b0316145b8061164f575060006116446060890160408a0161304a565b6001600160a01b0316145b80611672575060006116676080890160608a0161304a565b6001600160a01b0316145b156116905760405163d92e233d60e01b815260040160405180910390fd5b608087013515806116a3575060a0870135155b806116b0575060c0870135155b806116bd575060e0870135155b156116db5760405163162908e360e11b815260040160405180910390fd5b6116e36125f4565b6116eb6125fe565b6116f36125f4565b60006116fd61232a565b6080890135600482015560a0890135600582015560c08901356007820155905061172a60e089013561260e565b60008051602061368e8339815191526000896080013560405161174e9291906132e1565b60405180910390a16000805160206136ae83398151915260008960a0013560405161177a9291906132e1565b60405180910390a16000805160206136ee83398151915260008960c001356040516117a69291906132e1565b60405180910390a16117f36117be60208a018a61304a565b6117ce60408b0160208c0161304a565b6117de60608c0160408d0161304a565b6117ee60808d0160608e0161304a565b612686565b611838611803602089018961304a565b61181360408a0160208b0161304a565b61182360608b0160408c0161304a565b61183360808c0160608d0161304a565b6126aa565b50831561187f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6118906122e3565b6000805160206136ce8339815191526118a98133611c82565b1580156118be57506118bc600033611c82565b155b156118de57336040516309edd0f760e11b815260040161115191906132cd565b61145d82612707565b6000806118f261232a565b905061190284826006015461234e565b6000938452600a01602090815260408085206001600160a01b039490941685529290525090205460ff1690565b60006119396122e3565b604051633839969560e21b815273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063e0e65a549061197090859060040161344e565b602060405180830381865af415801561198d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b1919061321b565b90506119bb612319565b919050565b6119c861278a565b6119d18261282f565b6119db8282612847565b5050565b60006119e96128fb565b5060008051602061364e83398151915290565b60606000611a0861232a565b9050611a1883826006015461234e565b6000838152600882016020908152604091829020600c0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b611a8e6122e3565b6040516367fc8c8960e01b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__906367fc8c8990602401610943565b611ace6122e3565b60008051602061366e833981519152611ae78133611c82565b158015611afc5750611afa600033611c82565b155b15611b1c57336040516309edd0f760e11b815260040161115191906132cd565b61145d8261260e565b600080611b3061232a565b9050611b4084826006015461234e565b6000938452600901602090815260408085206001600160a01b039490941685529290525090205460ff1690565b6040516327b4521960e21b81526004810182905260009073__$e5c34f23aa37ff925bd96f5e6125be3c79$__90639ed1486490602401602060405180830381865af4158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190613270565b60ff1660048111156109af576109af612cf7565b600080611c0361232a565b9050611c1384826006015461234e565b6000938452601101602090815260408085206001600160a01b039490941685529290525090205460ff1690565b6000611c4a6122e3565b6040516387d6e21360e01b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__906387d6e21390602401611970565b600080611c8d61237b565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611cc26122e3565b60405162a0427760e81b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063a042770090602401611970565b6000611d0361232a565b60060154905090565b611d146122e3565b60405163a41483e360e01b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063a41483e390602401610943565b611d546122e3565b6040516329e05eef60e21b81526004810182905273__$74730aeb69cabb170809b4d7c58740053a$__9063a7817bbc90602401610943565b611d946122e3565b60008051602061366e833981519152611dad8133611c82565b158015611dc25750611dc0600033611c82565b155b15611de257336040516309edd0f760e11b815260040161115191906132cd565b81600003611e035760405163162908e360e11b815260040160405180910390fd5b6000611e0d61232a565b600481018054908590556040519192509060008051602061368e833981519152906111b390839087906132e1565b6000611e456122e3565b604051632cc3c16160e21b81526004810183905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190613270565b60ff1660048111156119b1576119b1612cf7565b6000611ed76122e3565b604051635ac5e9ab60e11b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063b58bd35690602401611970565b611f176122e3565b6000805160206136ce833981519152611f308133611c82565b158015611f455750611f43600033611c82565b155b15611f6557336040516309edd0f760e11b815260040161115191906132cd565b61145d82612944565b6000611f786122e3565b60405163cb3e0d2b60e01b81526004810183905273__$74730aeb69cabb170809b4d7c58740053a$__9063cb3e0d2b90602401611970565b60606000611fbc61232a565b9050611fcc83826006015461234e565b6000838152600882016020908152604091829020600d0180548351818402810184019094528084529091830182828015610a34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a16575050505050915050919050565b600061204461232a565b60040154905090565b612056826111c6565b61205f8161239f565b6113c5838361244a565b6120716122e3565b604051637224771360e11b81526004810182905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063e448ee2690602401610943565b6120b16122e3565b60006120bd8133611c82565b1580156120d257506120d0600033611c82565b155b156120f257336040516309edd0f760e11b815260040161115191906132cd565b6001600160a01b0383166121195760405163d92e233d60e01b815260040160405180910390fd5b8160000361213a5760405163162908e360e11b815260040160405180910390fd5b600061214461232a565b80546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906121799030906004016132cd565b602060405180830381865afa158015612196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ba919061321b565b9050808411156121e15780846040516304720f4b60e21b81526004016111519291906132e1565b815460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061221290889088906004016135d6565b6020604051808303816000875af1158015612231573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225591906135ef565b612272576040516312171d8360e31b815260040160405180910390fd5b6040518481526001600160a01b0386169033907f8b192dc173e314b16d9067e45c2afbdcdc1713fc4fe1a95aff9076249648abc09060200160405180910390a35050506119db612319565b60006122c761232a565b60050154905090565b60006122da61232a565b60100154905090565b60006122ed6129cb565b80549091506001190161231357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006123236129cb565b6001905550565b7f4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d10090565b81158061235a57508082115b156119db57604051635bafafd160e01b815260048101839052602401611151565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b61097b81336129ef565b6000806123b461237b565b90506123c08484611c82565b612440576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556123f63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109af565b60009150506109af565b60008061245561237b565b90506124618484611c82565b15612440576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109af565b6001600160a01b0381166124e95760405163d92e233d60e01b815260040160405180910390fd5b60006124f361232a565b6001810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907fd260589e8955f4324723f68c9c004afe08c82d5790f93946bbf95f6ebcab534790600090a3505050565b6001600160a01b0381166125705760405163d92e233d60e01b815260040160405180910390fd5b600061257a61232a565b6002810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f471425990600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6125fc612a1a565b565b612606612a1a565b6125fc612a3f565b8060000361262f5760405163162908e360e11b815260040160405180910390fd5b600061263961232a565b60108101805490849055604051919250907f82480e97991520549ac4b5d0e1d97edb3bfac2666202923b6903d2a953dc76089061267990839086906132e1565b60405180910390a1505050565b61268f84612707565b612698836124c2565b6126a182612549565b6113c581612944565b6126b56000856123a9565b506126ce60008051602061362e833981519152846123a9565b506126e76000805160206136ce833981519152836123a9565b5061270060008051602061366e833981519152826123a9565b5050505050565b6001600160a01b03811661272e5760405163d92e233d60e01b815260040160405180910390fd5b600061273861232a565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907fb3061a8192d243178b0fd92d1809bc86c3fa3b177c046cf74974c45c32cd25e090600090a3505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061281157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661280560008051602061364e833981519152546001600160a01b031690565b6001600160a01b031614155b156125fc5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061362e8339815191526119db8161239f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156128a1575060408051601f3d908101601f1916820190925261289e9181019061321b565b60015b6128c05781604051634c9c8ce360e01b815260040161115191906132cd565b60008051602061364e83398151915281146128f157604051632a87526960e21b815260048101829052602401611151565b6112748383612a47565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146125fc5760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b03811661296b5760405163d92e233d60e01b815260040160405180910390fd5b600061297561232a565b6003810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f02a190d74141c632badc9d2cbb0eb33818f3b5f949c4e8ad29d80aa63a5537ac90600090a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6129f98282611c82565b6119db57808260405163e2517d3f60e01b81526004016111519291906135d6565b612a22612a9d565b6125fc57604051631afcd79f60e31b815260040160405180910390fd5b612319612a1a565b612a5082612ab7565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612a95576112748282612b13565b6119db612b89565b6000612aa76125d0565b54600160401b900460ff16919050565b806001600160a01b03163b600003612ae45780604051634c9c8ce360e01b815260040161115191906132cd565b60008051602061364e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b309190613611565b600060405180830381855af49150503d8060008114612b6b576040519150601f19603f3d011682016040523d82523d6000602084013e612b70565b606091505b5091509150612b80858383612ba8565b95945050505050565b34156125fc5760405163b398979f60e01b815260040160405180910390fd5b606082612bbd57612bb882612bfb565b610b51565b8151158015612bd457506001600160a01b0384163b155b15612bf45783604051639996b31560e01b815260040161115191906132cd565b5092915050565b805115612c0b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600060208284031215612c3657600080fd5b5035919050565b600060208284031215612c4f57600080fd5b81356001600160e01b031981168114610b5157600080fd5b6020808252825182820181905260009190848201906040850190845b81811015612ca85783516001600160a01b031683529284019291840191600101612c83565b50909695505050505050565b80356001600160a01b03811681146119bb57600080fd5b60008060408385031215612cde57600080fd5b82359150612cee60208401612cb4565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60028110612d1d57612d1d612cf7565b9052565b60058110612d1d57612d1d612cf7565b6004811061097b5761097b612cf7565b612d1d81612d31565b60005b83811015612d65578181015183820152602001612d4d565b50506000910152565b60008151808452612d86816020860160208601612d4a565b601f01601f19169290920160200192915050565b602081528151602082015260006020830151612db96040840182612d0d565b506040830151612dcc6060840182612d0d565b506060830151612ddf6080840182612d0d565b506080830151612df260a0840182612d21565b5060a0830151612e0560c0840182612d41565b5060c08301516001600160a01b03811660e08401525060e083015161010083810191909152830151610120808401919091528301516101408084019190915283015161016080840191909152830151610180808401919091528301516101a0808401919091528301516101c0808401919091528301516101e080840191909152830151610200612e988185018315159052565b840151610220848101919091528401516102408085019190915284015161026080850191909152840151610280808501919091528401516102a0808501919091528401516102c0808501919091528401516102e08085019190915284015161030080850191909152840151610320808501919091528401516103a061034080860182905291925090612f2e6103c0860184612d6e565b9250808601519050601f19610360818786030181880152612f4f8584612d6e565b945080880151925050610380818786030181880152612f6e8584612d6e565b908801518782039092018488015293509050612f8a8382612d6e565b9695505050505050565b600080600060408486031215612fa957600080fd5b8335925060208401356001600160401b0380821115612fc757600080fd5b818601915086601f830112612fdb57600080fd5b813581811115612fea57600080fd5b8760208260051b8501011115612fff57600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015612ca85783518352928401929184019160010161302e565b60006020828403121561305c57600080fd5b610b5182612cb4565b60008082840361018081121561307a57600080fd5b6101008082121561308a57600080fd5b849350608060ff198301121561309f57600080fd5b92959390920193505050565b6000602082840312156130bd57600080fd5b81356001600160401b038111156130d357600080fd5b82016101c08185031215610b5157600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561310f57600080fd5b61311883612cb4565b915060208301356001600160401b038082111561313457600080fd5b818501915085601f83011261314857600080fd5b81358181111561315a5761315a6130e6565b604051601f8201601f19908116603f01168101908382118183101715613182576131826130e6565b8160405282815288602084870101111561319b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b602081526000610b516020830184612d6e565b602081016131dd83612d31565b91905290565b602081016109af8284612d21565b6000806040838503121561320457600080fd5b61320d83612cb4565b946020939093013593505050565b60006020828403121561322d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109af576109af613234565b808201808211156109af576109af613234565b60006020828403121561328257600080fd5b815160ff81168114610b5157600080fd5b600181811c908216806132a757607f821691505b6020821081036132c757634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0391909116815260200190565b918252602082015260400190565b8183526000602080850194508260005b8581101561332b576001600160a01b0361331883612cb4565b16875295820195908201906001016132ff565b509495945050505050565b838152604060208201526000612b806040830184866132ef565b8035600281106119bb57600080fd5b6000808335601e1984360301811261337657600080fd5b83016020810192503590506001600160401b0381111561339557600080fd5b8060051b36038213156133a757600080fd5b9250929050565b81835260006001600160fb1b038311156133c757600080fd5b8260051b80836020870137939093016020019392505050565b6000808335601e198436030181126133f757600080fd5b83016020810192503590506001600160401b0381111561341657600080fd5b8036038213156133a757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526134676020820161346284613350565b612d0d565b600061347560208401613350565b6134826040840182612d0d565b5061348f60408401613350565b61349c6060840182612d0d565b5060608301356080830152608083013560a083015260a083013560c083015260c083013560e083015261010060e0840135818401526134dd8185018561335f565b91506101c061012081818701526134f96101e0870185856133ae565b93506135078188018861335f565b93509050601f196101408188870301818901526135258686856132ef565b9550613533818a018a6133e0565b955092505061016081888703018189015261354f868685613425565b955061355d818a018a6133e0565b9550925050610180818887030181890152613579868685613425565b9550613587818a018a6133e0565b95509250506101a08188870301818901526135a3868685613425565b95506135b1818a018a6133e0565b9550925050808786030183880152506135cb848483613425565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561360157600080fd5b81518015158114610b5157600080fd5b60008251613623818460208701612d4a565b919091019291505056fe189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcdfc0438b5754beb343462ff330f73266ff7457fdf879dfb68c958ccbe15765f3280335b2726d1c2b1770ba289d3de2cebd2f55c641e93c7e77d033cadab1b06b2294a958ea1cb2569bfbdbd8a8e8502b08b8a71ea5134d264f97f07ef7f8a8e856af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b743f71dfd216eaaf2f75bdb23d66ae4f5b7e2975e422538b68ef11b46b3874098a264697066735822122046da9a205b8774131e7ff18a2341def0d961084cedcc65164dd5377eb7f125e964736f6c63430008140033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x24E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x12462A EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x23BF958 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x39DDCA9 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x14CF9077 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x1BDD4B74 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x21C688FA EQ PUSH2 0x352 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0x24924BF7 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x262AD80B EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x2B5ADC1E EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x2BF7299B EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0x3800FF4D EQ PUSH2 0x454 JUMPI DUP1 PUSH4 0x3BB18A76 EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0x3CC376BB EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0x47B0B33E EQ PUSH2 0x4B4 JUMPI DUP1 PUSH4 0x4A6FF70B EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0x4CAF6D5F EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x514 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x5DE5720F EQ PUSH2 0x56F JUMPI DUP1 PUSH4 0x67FC8C89 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0x6C188593 EQ PUSH2 0x5AF JUMPI DUP1 PUSH4 0x81363AEB EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0x832C8BC6 EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0x87D30164 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x87D6E213 EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x669 JUMPI DUP1 PUSH4 0x952F2133 EQ PUSH2 0x689 JUMPI DUP1 PUSH4 0xA0427700 EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x6CB JUMPI DUP1 PUSH4 0xA2F05725 EQ PUSH2 0x6E0 JUMPI DUP1 PUSH4 0xA41483E3 EQ PUSH2 0x6F5 JUMPI DUP1 PUSH4 0xA7817BBC EQ PUSH2 0x715 JUMPI DUP1 PUSH4 0xA934718C EQ PUSH2 0x735 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x755 JUMPI DUP1 PUSH4 0xB30F0584 EQ PUSH2 0x786 JUMPI DUP1 PUSH4 0xB58BD356 EQ PUSH2 0x7A6 JUMPI DUP1 PUSH4 0xC048F6C9 EQ PUSH2 0x7C6 JUMPI DUP1 PUSH4 0xCB3E0D2B EQ PUSH2 0x7E6 JUMPI DUP1 PUSH4 0xCF33E76C EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0xD2177BDD EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0xE448EE26 EQ PUSH2 0x85B JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0x89B JUMPI DUP1 PUSH4 0xF7806522 EQ PUSH2 0x8BD JUMPI DUP1 PUSH4 0xFA7626D0 EQ PUSH2 0x8D2 JUMPI DUP1 PUSH4 0xFA968EEA EQ PUSH2 0x8F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x909 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x290 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C3D JUMP JUMPDEST PUSH2 0x97E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x2C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x2C67 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0xA41 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x312 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0xACB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH2 0x340 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0xB58 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x2D9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x36D CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x10FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x11C6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x11E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F94 JUMP JUMPDEST PUSH2 0x11F9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E7 PUSH2 0x3E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1279 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x3012 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x40F CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x12FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x42F CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x13A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x44F CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x13CB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x46F CALLDATASIZE PUSH1 0x4 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x13FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1466 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x4AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3065 JUMP JUMPDEST PUSH2 0x14C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x4CF CALLDATASIZE PUSH1 0x4 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1888 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x18E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x50F CALLDATASIZE PUSH1 0x4 PUSH2 0x30AB JUMP JUMPDEST PUSH2 0x192F JUMP JUMPDEST PUSH2 0x273 PUSH2 0x522 CALLDATASIZE PUSH1 0x4 PUSH2 0x30FC JUMP JUMPDEST PUSH2 0x19C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x19DF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x19 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x31BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x58A CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x19FC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1A86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x5CA CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1AC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5EF PUSH2 0x5EA CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x1B25 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x31D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x61C PUSH2 0x617 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1B6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x31E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x644 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x1BF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x664 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1C40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x684 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x1C82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x6C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1CB8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x1CF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x710 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1D0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x730 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1D4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x750 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1D8C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x562 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x61C PUSH2 0x7A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1E3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x7C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1ECD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x7E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1F0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x801 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1F6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x821 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x1FB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x203A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x856 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x204D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x876 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C24 JUMP JUMPDEST PUSH2 0x2069 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x896 CALLDATASIZE PUSH1 0x4 PUSH2 0x31F1 JUMP JUMPDEST PUSH2 0x20A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x362E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x22BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x317 PUSH2 0x22D0 JUMP JUMPDEST PUSH2 0x911 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x92315 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH3 0x12462A SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x96F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x97B PUSH2 0x2319 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x9AF JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x9C1 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x9D1 DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xB ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA16 JUMPI JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xA4D PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0xA5D DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xE ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA16 JUMPI POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x14CF9077 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x0 SWAP1 PUSH4 0x14CF9077 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB51 SWAP2 SWAP1 PUSH2 0x321B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC3F PUSH1 0x40 DUP1 MLOAD PUSH2 0x3A0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC49 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0xC59 DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 DUP3 ADD SLOAD SWAP2 SWAP3 SWAP2 PUSH2 0xC80 SWAP2 SWAP1 PUSH2 0x324A JUMP JUMPDEST PUSH2 0xC8B SWAP1 PUSH1 0x1 PUSH2 0x325D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x3A0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP7 DUP2 MSTORE DUP4 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCB9 JUMPI PUSH2 0xCB9 PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE DUP4 SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCDC JUMPI PUSH2 0xCDC PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE DUP4 SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xD00 JUMPI PUSH2 0xD00 PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH20 0x0 PUSH4 0x9ED14864 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD3E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xD5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD7F SWAP2 SWAP1 PUSH2 0x3270 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xD93 JUMPI PUSH2 0xD93 PUSH2 0x2CF7 JUMP JUMPDEST PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xDA4 JUMPI PUSH2 0xDA4 PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE DUP4 SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xDC9 JUMPI PUSH2 0xDC9 PUSH2 0x2CF7 JUMP JUMPDEST DUP2 MSTORE DUP4 SLOAD PUSH1 0x1 PUSH1 0x30 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 DUP6 ADD SLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 DUP6 ADD SLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x5 DUP6 ADD SLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xE DUP6 ADD SLOAD PUSH2 0x100 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 DUP7 ADD SLOAD PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x28 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x7 DUP6 ADD SLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xB DUP6 ADD SLOAD PUSH2 0x180 DUP4 ADD MSTORE PUSH1 0xC DUP6 ADD SLOAD PUSH2 0x1A0 DUP4 ADD MSTORE PUSH1 0xD DUP6 ADD SLOAD PUSH2 0x1C0 DUP4 ADD MSTORE PUSH1 0xF DUP6 ADD SLOAD PUSH2 0x1E0 DUP4 ADD MSTORE PUSH2 0x200 DUP3 ADD MSTORE PUSH1 0x8 DUP5 ADD SLOAD PUSH2 0x220 DUP3 ADD MSTORE PUSH1 0x9 DUP5 ADD SLOAD PUSH2 0x240 DUP3 ADD MSTORE PUSH1 0xA DUP5 ADD SLOAD PUSH2 0x260 DUP3 ADD MSTORE PUSH1 0x10 DUP5 ADD DUP1 SLOAD PUSH2 0x280 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xEBA SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xEE6 SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF33 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF08 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF33 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF16 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x11 ADD DUP1 SLOAD PUSH2 0xF4C SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF78 SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xFC5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF9A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFC5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xFA8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x12 ADD DUP1 SLOAD PUSH2 0xFDE SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x100A SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1057 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x102C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1057 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x103A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x13 ADD DUP1 SLOAD PUSH2 0x1070 SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x109C SWAP1 PUSH2 0x3293 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10E9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x10BE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10E9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x10CC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1103 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x111C DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI POP PUSH2 0x112F PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x115A JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 SUB PUSH2 0x117B JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1185 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x5 DUP2 ADD DUP1 SLOAD SWAP1 DUP6 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36AE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x11B3 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP PUSH2 0x97B PUSH2 0x2319 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11D1 PUSH2 0x237B JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11F0 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1201 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x262AD80B PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x262AD80B SWAP1 PUSH2 0x123C SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3336 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1268 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1274 PUSH2 0x2319 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1285 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1295 DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xF ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x12DA JUMPI POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1302 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x131B DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1330 JUMPI POP PUSH2 0x132E PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1350 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST DUP2 PUSH1 0x0 SUB PUSH2 0x1371 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x137B PUSH2 0x232A JUMP JUMPDEST PUSH1 0x7 DUP2 ADD DUP1 SLOAD SWAP1 DUP6 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36EE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x11B3 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH2 0x13B2 DUP3 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x13BB DUP2 PUSH2 0x239F JUMP JUMPDEST PUSH2 0x13C5 DUP4 DUP4 PUSH2 0x23A9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x13F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1274 DUP3 DUP3 PUSH2 0x244A JUMP JUMPDEST PUSH2 0x1406 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x141F DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1434 JUMPI POP PUSH2 0x1432 PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1454 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x24C2 JUMP JUMPDEST POP PUSH2 0x97B PUSH2 0x2319 JUMP JUMPDEST PUSH2 0x146E PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1487 DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x149C JUMPI POP PUSH2 0x149A PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x14BC JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x2549 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF PUSH2 0x25D0 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x14F6 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1512 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1520 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x153E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x1567 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0x1576 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x15A3 JUMPI POP PUSH1 0x0 PUSH2 0x1598 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x15C6 JUMPI POP PUSH1 0x0 PUSH2 0x15BB PUSH1 0x60 DUP9 ADD PUSH1 0x40 DUP10 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x15E9 JUMPI POP PUSH1 0x0 PUSH2 0x15DE PUSH1 0x80 DUP9 ADD PUSH1 0x60 DUP10 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1609 JUMPI POP PUSH1 0x0 PUSH2 0x15FE PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x162C JUMPI POP PUSH1 0x0 PUSH2 0x1621 PUSH1 0x40 DUP10 ADD PUSH1 0x20 DUP11 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x164F JUMPI POP PUSH1 0x0 PUSH2 0x1644 PUSH1 0x60 DUP10 ADD PUSH1 0x40 DUP11 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x1672 JUMPI POP PUSH1 0x0 PUSH2 0x1667 PUSH1 0x80 DUP10 ADD PUSH1 0x60 DUP11 ADD PUSH2 0x304A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1690 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x80 DUP8 ADD CALLDATALOAD ISZERO DUP1 PUSH2 0x16A3 JUMPI POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD ISZERO JUMPDEST DUP1 PUSH2 0x16B0 JUMPI POP PUSH1 0xC0 DUP8 ADD CALLDATALOAD ISZERO JUMPDEST DUP1 PUSH2 0x16BD JUMPI POP PUSH1 0xE0 DUP8 ADD CALLDATALOAD ISZERO JUMPDEST ISZERO PUSH2 0x16DB JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x16E3 PUSH2 0x25F4 JUMP JUMPDEST PUSH2 0x16EB PUSH2 0x25FE JUMP JUMPDEST PUSH2 0x16F3 PUSH2 0x25F4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FD PUSH2 0x232A JUMP JUMPDEST PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x4 DUP3 ADD SSTORE PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0x5 DUP3 ADD SSTORE PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH1 0x7 DUP3 ADD SSTORE SWAP1 POP PUSH2 0x172A PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x260E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x368E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 DUP10 PUSH1 0x80 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH2 0x174E SWAP3 SWAP2 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36AE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 DUP10 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH2 0x177A SWAP3 SWAP2 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36EE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 DUP10 PUSH1 0xC0 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH2 0x17A6 SWAP3 SWAP2 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x17F3 PUSH2 0x17BE PUSH1 0x20 DUP11 ADD DUP11 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x17CE PUSH1 0x40 DUP12 ADD PUSH1 0x20 DUP13 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x17DE PUSH1 0x60 DUP13 ADD PUSH1 0x40 DUP14 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x17EE PUSH1 0x80 DUP14 ADD PUSH1 0x60 DUP15 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x2686 JUMP JUMPDEST PUSH2 0x1838 PUSH2 0x1803 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1813 PUSH1 0x40 DUP11 ADD PUSH1 0x20 DUP12 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1823 PUSH1 0x60 DUP12 ADD PUSH1 0x40 DUP13 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x1833 PUSH1 0x80 DUP13 ADD PUSH1 0x60 DUP14 ADD PUSH2 0x304A JUMP JUMPDEST PUSH2 0x26AA JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x187F JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1890 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x18A9 DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x18BE JUMPI POP PUSH2 0x18BC PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x18DE JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x2707 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18F2 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1902 DUP5 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0xA ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1939 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x38399695 PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xE0E65A54 SWAP1 PUSH2 0x1970 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x344E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x198D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19B1 SWAP2 SWAP1 PUSH2 0x321B JUMP JUMPDEST SWAP1 POP PUSH2 0x19BB PUSH2 0x2319 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x19C8 PUSH2 0x278A JUMP JUMPDEST PUSH2 0x19D1 DUP3 PUSH2 0x282F JUMP JUMPDEST PUSH2 0x19DB DUP3 DUP3 PUSH2 0x2847 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19E9 PUSH2 0x28FB JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x364E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1A08 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1A18 DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xC ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA16 JUMPI POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1A8E PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x67FC8C89 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x67FC8C89 SWAP1 PUSH1 0x24 ADD PUSH2 0x943 JUMP JUMPDEST PUSH2 0x1ACE PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1AE7 DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1AFC JUMPI POP PUSH2 0x1AFA PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1B1C JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x260E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B30 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1B40 DUP5 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x27B45219 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x0 SWAP1 PUSH4 0x9ED14864 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1BC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BE4 SWAP2 SWAP1 PUSH2 0x3270 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x9AF JUMPI PUSH2 0x9AF PUSH2 0x2CF7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C03 PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1C13 DUP5 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x11 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP6 MSTORE SWAP3 SWAP1 MSTORE POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C4A PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x87D6E213 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x87D6E213 SWAP1 PUSH1 0x24 ADD PUSH2 0x1970 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C8D PUSH2 0x237B JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CC2 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA04277 PUSH1 0xE8 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xA0427700 SWAP1 PUSH1 0x24 ADD PUSH2 0x1970 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D03 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x6 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1D14 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA41483E3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xA41483E3 SWAP1 PUSH1 0x24 ADD PUSH2 0x943 JUMP JUMPDEST PUSH2 0x1D54 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x29E05EEF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xA7817BBC SWAP1 PUSH1 0x24 ADD PUSH2 0x943 JUMP JUMPDEST PUSH2 0x1D94 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1DAD DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1DC2 JUMPI POP PUSH2 0x1DC0 PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1DE2 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST DUP2 PUSH1 0x0 SUB PUSH2 0x1E03 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E0D PUSH2 0x232A JUMP JUMPDEST PUSH1 0x4 DUP2 ADD DUP1 SLOAD SWAP1 DUP6 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x368E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x11B3 SWAP1 DUP4 SWAP1 DUP8 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E45 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1E95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EB9 SWAP2 SWAP1 PUSH2 0x3270 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x19B1 JUMPI PUSH2 0x19B1 PUSH2 0x2CF7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ED7 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5AC5E9AB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB58BD356 SWAP1 PUSH1 0x24 ADD PUSH2 0x1970 JUMP JUMPDEST PUSH2 0x1F17 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1F30 DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1F45 JUMPI POP PUSH2 0x1F43 PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x1F65 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x145D DUP3 PUSH2 0x2944 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F78 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCB3E0D2B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xCB3E0D2B SWAP1 PUSH1 0x24 ADD PUSH2 0x1970 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1FBC PUSH2 0x232A JUMP JUMPDEST SWAP1 POP PUSH2 0x1FCC DUP4 DUP3 PUSH1 0x6 ADD SLOAD PUSH2 0x234E JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0xD ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA16 JUMPI POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2044 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x4 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2056 DUP3 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x205F DUP2 PUSH2 0x239F JUMP JUMPDEST PUSH2 0x13C5 DUP4 DUP4 PUSH2 0x244A JUMP JUMPDEST PUSH2 0x2071 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x72247713 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xE448EE26 SWAP1 PUSH1 0x24 ADD PUSH2 0x943 JUMP JUMPDEST PUSH2 0x20B1 PUSH2 0x22E3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20BD DUP2 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x20D2 JUMPI POP PUSH2 0x20D0 PUSH1 0x0 CALLER PUSH2 0x1C82 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x20F2 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2119 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 SUB PUSH2 0x213A JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2144 PUSH2 0x232A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2179 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2196 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21BA SWAP2 SWAP1 PUSH2 0x321B JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x21E1 JUMPI DUP1 DUP5 PUSH1 0x40 MLOAD PUSH4 0x4720F4B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP3 SWAP2 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2212 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x35D6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2231 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2255 SWAP2 SWAP1 PUSH2 0x35EF JUMP JUMPDEST PUSH2 0x2272 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 CALLER SWAP1 PUSH32 0x8B192DC173E314B16D9067E45C2AFBDCDC1713FC4FE1A95AFF9076249648ABC0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH2 0x19DB PUSH2 0x2319 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22C7 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x5 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22DA PUSH2 0x232A JUMP JUMPDEST PUSH1 0x10 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22ED PUSH2 0x29CB JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x2313 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2323 PUSH2 0x29CB JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x4602C7A79EAC2C186A5049FA18AA513E24B689A1ED3277F24B1E5B426612D100 SWAP1 JUMP JUMPDEST DUP2 ISZERO DUP1 PUSH2 0x235A JUMPI POP DUP1 DUP3 GT JUMPDEST ISZERO PUSH2 0x19DB JUMPI PUSH1 0x40 MLOAD PUSH4 0x5BAFAFD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1151 JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH2 0x97B DUP2 CALLER PUSH2 0x29EF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23B4 PUSH2 0x237B JUMP JUMPDEST SWAP1 POP PUSH2 0x23C0 DUP5 DUP5 PUSH2 0x1C82 JUMP JUMPDEST PUSH2 0x2440 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x23F6 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2455 PUSH2 0x237B JUMP JUMPDEST SWAP1 POP PUSH2 0x2461 DUP5 DUP5 PUSH2 0x1C82 JUMP JUMPDEST ISZERO PUSH2 0x2440 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x24E9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x24F3 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 POP AND SWAP2 DUP3 SWAP1 PUSH32 0xD260589E8955F4324723F68C9C004AFE08C82D5790F93946BBF95F6EBCAB5347 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2570 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x257A PUSH2 0x232A JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 POP AND SWAP2 DUP3 SWAP1 PUSH32 0x897ACAEC25783CE4CF8FF29C16715E089A40D285E2E5D6FCF567AF00F4714259 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x25FC PUSH2 0x2A1A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2606 PUSH2 0x2A1A JUMP JUMPDEST PUSH2 0x25FC PUSH2 0x2A3F JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x262F JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2639 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x10 DUP2 ADD DUP1 SLOAD SWAP1 DUP5 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH32 0x82480E97991520549AC4B5D0E1D97EDB3BFAC2666202923B6903D2A953DC7608 SWAP1 PUSH2 0x2679 SWAP1 DUP4 SWAP1 DUP7 SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x268F DUP5 PUSH2 0x2707 JUMP JUMPDEST PUSH2 0x2698 DUP4 PUSH2 0x24C2 JUMP JUMPDEST PUSH2 0x26A1 DUP3 PUSH2 0x2549 JUMP JUMPDEST PUSH2 0x13C5 DUP2 PUSH2 0x2944 JUMP JUMPDEST PUSH2 0x26B5 PUSH1 0x0 DUP6 PUSH2 0x23A9 JUMP JUMPDEST POP PUSH2 0x26CE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x362E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x23A9 JUMP JUMPDEST POP PUSH2 0x26E7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x36CE DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x23A9 JUMP JUMPDEST POP PUSH2 0x2700 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x366E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH2 0x23A9 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x272E JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2738 PUSH2 0x232A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 POP SWAP2 AND SWAP2 DUP3 SWAP1 PUSH32 0xB3061A8192D243178B0FD92D1809BC86C3FA3B177C046CF74974C45C32CD25E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2811 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2805 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x364E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x25FC JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x362E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x19DB DUP2 PUSH2 0x239F JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x28A1 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x289E SWAP2 DUP2 ADD SWAP1 PUSH2 0x321B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x28C0 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x364E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x28F1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1151 JUMP JUMPDEST PUSH2 0x1274 DUP4 DUP4 PUSH2 0x2A47 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x25FC JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x296B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2975 PUSH2 0x232A JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 POP AND SWAP2 DUP3 SWAP1 PUSH32 0x2A190D74141C632BADC9D2CBB0EB33818F3B5F949C4E8AD29D80AA63A5537AC SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH2 0x29F9 DUP3 DUP3 PUSH2 0x1C82 JUMP JUMPDEST PUSH2 0x19DB JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP3 SWAP2 SWAP1 PUSH2 0x35D6 JUMP JUMPDEST PUSH2 0x2A22 PUSH2 0x2A9D JUMP JUMPDEST PUSH2 0x25FC JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2319 PUSH2 0x2A1A JUMP JUMPDEST PUSH2 0x2A50 DUP3 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x2A95 JUMPI PUSH2 0x1274 DUP3 DUP3 PUSH2 0x2B13 JUMP JUMPDEST PUSH2 0x19DB PUSH2 0x2B89 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA7 PUSH2 0x25D0 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x2AE4 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x364E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2B30 SWAP2 SWAP1 PUSH2 0x3611 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2B6B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2B70 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2B80 DUP6 DUP4 DUP4 PUSH2 0x2BA8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x25FC JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x2BBD JUMPI PUSH2 0x2BB8 DUP3 PUSH2 0x2BFB JUMP JUMPDEST PUSH2 0xB51 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2BD4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2BF4 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1151 SWAP2 SWAP1 PUSH2 0x32CD JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2C0B JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA12F521 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2CA8 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2C83 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x19BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2CEE PUSH1 0x20 DUP5 ADD PUSH2 0x2CB4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x2D1D JUMPI PUSH2 0x2D1D PUSH2 0x2CF7 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x5 DUP2 LT PUSH2 0x2D1D JUMPI PUSH2 0x2D1D PUSH2 0x2CF7 JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x97B JUMPI PUSH2 0x97B PUSH2 0x2CF7 JUMP JUMPDEST PUSH2 0x2D1D DUP2 PUSH2 0x2D31 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D65 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2D4D JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2D86 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2D4A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x2DB9 PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x2DCC PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x2DDF PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x2DF2 PUSH1 0xA0 DUP5 ADD DUP3 PUSH2 0x2D21 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x2E05 PUSH1 0xC0 DUP5 ADD DUP3 PUSH2 0x2D41 JUMP JUMPDEST POP PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xE0 DUP5 ADD MSTORE POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x100 DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x120 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x140 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x160 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x180 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x1A0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x1C0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x1E0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MLOAD PUSH2 0x200 PUSH2 0x2E98 DUP2 DUP6 ADD DUP4 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST DUP5 ADD MLOAD PUSH2 0x220 DUP5 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x240 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x260 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x280 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x2A0 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x2C0 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x2E0 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x300 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x320 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 ADD MLOAD PUSH2 0x3A0 PUSH2 0x340 DUP1 DUP7 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 PUSH2 0x2F2E PUSH2 0x3C0 DUP7 ADD DUP5 PUSH2 0x2D6E JUMP JUMPDEST SWAP3 POP DUP1 DUP7 ADD MLOAD SWAP1 POP PUSH1 0x1F NOT PUSH2 0x360 DUP2 DUP8 DUP7 SUB ADD DUP2 DUP9 ADD MSTORE PUSH2 0x2F4F DUP6 DUP5 PUSH2 0x2D6E JUMP JUMPDEST SWAP5 POP DUP1 DUP9 ADD MLOAD SWAP3 POP POP PUSH2 0x380 DUP2 DUP8 DUP7 SUB ADD DUP2 DUP9 ADD MSTORE PUSH2 0x2F6E DUP6 DUP5 PUSH2 0x2D6E JUMP JUMPDEST SWAP1 DUP9 ADD MLOAD DUP8 DUP3 SUB SWAP1 SWAP3 ADD DUP5 DUP9 ADD MSTORE SWAP4 POP SWAP1 POP PUSH2 0x2F8A DUP4 DUP3 PUSH2 0x2D6E JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2FA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2FC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2FDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2FEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2CA8 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x302E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x305C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB51 DUP3 PUSH2 0x2CB4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x180 DUP2 SLT ISZERO PUSH2 0x307A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x100 DUP1 DUP3 SLT ISZERO PUSH2 0x308A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 SWAP4 POP PUSH1 0x80 PUSH1 0xFF NOT DUP4 ADD SLT ISZERO PUSH2 0x309F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP6 SWAP4 SWAP1 SWAP3 ADD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x30D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x1C0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x310F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3118 DUP4 PUSH2 0x2CB4 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x315A JUMPI PUSH2 0x315A PUSH2 0x30E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3182 JUMPI PUSH2 0x3182 PUSH2 0x30E6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x319B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB51 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D6E JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x31DD DUP4 PUSH2 0x2D31 JUMP JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x9AF DUP3 DUP5 PUSH2 0x2D21 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x320D DUP4 PUSH2 0x2CB4 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x322D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9AF JUMPI PUSH2 0x9AF PUSH2 0x3234 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9AF JUMPI PUSH2 0x9AF PUSH2 0x3234 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x32A7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x32C7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x332B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3318 DUP4 PUSH2 0x2CB4 JUMP JUMPDEST AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x32FF JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2B80 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x32EF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x19BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x3376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x20 DUP2 ADD SWAP3 POP CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x5 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x33A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFB SHL SUB DUP4 GT ISZERO PUSH2 0x33C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x5 SHL DUP1 DUP4 PUSH1 0x20 DUP8 ADD CALLDATACOPY SWAP4 SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x33F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x20 DUP2 ADD SWAP3 POP CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x33A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH2 0x3467 PUSH1 0x20 DUP3 ADD PUSH2 0x3462 DUP5 PUSH2 0x3350 JUMP JUMPDEST PUSH2 0x2D0D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3475 PUSH1 0x20 DUP5 ADD PUSH2 0x3350 JUMP JUMPDEST PUSH2 0x3482 PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH2 0x348F PUSH1 0x40 DUP5 ADD PUSH2 0x3350 JUMP JUMPDEST PUSH2 0x349C PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x2D0D JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD CALLDATALOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 PUSH1 0xE0 DUP5 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE PUSH2 0x34DD DUP2 DUP6 ADD DUP6 PUSH2 0x335F JUMP JUMPDEST SWAP2 POP PUSH2 0x1C0 PUSH2 0x120 DUP2 DUP2 DUP8 ADD MSTORE PUSH2 0x34F9 PUSH2 0x1E0 DUP8 ADD DUP6 DUP6 PUSH2 0x33AE JUMP JUMPDEST SWAP4 POP PUSH2 0x3507 DUP2 DUP9 ADD DUP9 PUSH2 0x335F JUMP JUMPDEST SWAP4 POP SWAP1 POP PUSH1 0x1F NOT PUSH2 0x140 DUP2 DUP9 DUP8 SUB ADD DUP2 DUP10 ADD MSTORE PUSH2 0x3525 DUP7 DUP7 DUP6 PUSH2 0x32EF JUMP JUMPDEST SWAP6 POP PUSH2 0x3533 DUP2 DUP11 ADD DUP11 PUSH2 0x33E0 JUMP JUMPDEST SWAP6 POP SWAP3 POP POP PUSH2 0x160 DUP2 DUP9 DUP8 SUB ADD DUP2 DUP10 ADD MSTORE PUSH2 0x354F DUP7 DUP7 DUP6 PUSH2 0x3425 JUMP JUMPDEST SWAP6 POP PUSH2 0x355D DUP2 DUP11 ADD DUP11 PUSH2 0x33E0 JUMP JUMPDEST SWAP6 POP SWAP3 POP POP PUSH2 0x180 DUP2 DUP9 DUP8 SUB ADD DUP2 DUP10 ADD MSTORE PUSH2 0x3579 DUP7 DUP7 DUP6 PUSH2 0x3425 JUMP JUMPDEST SWAP6 POP PUSH2 0x3587 DUP2 DUP11 ADD DUP11 PUSH2 0x33E0 JUMP JUMPDEST SWAP6 POP SWAP3 POP POP PUSH2 0x1A0 DUP2 DUP9 DUP8 SUB ADD DUP2 DUP10 ADD MSTORE PUSH2 0x35A3 DUP7 DUP7 DUP6 PUSH2 0x3425 JUMP JUMPDEST SWAP6 POP PUSH2 0x35B1 DUP2 DUP11 ADD DUP11 PUSH2 0x33E0 JUMP JUMPDEST SWAP6 POP SWAP3 POP POP DUP1 DUP8 DUP7 SUB ADD DUP4 DUP9 ADD MSTORE POP PUSH2 0x35CB DUP5 DUP5 DUP4 PUSH2 0x3425 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3623 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2D4A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCDFC0438B5754BEB343462F RETURN ADDRESS 0xF7 ORIGIN PUSH7 0xFF7457FDF879DF 0xB6 DUP13 SWAP6 DUP13 0xCB 0xE1 JUMPI PUSH6 0xF3280335B272 PUSH14 0x1C2B1770BA289D3DE2CEBD2F55C6 COINBASE 0xE9 EXTCODECOPY PUSH31 0x77D033CADAB1B06B2294A958EA1CB2569BFBDBD8A8E8502B08B8A71EA5134D 0x26 0x4F SWAP8 CREATE PUSH31 0xF7F8A8E856AF926AA3845D4DC63A6C773ED36F51794728C97EBCD1BF845BCE 0xCB AND 0xEE 0xB6 0xB7 NUMBER 0xF7 SAR REVERT 0x21 PUSH15 0xAAF2F75BDB23D66AE4F5B7E2975E42 0x25 CODESIZE 0xB6 DUP15 CALL SHL CHAINID 0xB3 DUP8 BLOCKHASH SWAP9 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CHAINID 0xDA SWAP11 KECCAK256 JUMPDEST DUP8 PUSH21 0x131E7FF18A2341DEF0D961084CEDCC65164DD5377E 0xB7 CALL 0x25 0xE9 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"1421:16405:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10603:128;;;;;;;;;;-1:-1:-1;10603:128:22;;;;;:::i;:::-;;:::i;:::-;;3443:202:0;;;;;;;;;;-1:-1:-1;3443:202:0;;;;;:::i;:::-;;:::i;:::-;;;751:14:46;;744:22;726:41;;714:2;699:18;3443:202:0;;;;;;;;6868:313:22;;;;;;;;;;-1:-1:-1;6868:313:22;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8232:303::-;;;;;;;;;;-1:-1:-1;8232:303:22;;;;;:::i;:::-;;:::i;9658:195::-;;;;;;;;;;-1:-1:-1;9658:195:22;;;;;:::i;:::-;;:::i;:::-;;;2133:25:46;;;2121:2;2106:18;9658:195:22;1987:177:46;4895:1702:22;;;;;;;;;;-1:-1:-1;4895:1702:22;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13991:392::-;;;;;;;;;;-1:-1:-1;13991:392:22;;;;;:::i;:::-;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;4559:137:22:-;;;;;;;;;;;;;:::i;10100:155::-;;;;;;;;;;-1:-1:-1;10100:155:22;;;;;:::i;:::-;;:::i;7891:307::-;;;;;;;;;;-1:-1:-1;7891:307:22;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14417:392::-;;;;;;;;;;-1:-1:-1;14417:392:22;;;;;:::i;:::-;;:::i;5246:136:0:-;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;6348:245::-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;12925:176:22:-;;;;;;;;;;-1:-1:-1;12925:176:22;;;;;:::i;:::-;;:::i;13135:178::-;;;;;;;;;;-1:-1:-1;13135:178:22;;;;;:::i;:::-;;:::i;1928:1684::-;;;;;;;;;;-1:-1:-1;1928:1684:22;;;;;:::i;:::-;;:::i;12739:152::-;;;;;;;;;;-1:-1:-1;12739:152:22;;;;;:::i;:::-;;:::i;8960:318::-;;;;;;;;;;-1:-1:-1;8960:318:22;;;;;:::i;:::-;;:::i;9887:179::-;;;;;;;;;;-1:-1:-1;9887:179:22;;;;;:::i;:::-;;:::i;4158:214:2:-;;;;;;:::i;:::-;;:::i;3705:134::-;;;;;;;;;;;;;:::i;3926:78:22:-;;;;;;;;;;-1:-1:-1;3989:10:22;;;;;;;;;;;;-1:-1:-1;;;3989:10:22;;;;3926:78;;;;;;;:::i;7215:303::-;;;;;;;;;;-1:-1:-1;7215:303:22;;;;;:::i;:::-;;:::i;10445:124::-;;;;;;;;;;-1:-1:-1;10445:124:22;;;;;:::i;:::-;;:::i;14843:141::-;;;;;;;;;;-1:-1:-1;14843:141:22;;;;;:::i;:::-;;:::i;8569:357::-;;;;;;;;;;-1:-1:-1;8569:357:22;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6631:203::-;;;;;;;;;;-1:-1:-1;6631:203:22;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9312:312::-;;;;;;;;;;-1:-1:-1;9312:312:22;;;;;:::i;:::-;;:::i;11331:167::-;;;;;;;;;;-1:-1:-1;11331:167:22;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;1605:100:22:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1605:100:22;;11532:163;;;;;;;;;;-1:-1:-1;11532:163:22;;;;;:::i;:::-;;:::i;2317:49:0:-;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;4038:135:22;;;;;;;;;;;;;:::i;10765:126::-;;;;;;;;;;-1:-1:-1;10765:126:22;;;;;:::i;:::-;;:::i;11161:136::-;;;;;;;;;;-1:-1:-1;11161:136:22;;;;;:::i;:::-;;:::i;13545:412::-;;;;;;;;;;-1:-1:-1;13545:412:22;;;;;:::i;:::-;;:::i;1819:58:2:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:2;;;;;10925:202:22;;;;;;;;;;-1:-1:-1;10925:202:22;;;;;:::i;:::-;;:::i;11942:167::-;;;;;;;;;;-1:-1:-1;11942:167:22;;;;;:::i;:::-;;:::i;13347:164::-;;;;;;;;;;-1:-1:-1;13347:164:22;;;;;:::i;:::-;;:::i;11729:179::-;;;;;;;;;;-1:-1:-1;11729:179:22;;;;;:::i;:::-;;:::i;7552:305::-;;;;;;;;;;-1:-1:-1;7552:305:22;;;;;:::i;:::-;;:::i;4207:147::-;;;;;;;;;;;;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;10289:122:22:-;;;;;;;;;;-1:-1:-1;10289:122:22;;;;;:::i;:::-;;:::i;12143:562::-;;;;;;;;;;-1:-1:-1;12143:562:22;;;;;:::i;:::-;;:::i;1535:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1535:66:22;;4388:137;;;;;;;;;;;;;:::i;1709:82::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1709:82:22;;4730:131;;;;;;;;;;;;;:::i;10603:128::-;3251:21:4;:19;:21::i;:::-;10678:48:22::1;::::0;-1:-1:-1;;;10678:48:22;;::::1;::::0;::::1;2133:25:46::0;;;10678:18:22::1;::::0;:35:::1;::::0;2106:18:46;;10678:48:22::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3293:20:4::0;:18;:20::i;:::-;10603:128:22;:::o;3443:202:0:-;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;-1:-1:-1;;;;;;;;;;1133:40:5;;;3602:36:0;3544:94;3443:202;-1:-1:-1;;3443:202:0:o;6868:313:22:-;6946:16;6970:49;7022:44;:42;:44::i;:::-;6970:96;;7072:53;7095:11;7108:1;:16;;;7072:22;:53::i;:::-;7138:25;;;;:12;;;:25;;;;;;;;;:38;;7131:45;;;;;;;;;;;;;;;;;7138:38;;7131:45;;7138:38;7131:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7131:45:22;;;;;;;;;;;;;;;;;;;;;;;;6868:313;;;:::o;8232:303::-;8305:16;8329:49;8381:44;:42;:44::i;:::-;8329:96;;8431:53;8454:11;8467:1;:16;;;8431:22;:53::i;:::-;8497:25;;;;:12;;;:25;;;;;;;;;:33;;8490:40;;;;;;;;;;;;;;;;;8497:33;;8490:40;;8497:33;8490:40;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8490:40:22;;;;;;;;;;;;;;;;;;;;;;;8232:303;;;:::o;9658:195::-;9776:72;;-1:-1:-1;;;9776:72:22;;;;;12672:25:46;;;-1:-1:-1;;;;;12733:32:46;;12713:18;;;12706:60;9754:7:22;;9776:24;;:46;;12645:18:46;;9776:72:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9769:79;9658:195;-1:-1:-1;;;9658:195:22:o;4895:1702::-;4961:35;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4961:35:22;5004:49;5056:44;:42;:44::i;:::-;5004:96;;5106:53;5129:11;5142:1;:16;;;5106:22;:53::i;:::-;5166:42;5211:25;;;:12;;;:25;;;;;5282:20;;;;5261:18;;;;5211:25;;5166:42;5261:41;;5282:20;5261:41;:::i;:::-;:45;;5305:1;5261:45;:::i;:::-;5320:1272;;;;;;;;;;;;5395:14;;5242:64;;-1:-1:-1;5320:1272:22;;;;;5395:14;;;5320:1272;;;;;;;:::i;:::-;;;5429:20;;5320:1272;;;;;5429:20;;;;;;5320:1272;;;;;;;:::i;:::-;;;5472:23;;5320:1272;;;;;5472:23;;;;;5320:1272;;;;;;;;:::i;:::-;;;;;5542:18;:36;5579:11;5542:49;;;;;;;;;;;;;2133:25:46;;2121:2;2106:18;;1987:177;5542:49:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5511:81;;;;;;;;;;:::i;:::-;5320:1272;;;;;;;;:::i;:::-;;;5616:24;;5320:1272;;;;;-1:-1:-1;;;5616:24:22;;;;5320:1272;;;;;;;;:::i;:::-;;;5657:17;;-1:-1:-1;;;5657:17:22;;-1:-1:-1;;;;;5657:17:22;5320:1272;;;;5695:21;;;;5320:1272;;;;5736:20;;;;5320:1272;;;;5774:18;;;;5320:1272;;;;;;;;;;5837:19;;;;5320:1272;;;;5876:20;;;;5320:1272;;;;5920:17;;;:24;5657:17;5320:1272;;;;;5657:17;5968:24;;;5320:1272;;;;-1:-1:-1;;;6009:17:22;;;;;5320:1272;;;;;;6046:20;;;;5320:1272;;;;6092:22;;;:29;5320:1272;;;;6143:17;;;:24;5320:1272;;;;6190:18;;;:25;5320:1272;;;;6242:16;;;:23;5320:1272;;;;;;;;6330:19;;;;5320:1272;;;;6368:19;;;;5320:1272;;;;6411:24;;;;5320:1272;;;;6450:15;;;5320:1272;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6486:9;:21;;5320:1272;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6525:9;:18;;5320:1272;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6564:9;:21;;5320:1272;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5313:1279;;;;;4895:1702;;;:::o;13991:392::-;3251:21:4;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3666:25:22::1;3674:4;3680:10;3666:7;:25::i;:::-;3665:26;:70;;;;-1:-1:-1::0;3696:39:22::1;2362:4:0;3724:10:22;3696:7;:39::i;:::-;3695:40;3665:70;3661:136;;;3779:10;3752:38;;-1:-1:-1::0;;;3752:38:22::1;;;;;;;;:::i;:::-;;;;;;;;3661:136;14108:8:::2;14120:1;14108:13:::0;14104:41:::2;;14130:15;;-1:-1:-1::0;;;14130:15:22::2;;;;;;;;;;;14104:41;14152:49;14204:44;:42;:44::i;:::-;14273:17;::::0;::::2;::::0;;14296:28;;;;14336:42:::2;::::0;14152:96;;-1:-1:-1;14273:17:22;-1:-1:-1;;;;;;;;;;;14336:42:22;::::2;::::0;14273:17;;14316:8;;14336:42:::2;:::i;:::-;;;;;;;;14098:285;;3282:1:4::1;3293:20:::0;:18;:20::i;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;4559:137:22:-;4609:7;4631:44;:42;:44::i;:::-;:60;;;4624:67;;4559:137;:::o;10100:155::-;3251:21:4;:19;:21::i;:::-;10198:52:22::1;::::0;-1:-1:-1;;;10198:52:22;;:18:::1;::::0;:29:::1;::::0;:52:::1;::::0;10228:11;;10241:8;;;;10198:52:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3293:20:4::0;:18;:20::i;:::-;10100:155:22;;;:::o;7891:307::-;7969:16;7993:49;8045:44;:42;:44::i;:::-;7993:96;;8095:53;8118:11;8131:1;:16;;;8095:22;:53::i;:::-;8161:25;;;;:12;;;:25;;;;;;;;;:32;;8154:39;;;;;;;;;;;;;;;;;8161:32;;8154:39;;8161:32;8154:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7891:307;;;:::o;14417:392::-;3251:21:4;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3666:25:22::1;3674:4;3680:10;3666:7;:25::i;:::-;3665:26;:70;;;;-1:-1:-1::0;3696:39:22::1;2362:4:0;3724:10:22;3696:7;:39::i;:::-;3695:40;3665:70;3661:136;;;3779:10;3752:38;;-1:-1:-1::0;;;3752:38:22::1;;;;;;;;:::i;3661:136::-;14534:8:::2;14546:1;14534:13:::0;14530:41:::2;;14556:15;;-1:-1:-1::0;;;14556:15:22::2;;;;;;;;;;;14530:41;14578:49;14630:44;:42;:44::i;:::-;14699:17;::::0;::::2;::::0;;14722:28;;;;14762:42:::2;::::0;14578:96;;-1:-1:-1;14699:17:22;-1:-1:-1;;;;;;;;;;;14762:42:22;::::2;::::0;14699:17;;14742:8;;14762:42:::2;:::i;5246:136:0:-:0;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6348:245::-;-1:-1:-1;;;;;6441:34:0;;966:10:3;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;12925:176:22:-;3251:21:4;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3666:25:22::1;3674:4;3680:10;3666:7;:25::i;:::-;3665:26;:70;;;;-1:-1:-1::0;3696:39:22::1;2362:4:0;3724:10:22;3696:7;:39::i;:::-;3695:40;3665:70;3661:136;;;3779:10;3752:38;;-1:-1:-1::0;;;3752:38:22::1;;;;;;;;:::i;3661:136::-;13057:39:::2;13085:10;13057:27;:39::i;:::-;3282:1:4::1;3293:20:::0;:18;:20::i;13135:178:22:-;3251:21:4;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3666:25:22::1;3674:4;3680:10;3666:7;:25::i;:::-;3665:26;:70;;;;-1:-1:-1::0;3696:39:22::1;2362:4:0;3724:10:22;3696:7;:39::i;:::-;3695:40;3665:70;3661:136;;;3779:10;3752:38;;-1:-1:-1::0;;;3752:38:22::1;;;;;;;;:::i;3661:136::-;13268:40:::2;13297:10;13268:28;:40::i;1928:1684::-:0;4158:30:1;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:1;-1:-1:-1;;;4302:15:1;;;4301:16;;-1:-1:-1;;;;;4348:14:1;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:1;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:1;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:1;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:1;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:1;-1:-1:-1;;;5013:22:1;;;4979:67;2124:1:22::1;2101:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;-1:-1:-1::0;;;;;2101:25:22::1;;:63;;;-1:-1:-1::0;2162:1:22::1;2136:14;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;2136:28:22::1;;2101:63;:116;;;-1:-1:-1::0;2215:1:22::1;2174:29;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;2174:43:22::1;;2101:116;:161;;;-1:-1:-1::0;2260:1:22::1;2227:21;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;2227:35:22::1;;2101:161;:201;;;-1:-1:-1::0;2300:1:22::1;2272:16;;::::0;::::1;:4:::0;:16:::1;:::i;:::-;-1:-1:-1::0;;;;;2272:30:22::1;;2101:201;:253;;;-1:-1:-1::0;2352:1:22::1;2312:28;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;2312:42:22::1;;2101:253;:306;;;-1:-1:-1::0;2405:1:22::1;2364:29;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;2364:43:22::1;;2101:306;:352;;;-1:-1:-1::0;2451:1:22::1;2417:22;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;2417:36:22::1;;2101:352;2090:405;;;2475:13;;-1:-1:-1::0;;;2475:13:22::1;;;;;;;;;;;2090:405;2511:25;::::0;::::1;;:30:::0;;:65:::1;;-1:-1:-1::0;2551:20:22::1;::::0;::::1;;:25:::0;2511:65:::1;:100;;;-1:-1:-1::0;2586:20:22::1;::::0;::::1;;:25:::0;2511:100:::1;:132;;;-1:-1:-1::0;2621:17:22::1;::::0;::::1;;:22:::0;2511:132:::1;2500:172;;;2657:15;;-1:-1:-1::0;;;2657:15:22::1;;;;;;;;;;;2500:172;2679:22;:20;:22::i;:::-;2707:24;:22;:24::i;:::-;2737;:22;:24::i;:::-;2768:49;2820:44;:42;:44::i;:::-;2895:25;::::0;::::1;;2870:22;::::0;::::1;:50:::0;2946:20:::1;::::0;::::1;;2926:17;::::0;::::1;:40:::0;2992:20:::1;::::0;::::1;;2972:17;::::0;::::1;:40:::0;2768:96;-1:-1:-1;3018:35:22::1;3035:17;::::0;::::1;;3018:16;:35::i;:::-;-1:-1:-1::0;;;;;;;;;;;3197:1:22::1;3200:4;:25;;;3169:57;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;;;;;;;3260:1:22::1;3263:4;:20;;;3237:47;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;;;;;;;3318:1:22::1;3321:4;:20;;;3295:47;;;;;;;:::i;:::-;;;;;;;;3349:153;3377:16;;::::0;::::1;:4:::0;:16:::1;:::i;:::-;3401:28;::::0;;;::::1;::::0;::::1;;:::i;:::-;3437:29;::::0;;;::::1;::::0;::::1;;:::i;:::-;3474:22;::::0;;;::::1;::::0;::::1;;:::i;:::-;3349:20;:153::i;:::-;3508:99;3525:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;3538:14;::::0;;;::::1;::::0;::::1;;:::i;:::-;3554:29;::::0;;;::::1;::::0;::::1;;:::i;:::-;3585:21;::::0;;;::::1;::::0;::::1;;:::i;:::-;3508:16;:99::i;:::-;2084:1528;5070:14:1::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:1;;;5142:14;;-1:-1:-1;15723:50:46;;5142:14:1;;15711:2:46;15696:18;5142:14:1;;;;;;;5066:101;4092:1081;;;;;1928:1684:22;;:::o;12739:152::-;3251:21:4;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3666:25:22::1;3674:4;3680:10;3666:7;:25::i;:::-;3665:26;:70;;;;-1:-1:-1::0;3696:39:22::1;2362:4:0;3724:10:22;3696:7;:39::i;:::-;3695:40;3665:70;3661:136;;;3779:10;3752:38;;-1:-1:-1::0;;;3752:38:22::1;;;;;;;;:::i;3661:136::-;12859:27:::2;12875:10;12859:15;:27::i;8960:318::-:0;9051:4;9063:49;9115:44;:42;:44::i;:::-;9063:96;;9165:53;9188:11;9201:1;:16;;;9165:22;:53::i;:::-;9231:33;;;;:20;;:33;;;;;;;;-1:-1:-1;;;;;9231:42:22;;;;;;;;;-1:-1:-1;9231:42:22;;;;;;8960:318::o;9887:179::-;9997:7;3251:21:4;:19;:21::i;:::-;10019:42:22::1;::::0;-1:-1:-1;;;10019:42:22;;:18:::1;::::0;:34:::1;::::0;:42:::1;::::0;10054:6;;10019:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10012:49;;3293:20:4::0;:18;:20::i;:::-;9887:179:22;;;:::o;4158:214:2:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;3705:134::-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:2;:::o;7215:303:22:-;7288:16;7312:49;7364:44;:42;:44::i;:::-;7312:96;;7414:53;7437:11;7450:1;:16;;;7414:22;:53::i;:::-;7480:25;;;;:12;;;:25;;;;;;;;;:33;;7473:40;;;;;;;;;;;;;;;;;7480:33;;7473:40;;7480:33;7473:40;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7473:40:22;;;;;;;;;;;;;;;;;;;;;;;7215:303;;;:::o;10445:124::-;3251:21:4;:19;:21::i;:::-;10518:46:22::1;::::0;-1:-1:-1;;;10518:46:22;;::::1;::::0;::::1;2133:25:46::0;;;10518:18:22::1;::::0;:33:::1;::::0;2106:18:46;;10518:46:22::1;1987:177:46::0;14843:141:22;3251:21:4;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3666:25:22::1;3674:4;3680:10;3666:7;:25::i;:::-;3665:26;:70;;;;-1:-1:-1::0;3696:39:22::1;2362:4:0;3724:10:22;3696:7;:39::i;:::-;3695:40;3665:70;3661:136;;;3779:10;3752:38;;-1:-1:-1::0;;;3752:38:22::1;;;;;;;;:::i;3661:136::-;14953:26:::2;14970:8;14953:16;:26::i;8569:357::-:0;8672:32;8712:49;8764:44;:42;:44::i;:::-;8712:96;;8814:53;8837:11;8850:1;:16;;;8814:22;:53::i;:::-;8880:32;;;;:19;;:32;;;;;;;;-1:-1:-1;;;;;8880:41:22;;;;;;;;;-1:-1:-1;8880:41:22;;;;;;8569:357::o;6631:203::-;6779:49;;-1:-1:-1;;;6779:49:22;;;;;2133:25:46;;;6703:30:22;;6779:18;;:36;;2106:18:46;;6779:49:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6748:81;;;;;;;;;;:::i;9312:312::-;9399:4;9411:49;9463:44;:42;:44::i;:::-;9411:96;;9513:53;9536:11;9549:1;:16;;;9513:22;:53::i;:::-;9579:31;;;;:18;;:31;;;;;;;;-1:-1:-1;;;;;9579:40:22;;;;;;;;;-1:-1:-1;9579:40:22;;;;;;9312:312::o;11331:167::-;11413:7;3251:21:4;:19;:21::i;:::-;11435:58:22::1;::::0;-1:-1:-1;;;11435:58:22;;::::1;::::0;::::1;2133:25:46::0;;;11435:24:22::1;::::0;:45:::1;::::0;2106:18:46;;11435:58:22::1;1987:177:46::0;3732:207:0;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;11532:163:22:-;11612:7;3251:21:4;:19;:21::i;:::-;11634:56:22::1;::::0;-1:-1:-1;;;11634:56:22;;::::1;::::0;::::1;2133:25:46::0;;;11634:24:22::1;::::0;:43:::1;::::0;2106:18:46;;11634:56:22::1;1987:177:46::0;4038:135:22;4087:7;4109:44;:42;:44::i;:::-;:59;;;4102:66;;4038:135;:::o;10765:126::-;3251:21:4;:19;:21::i;:::-;10839:47:22::1;::::0;-1:-1:-1;;;10839:47:22;;::::1;::::0;::::1;2133:25:46::0;;;10839:18:22::1;::::0;:34:::1;::::0;2106:18:46;;10839:47:22::1;1987:177:46::0;11161:136:22;3251:21:4;:19;:21::i;:::-;11237:55:22::1;::::0;-1:-1:-1;;;11237:55:22;;::::1;::::0;::::1;2133:25:46::0;;;11237:24:22::1;::::0;:42:::1;::::0;2106:18:46;;11237:55:22::1;1987:177:46::0;13545:412:22;3251:21:4;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3666:25:22::1;3674:4;3680:10;3666:7;:25::i;:::-;3665:26;:70;;;;-1:-1:-1::0;3696:39:22::1;2362:4:0;3724:10:22;3696:7;:39::i;:::-;3695:40;3665:70;3661:136;;;3779:10;3752:38;;-1:-1:-1::0;;;3752:38:22::1;;;;;;;;:::i;3661:136::-;13667:8:::2;13679:1;13667:13:::0;13663:41:::2;;13689:15;;-1:-1:-1::0;;;13689:15:22::2;;;;;;;;;;;13663:41;13711:49;13763:44;:42;:44::i;:::-;13832:22;::::0;::::2;::::0;;13860:33;;;;13905:47:::2;::::0;13711:96;;-1:-1:-1;13832:22:22;-1:-1:-1;;;;;;;;;;;13905:47:22;::::2;::::0;13832:22;;13885:8;;13905:47:::2;:::i;10925:202::-:0;11000:30;3251:21:4;:19;:21::i;:::-;11076:45:22::1;::::0;-1:-1:-1;;;11076:45:22;;::::1;::::0;::::1;2133:25:46::0;;;11076:18:22::1;::::0;:32:::1;::::0;2106:18:46;;11076:45:22::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11045:77;;;;;;;;;;:::i;11942:167::-:0;12024:7;3251:21:4;:19;:21::i;:::-;12046:58:22::1;::::0;-1:-1:-1;;;12046:58:22;;::::1;::::0;::::1;2133:25:46::0;;;12046:24:22::1;::::0;:45:::1;::::0;2106:18:46;;12046:58:22::1;1987:177:46::0;13347:164:22;3251:21:4;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3666:25:22::1;3674:4;3680:10;3666:7;:25::i;:::-;3665:26;:70;;;;-1:-1:-1::0;3696:39:22::1;2362:4:0;3724:10:22;3696:7;:39::i;:::-;3695:40;3665:70;3661:136;;;3779:10;3752:38;;-1:-1:-1::0;;;3752:38:22::1;;;;;;;;:::i;3661:136::-;13473:33:::2;13495:10;13473:21;:33::i;11729:179::-:0;11817:7;3251:21:4;:19;:21::i;:::-;11839:64:22::1;::::0;-1:-1:-1;;;11839:64:22;;::::1;::::0;::::1;2133:25:46::0;;;11839:24:22::1;::::0;:51:::1;::::0;2106:18:46;;11839:64:22::1;1987:177:46::0;7552:305:22;7626:16;7650:49;7702:44;:42;:44::i;:::-;7650:96;;7752:53;7775:11;7788:1;:16;;;7752:22;:53::i;:::-;7818:25;;;;:12;;;:25;;;;;;;;;:34;;7811:41;;;;;;;;;;;;;;;;;7818:34;;7811:41;;7818:34;7811:41;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7811:41:22;;;;;;;;;;;;;;;;;;;;;;;7552:305;;;:::o;4207:147::-;4262:7;4284:44;:42;:44::i;:::-;:65;;;4277:72;;4207:147;:::o;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;10289:122:22:-:0;3251:21:4;:19;:21::i;:::-;10361:45:22::1;::::0;-1:-1:-1;;;10361:45:22;;::::1;::::0;::::1;2133:25:46::0;;;10361:18:22::1;::::0;:32:::1;::::0;2106:18:46;;10361:45:22::1;1987:177:46::0;12143:562:22;3251:21:4;:19;:21::i;:::-;2362:4:0::1;3666:25:22;2362:4:0::0;3680:10:22::1;3666:7;:25::i;:::-;3665:26;:70;;;;-1:-1:-1::0;3696:39:22::1;2362:4:0;3724:10:22;3696:7;:39::i;:::-;3695:40;3665:70;3661:136;;;3779:10;3752:38;;-1:-1:-1::0;;;3752:38:22::1;;;;;;;;:::i;3661:136::-;-1:-1:-1::0;;;;;12257:16:22;::::2;12253:42;;12282:13;;-1:-1:-1::0;;;12282:13:22::2;;;;;;;;;;;12253:42;12305:6;12315:1;12305:11:::0;12301:39:::2;;12325:15;;-1:-1:-1::0;;;12325:15:22::2;;;;;;;;;;;12301:39;12347:49;12399:44;:42;:44::i;:::-;12469:6:::0;;:31:::2;::::0;-1:-1:-1;;;12469:31:22;;12347:96;;-1:-1:-1;12449:17:22::2;::::0;-1:-1:-1;;;;;12469:6:22;;::::2;::::0;:16:::2;::::0;:31:::2;::::0;12494:4:::2;::::0;12469:31:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12449:51;;12519:9;12510:6;:18;12506:79;;;12567:9;12578:6;12537:48;;-1:-1:-1::0;;;12537:48:22::2;;;;;;;;;:::i;12506:79::-;12597:6:::0;;:27:::2;::::0;-1:-1:-1;;;12597:27:22;;-1:-1:-1;;;;;12597:6:22;;::::2;::::0;:15:::2;::::0;:27:::2;::::0;12613:2;;12617:6;;12597:27:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12592:57;;12633:16;;-1:-1:-1::0;;;12633:16:22::2;;;;;;;;;;;12592:57;12661:39;::::0;2133:25:46;;;-1:-1:-1;;;;;12661:39:22;::::2;::::0;12677:10:::2;::::0;12661:39:::2;::::0;2121:2:46;2106:18;12661:39:22::2;;;;;;;12247:458;;3282:1:4::1;3293:20:::0;:18;:20::i;4388:137:22:-;4438:7;4460:44;:42;:44::i;:::-;:60;;;4453:67;;4388:137;:::o;4730:131::-;4777:7;4799:44;:42;:44::i;:::-;:57;;;4792:64;;4730:131;:::o;3326:384:4:-;3375:32;3410:28;:26;:28::i;:::-;3526:9;;3375:63;;-1:-1:-1;;;3526:20:4;3522:88;;3569:30;;-1:-1:-1;;;3569:30:4;;;;;;;;;;;3522:88;1847:1;3684:19;;3326:384::o;3716:283::-;3764:32;3799:28;:26;:28::i;:::-;1805:1;3969:23;;-1:-1:-1;3716:283:4:o;2977:152:25:-;3094:25;;2977:152::o;17626:198:22:-;17727:16;;;:49;;;17761:15;17747:11;:29;17727:49;17723:96;;;17785:34;;-1:-1:-1;;;17785:34:22;;;;;2133:25:46;;;2106:18;;17785:34:22;1987:177:46;2787::0;2920:28;;2787:177::o;4148:103::-;4214:30;4225:4;966:10:3;4214::0;:30::i;7270:387::-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:3;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:3;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;15337:405:22;-1:-1:-1;;;;;15412:24:22;;15408:50;;15445:13;;-1:-1:-1;;;15445:13:22;;;;;;;;;;;15408:50;15465:49;15517:44;:42;:44::i;:::-;15596:18;;;;;-1:-1:-1;;;;;15621:50:22;;;-1:-1:-1;;;;;;15621:50:22;;;;;;;15683:54;;15465:96;;-1:-1:-1;15596:18:22;;;;15683:54;;15567:18;;15683:54;15402:340;;15337:405;:::o;15746:418::-;-1:-1:-1;;;;;15822:24:22;;15818:50;;15855:13;;-1:-1:-1;;;15855:13:22;;;;;;;;;;;15818:50;15875:49;15927:44;:42;:44::i;:::-;16006:19;;;;;-1:-1:-1;;;;;16032:60:22;;;-1:-1:-1;;;;;;16032:60:22;;;;;;;16104:55;;15875:96;;-1:-1:-1;16006:19:22;;;;16104:55;;15977:18;;16104:55;15812:352;;15746:418;:::o;8737:170:1:-;8870:21;;8737:170::o;3231:65:0:-;6931:20:1;:18;:20::i;:::-;3231:65:0:o;2540:111:4:-;6931:20:1;:18;:20::i;:::-;2610:34:4::1;:32;:34::i;16547:328:22:-:0;16609:8;16621:1;16609:13;16605:41;;16631:15;;-1:-1:-1;;;16631:15:22;;;;;;;;;;;16605:41;16653:49;16705:44;:42;:44::i;:::-;16774:14;;;;;16794:25;;;;16831:39;;16653:96;;-1:-1:-1;16774:14:22;16831:39;;;;16774:14;;16811:8;;16831:39;:::i;:::-;;;;;;;;16599:276;;16547:328;:::o;16879:376::-;17058:28;17074:11;17058:15;:28::i;:::-;17092:52;17120:23;17092:27;:52::i;:::-;17150:54;17179:24;17150:28;:54::i;:::-;17210:40;17232:17;17210:21;:40::i;17259:363::-;17410:37;2362:4:0;17441:5:22;17410:10;:37::i;:::-;;17453:35;-1:-1:-1;;;;;;;;;;;17479:8:22;17453:10;:35::i;:::-;;17494:67;-1:-1:-1;;;;;;;;;;;17537:23:22;17494:10;:67::i;:::-;;17567:50;-1:-1:-1;;;;;;;;;;;17601:15:22;17567:10;:50::i;:::-;;17259:363;;;;:::o;14988:345::-;-1:-1:-1;;;;;15051:24:22;;15047:50;;15084:13;;-1:-1:-1;;;15084:13:22;;;;;;;;;;;15047:50;15104:49;15156:44;:42;:44::i;:::-;15235:6;;-1:-1:-1;;;;;15248:26:22;;;-1:-1:-1;;;;;;15248:26:22;;;;;;15286:42;;15104:96;;-1:-1:-1;15235:6:22;;;;;15286:42;;15206:18;;15286:42;15041:292;;14988:345;:::o;4599:312:2:-;4679:4;-1:-1:-1;;;;;4688:6:2;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:2;:32;-1:-1:-1;;;;;;;;;;;2035:53:10;-1:-1:-1;;;;;2035:53:10;;1957:138;4749:32:2;-1:-1:-1;;;;;4749:42:2;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:2;;;;;;;;;;;3812:80:22;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;6052:538:2:-;6169:17;-1:-1:-1;;;;;6151:50:2;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:2;;;;;;;;-1:-1:-1;;6151:52:2;;;;;;;;;;;;:::i;:::-;;;6147:437;;6555:17;6513:60;;-1:-1:-1;;;6513:60:2;;;;;;;;:::i;6147:437::-;-1:-1:-1;;;;;;;;;;;6245:40:2;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:2;;;;;2133:25:46;;;2106:18;;6312:34:2;1987:177:46;6241:120:2;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:2;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:2;;;;;;;;;;;16168:375:22;-1:-1:-1;;;;;16237:24:22;;16233:50;;16270:13;;-1:-1:-1;;;16270:13:22;;;;;;;;;;;16233:50;16290:49;16342:44;:42;:44::i;:::-;16421:12;;;;;-1:-1:-1;;;;;16440:38:22;;;-1:-1:-1;;;;;;16440:38:22;;;;;;;16490:48;;16290:96;;-1:-1:-1;16421:12:22;;;;16490:48;;16392:18;;16490:48;16227:316;;16168:375;:::o;2251:183:4:-;2388:30;;2251:183::o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4547:7;4556:4;4514:47;;-1:-1:-1;;;4514:47:0;;;;;;;;;:::i;7084:141:1:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:1;;;;;;;;;;;2657:183:4;6931:20:1;:18;:20::i;2779:335:10:-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:10;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;8487:120:1:-;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:1;;;;;;-1:-1:-1;8487:120:1:o;2186:281:10:-;2263:17;-1:-1:-1;;;;;2263:29:10;;2296:1;2263:34;2259:119;;2349:17;2320:47;;-1:-1:-1;;;2320:47:10;;;;;;;;:::i;2259:119::-;-1:-1:-1;;;;;;;;;;;2387:73:10;;-1:-1:-1;;;;;;2387:73:10;-1:-1:-1;;;;;2387:73:10;;;;;;;;;;2186:281::o;4106:253:15:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:15;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:15:o;6598:122:10:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:10;;;;;;;;;;;4625:582:15;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:15;;;:23;5045:49;5041:119;;;5138:6;5121:24;;-1:-1:-1;;;5121:24:15;;;;;;;;:::i;5041:119::-;-1:-1:-1;5180:10:15;4625:582;-1:-1:-1;;4625:582:15:o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:15;;;;;;;;;;;14:180:46;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:46;;14:180;-1:-1:-1;14:180:46:o;199:286::-;257:6;310:2;298:9;289:7;285:23;281:32;278:52;;;326:1;323;316:12;278:52;352:23;;-1:-1:-1;;;;;;404:32:46;;394:43;;384:71;;451:1;448;441:12;887:658;1058:2;1110:21;;;1180:13;;1083:18;;;1202:22;;;1029:4;;1058:2;1281:15;;;;1255:2;1240:18;;;1029:4;1324:195;1338:6;1335:1;1332:13;1324:195;;;1403:13;;-1:-1:-1;;;;;1399:39:46;1387:52;;1494:15;;;;1459:12;;;;1435:1;1353:9;1324:195;;;-1:-1:-1;1536:3:46;;887:658;-1:-1:-1;;;;;;887:658:46:o;1550:173::-;1618:20;;-1:-1:-1;;;;;1667:31:46;;1657:42;;1647:70;;1713:1;1710;1703:12;1728:254;1796:6;1804;1857:2;1845:9;1836:7;1832:23;1828:32;1825:52;;;1873:1;1870;1863:12;1825:52;1909:9;1896:23;1886:33;;1938:38;1972:2;1961:9;1957:18;1938:38;:::i;:::-;1928:48;;1728:254;;;;;:::o;2169:127::-;2230:10;2225:3;2221:20;2218:1;2211:31;2261:4;2258:1;2251:15;2285:4;2282:1;2275:15;2301:144;2386:1;2379:5;2376:12;2366:46;;2392:18;;:::i;:::-;2421;;2301:144::o;2450:146::-;2537:1;2530:5;2527:12;2517:46;;2543:18;;:::i;2601:119::-;2688:1;2681:5;2678:12;2668:46;;2694:18;;:::i;2725:142::-;2791:43;2828:5;2791:43;:::i;2872:250::-;2957:1;2967:113;2981:6;2978:1;2975:13;2967:113;;;3057:11;;;3051:18;3038:11;;;3031:39;3003:2;2996:10;2967:113;;;-1:-1:-1;;3114:1:46;3096:16;;3089:27;2872:250::o;3127:271::-;3169:3;3207:5;3201:12;3234:6;3229:3;3222:19;3250:76;3319:6;3312:4;3307:3;3303:14;3296:4;3289:5;3285:16;3250:76;:::i;:::-;3380:2;3359:15;-1:-1:-1;;3355:29:46;3346:39;;;;3387:4;3342:50;;3127:271;-1:-1:-1;;3127:271:46:o;3403:3798::-;3596:2;3585:9;3578:21;3641:6;3635:13;3630:2;3619:9;3615:18;3608:41;3559:4;3696:2;3688:6;3684:15;3678:22;3709:63;3768:2;3757:9;3753:18;3739:12;3709:63;:::i;:::-;;3821:2;3813:6;3809:15;3803:22;3834:65;3895:2;3884:9;3880:18;3864:14;3834:65;:::i;:::-;;3948:2;3940:6;3936:15;3930:22;3961:66;4022:3;4011:9;4007:19;3991:14;3961:66;:::i;:::-;;4076:3;4068:6;4064:16;4058:23;4090:68;4153:3;4142:9;4138:19;4122:14;4090:68;:::i;:::-;;4207:3;4199:6;4195:16;4189:23;4221:67;4283:3;4272:9;4268:19;4252:14;4221:67;:::i;:::-;-1:-1:-1;4337:3:46;4325:16;;4319:23;-1:-1:-1;;;;;844:31:46;;4401:3;4386:19;;832:44;-1:-1:-1;4443:3:46;4431:16;;4425:23;4467:3;4486:18;;;4479:30;;;;4534:15;;4528:22;4569:3;4588:18;;;4581:30;;;;4636:15;;4630:22;4671:3;4690:18;;;4683:30;;;;4738:15;;4732:22;4773:3;4792:18;;;4785:30;;;;4840:15;;4834:22;4876:3;4895:19;;;4888:31;;;;4945:16;;4939:23;4982:3;5001:19;;;4994:32;;;;5052:16;;5046:23;5089:3;5108:19;;;5101:32;;;;5159:16;;5153:23;5196:3;5215:19;;;5208:32;;;;5277:16;;5271:23;5314:3;5326:52;5358:19;;;5271:23;560:13;553:21;541:34;;490:91;5326:52;5404:16;;5398:23;5441:3;5460:19;;;5453:32;;;;5511:16;;5505:23;5548:3;5567:19;;;5560:32;;;;5618:16;;5612:23;5655:3;5674:19;;;5667:32;;;;5725:16;;5719:23;5762:3;5781:19;;;5774:32;;;;5832:16;;5826:23;5869:3;5888:19;;;5881:32;;;;5939:16;;5933:23;5976:3;5995:19;;;5988:32;;;;6046:16;;6040:23;6083:3;6102:19;;;6095:32;;;;6153:16;;6147:23;6190:3;6209:19;;;6202:32;;;;6260:16;;6254:23;6297:3;6316:19;;;6309:32;;;;6378:16;;6372:23;6415:6;6441:3;6460:19;;;6453:32;;;6372:23;;-1:-1:-1;6415:6:46;6508:54;6557:3;6542:19;;6372:23;6508:54;:::i;:::-;6494:68;;6611:3;6603:6;6599:16;6593:23;6571:45;;6640:2;6636:7;6663:3;6731;6719:9;6711:6;6707:22;6703:32;6697:3;6686:9;6682:19;6675:61;6759:41;6793:6;6777:14;6759:41;:::i;:::-;6745:55;;6849:3;6841:6;6837:16;6831:23;6809:45;;;6874:3;6942;6930:9;6922:6;6918:22;6914:32;6908:3;6897:9;6893:19;6886:61;6970:41;7004:6;6988:14;6970:41;:::i;:::-;7049:16;;;7043:23;7107:22;;;7103:32;;;7082:19;;;7075:61;6956:55;-1:-1:-1;7043:23:46;-1:-1:-1;7153:42:46;6956:55;7043:23;7153:42;:::i;:::-;7145:50;3403:3798;-1:-1:-1;;;;;;3403:3798:46:o;7573:683::-;7668:6;7676;7684;7737:2;7725:9;7716:7;7712:23;7708:32;7705:52;;;7753:1;7750;7743:12;7705:52;7776:23;;;-1:-1:-1;7850:2:46;7835:18;;7822:32;-1:-1:-1;;;;;7903:14:46;;;7900:34;;;7930:1;7927;7920:12;7900:34;7968:6;7957:9;7953:22;7943:32;;8013:7;8006:4;8002:2;7998:13;7994:27;7984:55;;8035:1;8032;8025:12;7984:55;8075:2;8062:16;8101:2;8093:6;8090:14;8087:34;;;8117:1;8114;8107:12;8087:34;8170:7;8165:2;8155:6;8152:1;8148:14;8144:2;8140:23;8136:32;8133:45;8130:65;;;8191:1;8188;8181:12;8130:65;8222:2;8218;8214:11;8204:21;;8244:6;8234:16;;;;;7573:683;;;;;:::o;8261:632::-;8432:2;8484:21;;;8554:13;;8457:18;;;8576:22;;;8403:4;;8432:2;8655:15;;;;8629:2;8614:18;;;8403:4;8698:169;8712:6;8709:1;8706:13;8698:169;;;8773:13;;8761:26;;8842:15;;;;8807:12;;;;8734:1;8727:9;8698:169;;9157:186;9216:6;9269:2;9257:9;9248:7;9244:23;9240:32;9237:52;;;9285:1;9282;9275:12;9237:52;9308:29;9327:9;9308:29;:::i;9348:442::-;9498:6;9506;9550:9;9541:7;9537:23;9580:3;9576:2;9572:12;9569:32;;;9597:1;9594;9587:12;9569:32;9620:3;9643:2;9639;9635:11;9632:31;;;9659:1;9656;9649:12;9632:31;9682:9;;-1:-1:-1;9726:3:46;-1:-1:-1;;9707:17:46;;9703:27;9700:47;;;9743:1;9740;9733:12;9700:47;9348:442;;9766:18;;;;;-1:-1:-1;;;9348:442:46:o;9795:402::-;9896:6;9949:2;9937:9;9928:7;9924:23;9920:32;9917:52;;;9965:1;9962;9955:12;9917:52;9992:23;;-1:-1:-1;;;;;10027:30:46;;10024:50;;;10070:1;10067;10060:12;10024:50;10093:22;;10149:3;10131:16;;;10127:26;10124:46;;;10166:1;10163;10156:12;10202:127;10263:10;10258:3;10254:20;10251:1;10244:31;10294:4;10291:1;10284:15;10318:4;10315:1;10308:15;10334:995;10411:6;10419;10472:2;10460:9;10451:7;10447:23;10443:32;10440:52;;;10488:1;10485;10478:12;10440:52;10511:29;10530:9;10511:29;:::i;:::-;10501:39;-1:-1:-1;10591:2:46;10576:18;;10563:32;-1:-1:-1;;;;;10644:14:46;;;10641:34;;;10671:1;10668;10661:12;10641:34;10709:6;10698:9;10694:22;10684:32;;10754:7;10747:4;10743:2;10739:13;10735:27;10725:55;;10776:1;10773;10766:12;10725:55;10812:2;10799:16;10834:2;10830;10827:10;10824:36;;;10840:18;;:::i;:::-;10915:2;10909:9;10883:2;10969:13;;-1:-1:-1;;10965:22:46;;;10989:2;10961:31;10957:40;10945:53;;;11013:18;;;11033:22;;;11010:46;11007:72;;;11059:18;;:::i;:::-;11099:10;11095:2;11088:22;11134:2;11126:6;11119:18;11174:7;11169:2;11164;11160;11156:11;11152:20;11149:33;11146:53;;;11195:1;11192;11185:12;11146:53;11251:2;11246;11242;11238:11;11233:2;11225:6;11221:15;11208:46;11296:1;11291:2;11286;11278:6;11274:15;11270:24;11263:35;11317:6;11307:16;;;;;;;10334:995;;;;;:::o;11334:220::-;11483:2;11472:9;11465:21;11446:4;11503:45;11544:2;11533:9;11529:18;11521:6;11503:45;:::i;11559:251::-;11714:2;11699:18;;11726:44;11763:6;11726:44;:::i;:::-;11779:25;;;11559:251;:::o;11815:221::-;11968:2;11953:18;;11980:50;11957:9;12012:6;11980:50;:::i;12041:254::-;12109:6;12117;12170:2;12158:9;12149:7;12145:23;12141:32;12138:52;;;12186:1;12183;12176:12;12138:52;12209:29;12228:9;12209:29;:::i;:::-;12199:39;12285:2;12270:18;;;;12257:32;;-1:-1:-1;;;12041:254:46:o;12777:184::-;12847:6;12900:2;12888:9;12879:7;12875:23;12871:32;12868:52;;;12916:1;12913;12906:12;12868:52;-1:-1:-1;12939:16:46;;12777:184;-1:-1:-1;12777:184:46:o;12966:127::-;13027:10;13022:3;13018:20;13015:1;13008:31;13058:4;13055:1;13048:15;13082:4;13079:1;13072:15;13098:128;13165:9;;;13186:11;;;13183:37;;;13200:18;;:::i;13231:125::-;13296:9;;;13317:10;;;13314:36;;;13330:18;;:::i;13361:273::-;13429:6;13482:2;13470:9;13461:7;13457:23;13453:32;13450:52;;;13498:1;13495;13488:12;13450:52;13530:9;13524:16;13580:4;13573:5;13569:16;13562:5;13559:27;13549:55;;13600:1;13597;13590:12;13639:380;13718:1;13714:12;;;;13761;;;13782:61;;13836:4;13828:6;13824:17;13814:27;;13782:61;13889:2;13881:6;13878:14;13858:18;13855:38;13852:161;;13935:10;13930:3;13926:20;13923:1;13916:31;13970:4;13967:1;13960:15;13998:4;13995:1;13988:15;13852:161;;13639:380;;;:::o;14024:203::-;-1:-1:-1;;;;;14188:32:46;;;;14170:51;;14158:2;14143:18;;14024:203::o;14232:248::-;14406:25;;;14462:2;14447:18;;14440:34;14394:2;14379:18;;14232:248::o;14485:447::-;14585:6;14580:3;14573:19;14555:3;14611:4;14640:2;14635:3;14631:12;14624:19;;14666:5;14689:1;14699:208;14713:6;14710:1;14707:13;14699:208;;;-1:-1:-1;;;;;14778:26:46;14797:6;14778:26;:::i;:::-;14774:52;14762:65;;14847:12;;;;14882:15;;;;14735:1;14728:9;14699:208;;;-1:-1:-1;14923:3:46;;14485:447;-1:-1:-1;;;;;14485:447:46:o;14937:367::-;15162:6;15151:9;15144:25;15205:2;15200;15189:9;15185:18;15178:30;15125:4;15225:73;15294:2;15283:9;15279:18;15271:6;15263;15225:73;:::i;15784:154::-;15863:20;;15912:1;15902:12;;15892:40;;15928:1;15925;15918:12;15943:520;16013:5;16020:6;16080:3;16067:17;16166:2;16162:7;16151:8;16135:14;16131:29;16127:43;16107:18;16103:68;16093:96;;16185:1;16182;16175:12;16093:96;16213:33;;16317:4;16304:18;;;-1:-1:-1;16265:21:46;;-1:-1:-1;;;;;;16334:30:46;;16331:50;;;16377:1;16374;16367:12;16331:50;16431:6;16428:1;16424:14;16408;16404:35;16397:5;16393:47;16390:67;;;16453:1;16450;16443:12;16390:67;15943:520;;;;;:::o;16468:311::-;16556:19;;;16538:3;-1:-1:-1;;;;;16587:31:46;;16584:51;;;16631:1;16628;16621:12;16584:51;16667:6;16664:1;16660:14;16719:8;16712:5;16705:4;16700:3;16696:14;16683:45;16748:18;;;;16768:4;16744:29;;16468:311;-1:-1:-1;;;16468:311:46:o;16784:501::-;16843:5;16850:6;16910:3;16897:17;16996:2;16992:7;16981:8;16965:14;16961:29;16957:43;16937:18;16933:68;16923:96;;17015:1;17012;17005:12;16923:96;17043:33;;17147:4;17134:18;;;-1:-1:-1;17095:21:46;;-1:-1:-1;;;;;;17164:30:46;;17161:50;;;17207:1;17204;17197:12;17161:50;17254:6;17238:14;17234:27;17227:5;17223:39;17220:59;;;17275:1;17272;17265:12;17290:267;17379:6;17374:3;17367:19;17431:6;17424:5;17417:4;17412:3;17408:14;17395:43;-1:-1:-1;17483:1:46;17458:16;;;17476:4;17454:27;;;17447:38;;;;17539:2;17518:15;;;-1:-1:-1;;17514:29:46;17505:39;;;17501:50;;17290:267::o;17562:2722::-;17781:2;17770:9;17763:21;17793:88;17877:2;17866:9;17862:18;17823:37;17853:6;17823:37;:::i;:::-;17793:88;:::i;:::-;17744:4;17910:46;17952:2;17944:6;17940:15;17910:46;:::i;:::-;17965:63;18024:2;18013:9;18009:18;17995:12;17965:63;:::i;:::-;;18059:46;18101:2;18093:6;18089:15;18059:46;:::i;:::-;18114:65;18175:2;18164:9;18160:18;18144:14;18114:65;:::i;:::-;;18241:2;18233:6;18229:15;18216:29;18210:3;18199:9;18195:19;18188:58;18308:3;18300:6;18296:16;18283:30;18277:3;18266:9;18262:19;18255:59;18376:3;18368:6;18364:16;18351:30;18345:3;18334:9;18330:19;18323:59;18444:3;18436:6;18432:16;18419:30;18413:3;18402:9;18398:19;18391:59;18469:3;18533;18525:6;18521:16;18508:30;18503:2;18492:9;18488:18;18481:58;18584:67;18647:2;18639:6;18635:15;18627:6;18584:67;:::i;:::-;18548:103;;18670:6;18695:3;18734:2;18729;18718:9;18714:18;18707:30;18760:88;18843:3;18832:9;18828:19;18814:12;18798:14;18760:88;:::i;:::-;18746:102;;18895:67;18958:2;18950:6;18946:15;18938:6;18895:67;:::i;:::-;18857:105;;;;18985:2;18981:7;19007:3;19074:2;19062:9;19054:6;19050:22;19046:31;19041:2;19030:9;19026:18;19019:59;19101:77;19171:6;19155:14;19139;19101:77;:::i;:::-;19087:91;;19225:56;19277:2;19269:6;19265:15;19257:6;19225:56;:::i;:::-;19187:94;;;;;19300:3;19367:2;19355:9;19347:6;19343:22;19339:31;19334:2;19323:9;19319:18;19312:59;19394:66;19453:6;19437:14;19421;19394:66;:::i;:::-;19380:80;;19507:56;19559:2;19551:6;19547:15;19539:6;19507:56;:::i;:::-;19469:94;;;;;19582:3;19649:2;19637:9;19629:6;19625:22;19621:31;19616:2;19605:9;19601:18;19594:59;19676:66;19735:6;19719:14;19703;19676:66;:::i;:::-;19662:80;;19789:56;19841:2;19833:6;19829:15;19821:6;19789:56;:::i;:::-;19751:94;;;;;19864:3;19931:2;19919:9;19911:6;19907:22;19903:31;19898:2;19887:9;19883:18;19876:59;19958:66;20017:6;20001:14;19985;19958:66;:::i;:::-;19944:80;;20071:56;20123:2;20115:6;20111:15;20103:6;20071:56;:::i;:::-;20033:94;;;;;20191:2;20179:9;20171:6;20167:22;20163:31;20158:2;20147:9;20143:18;20136:59;;20212:66;20271:6;20255:14;20239;20212:66;:::i;:::-;20204:74;17562:2722;-1:-1:-1;;;;;;;17562:2722:46:o;20289:274::-;-1:-1:-1;;;;;20481:32:46;;;;20463:51;;20545:2;20530:18;;20523:34;20451:2;20436:18;;20289:274::o;20568:277::-;20635:6;20688:2;20676:9;20667:7;20663:23;20659:32;20656:52;;;20704:1;20701;20694:12;20656:52;20736:9;20730:16;20789:5;20782:13;20775:21;20768:5;20765:32;20755:60;;20811:1;20808;20801:12;21318:287;21447:3;21485:6;21479:13;21501:66;21560:6;21555:3;21548:4;21540:6;21536:17;21501:66;:::i;:::-;21583:16;;;;;21318:287;-1:-1:-1;;21318:287:46:o"},"methodIdentifiers":{"CONTRACTS_ADDRESS_MANAGER_ROLE()":"952f2133","DEFAULT_ADMIN_ROLE()":"a217fddf","SETTINGS_MANAGER_ROLE()":"fa7626d0","UPGRADER_ROLE()":"f72c0d8b","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addInvites(uint256,address[])":"262ad80b","cancelChallenge(uint256)":"a41483e3","challengeCount()":"a2f05725","claimChallengePayout(uint256)":"87d6e213","claimChallengeRefund(uint256)":"b58bd356","claimCreatorSplitWinRefund(uint256)":"cb3e0d2b","claimSplitWinPrize(uint256)":"a0427700","completeChallenge(uint256)":"a7817bbc","createChallenge((uint8,uint8,uint8,uint256,uint256,uint256,uint256,uint256,bytes32[],address[],string,string,string,string))":"4caf6d5f","declineChallenge(uint256)":"0012462a","getChallenge(uint256)":"1bdd4b74","getChallengeDeclined(uint256)":"cf33e76c","getChallengeInvited(uint256)":"5de5720f","getChallengeParticipants(uint256)":"023bf958","getChallengeSelectedApps(uint256)":"2b5adc1e","getChallengeStatus(uint256)":"832c8bc6","getChallengeWinners(uint256)":"039ddca9","getParticipantActions(uint256,address)":"14cf9077","getParticipantStatus(uint256,address)":"81363aeb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize((address,address,address,address,uint256,uint256,uint256,uint256),(address,address,address,address))":"3cc376bb","isInvitationEligible(uint256,address)":"4a6ff70b","isSplitWinWinner(uint256,address)":"87d30164","joinChallenge(uint256)":"e448ee26","leaveChallenge(uint256)":"67fc8c89","maxChallengeDuration()":"d2177bdd","maxParticipants()":"24924bf7","maxSelectedApps()":"f7806522","minBetAmount()":"fa968eea","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setB3TRAddress(address)":"47b0b33e","setMaxChallengeDuration(uint256)":"a934718c","setMaxParticipants(uint256)":"2bf7299b","setMaxSelectedApps(uint256)":"21c688fa","setMinBetAmount(uint256)":"6c188593","setVeBetterPassportAddress(address)":"3800ff4d","setX2EarnAppsAddress(address)":"c048f6c9","setXAllocationVotingAddress(address)":"3bb18a76","supportsInterface(bytes4)":"01ffc9a7","syncChallenge(uint256)":"b30f0584","upgradeToAndCall(address,bytes)":"4f1ef286","version()":"54fd4d50","withdraw(address,uint256)":"f3fef3a3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"}],\"name\":\"AlreadyInvited\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"AlreadyParticipating\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AlreadyRefunded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"}],\"name\":\"BetAmountBelowMinimum\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeAlreadyCompleted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentRound\",\"type\":\"uint256\"}],\"name\":\"ChallengeEnded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"enum ChallengeTypes.ChallengeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ChallengeInvalidStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentRound\",\"type\":\"uint256\"}],\"name\":\"ChallengeNotEnded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"ChallengeUnknownApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ChallengesUnauthorizedUser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"CreatorCannotJoin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"CreatorCannotLeave\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"DescriptionTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"ImageURITooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minPrizePerWinner\",\"type\":\"uint256\"}],\"name\":\"InsufficientPrizePerWinner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientWithdrawableFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidChallengeTypeForCombo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"}],\"name\":\"InvalidEndRound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentRound\",\"type\":\"uint256\"}],\"name\":\"InvalidStartRound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTypeConfiguration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MaxChallengeDurationExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MaxParticipantsExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MaxSelectedAppsExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MetadataURITooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"NotASplitWinChallenge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"actions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"name\":\"NotEligibleForSplitWin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"NotInvited\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"NotParticipating\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotVerifiedPerson\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NothingToClaim\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NothingToRefund\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"SplitWinCannotComplete\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"SplitWinSlotsExhausted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"ThresholdTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"TitleTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"AdminWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"B3TRAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.SettlementMode\",\"name\":\"settlementMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bestScore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bestCount\",\"type\":\"uint256\"}],\"name\":\"ChallengeCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.ChallengeKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.ChallengeVisibility\",\"name\":\"visibility\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.ChallengeType\",\"name\":\"challengeType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"allApps\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"selectedApps\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"imageURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"ChallengeCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"ChallengeDeclined\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeInvalidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"}],\"name\":\"ChallengeInviteAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"ChallengeJoined\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"ChallengeLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ChallengePayoutClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ChallengeRefundClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MaxChallengeDurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MaxParticipantsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MaxSelectedAppsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MinBetAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prizePerWinner\",\"type\":\"uint256\"}],\"name\":\"SplitWinConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SplitWinCreatorRefunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prize\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actions\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"winnersClaimed\",\"type\":\"uint256\"}],\"name\":\"SplitWinPrizeClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"VeBetterPassportAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"X2EarnAppsAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"XAllocationVotingAddressUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CONTRACTS_ADDRESS_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SETTINGS_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"invitees\",\"type\":\"address[]\"}],\"name\":\"addInvites\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"cancelChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"claimChallengePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"claimChallengeRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"claimCreatorSplitWinRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"claimSplitWinPrize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"completeChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ChallengeTypes.ChallengeKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeVisibility\",\"name\":\"visibility\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeType\",\"name\":\"challengeType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"appIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"invitees\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"imageURI\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"internalType\":\"struct ChallengeTypes.CreateChallengeParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"createChallenge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"declineChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallenge\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"enum ChallengeTypes.ChallengeKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeVisibility\",\"name\":\"visibility\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeType\",\"name\":\"challengeType\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.SettlementMode\",\"name\":\"settlementMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"winnersClaimed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prizePerWinner\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allApps\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"totalPrize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participantCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"invitedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"declinedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selectedAppsCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"winnersCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bestScore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bestCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"payoutsClaimed\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"imageURI\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"internalType\":\"struct ChallengeTypes.ChallengeView\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeDeclined\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeInvited\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeParticipants\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeSelectedApps\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeStatus\",\"outputs\":[{\"internalType\":\"enum ChallengeTypes.ChallengeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeWinners\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"getParticipantActions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getParticipantStatus\",\"outputs\":[{\"internalType\":\"enum ChallengeTypes.ParticipantStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"b3trAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"veBetterPassportAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"xAllocationVotingAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"x2EarnAppsAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxChallengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSelectedApps\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxParticipants\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBetAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ChallengeTypes.InitializationData\",\"name\":\"data\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractsAddressManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settingsManager\",\"type\":\"address\"}],\"internalType\":\"struct ChallengeTypes.InitializationRoleData\",\"name\":\"roles\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isInvitationEligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSplitWinWinner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"joinChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"leaveChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxChallengeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxParticipants\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSelectedApps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBetAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setB3TRAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setMaxChallengeDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setMaxParticipants\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setMaxSelectedApps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setMinBetAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setVeBetterPassportAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setX2EarnAppsAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setXAllocationVotingAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"syncChallenge\",\"outputs\":[{\"internalType\":\"enum ChallengeTypes.ChallengeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract owns storage, roles, and external access control while delegating challenge lifecycle and settlement logic to dedicated libraries. NatSpec for the external API is inherited from `IChallenges`.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"NotVerifiedPerson(address,string)\":[{\"params\":{\"account\":\"Address that failed the personhood check.\",\"reason\":\"Reason returned by VeBetterPassport (e.g. \\\"User is blacklisted\\\").\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"AdminWithdrawal(address,address,uint256)\":{\"params\":{\"admin\":\"Address that performed the withdrawal.\",\"amount\":\"Amount withdrawn.\",\"recipient\":\"Address that received the withdrawn tokens.\"}},\"B3TRAddressUpdated(address,address)\":{\"params\":{\"newAddress\":\"New B3TR token address.\",\"oldAddress\":\"Previous B3TR token address.\"}},\"ChallengeActivated(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"ChallengeCancelled(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"ChallengeCompleted(uint256,uint8,uint256,uint256)\":{\"details\":\"For Split Win the `bestScore` and `bestCount` fields are 0 and `settlementMode` is `SplitWinCompleted`.\",\"params\":{\"bestCount\":\"Number of participants tied for `bestScore` (Max Actions only).\",\"bestScore\":\"Highest participant action score recorded (Max Actions only).\",\"challengeId\":\"Challenge identifier.\",\"settlementMode\":\"Settlement mode selected for payout or refund.\"}},\"ChallengeCreated(uint256,address,uint256,uint8,uint8,uint8,uint256,uint256,uint256,bool,bytes32[],string,string,string,string)\":{\"details\":\"Split Win-specific configuration (numWinners, prizePerWinner) is emitted right after via `SplitWinConfigured` to keep this event signature within Solidity stack limits.\",\"params\":{\"allApps\":\"True when actions from all apps count, false when only `selectedApps` count.\",\"challengeId\":\"Newly created challenge identifier.\",\"challengeType\":\"Challenge mechanic (Max Actions or Split Win).\",\"creator\":\"Address that created the challenge.\",\"description\":\"Human-readable challenge description.\",\"endRound\":\"Last round whose actions count toward the challenge.\",\"imageURI\":\"Optional image URI.\",\"kind\":\"Challenge funding model.\",\"metadataURI\":\"Optional metadata URI.\",\"selectedApps\":\"Explicit app allowlist when `allApps` is false.\",\"stakeAmount\":\"Amount locked at creation and required from each joining participant in stake challenges.\",\"startRound\":\"First round whose actions count toward the challenge.\",\"threshold\":\"Minimum action threshold required to claim a Split Win slot (0 for Max Actions).\",\"title\":\"Human-readable challenge title.\",\"visibility\":\"Challenge participation mode.\"}},\"ChallengeDeclined(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"participant\":\"Address that declined.\"}},\"ChallengeInvalidated(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"ChallengeInviteAdded(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"invitee\":\"Address that was invited.\"}},\"ChallengeJoined(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"participant\":\"Address that joined.\"}},\"ChallengeLeft(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"participant\":\"Address that left.\"}},\"ChallengePayoutClaimed(uint256,address,uint256)\":{\"params\":{\"account\":\"Recipient of the payout.\",\"amount\":\"Amount transferred.\",\"challengeId\":\"Challenge identifier.\"}},\"ChallengeRefundClaimed(uint256,address,uint256)\":{\"params\":{\"account\":\"Recipient of the refund.\",\"amount\":\"Amount transferred.\",\"challengeId\":\"Challenge identifier.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxChallengeDurationUpdated(uint256,uint256)\":{\"params\":{\"newValue\":\"New maximum duration, in rounds.\",\"oldValue\":\"Previous maximum duration, in rounds.\"}},\"MaxParticipantsUpdated(uint256,uint256)\":{\"params\":{\"newValue\":\"New maximum participant count.\",\"oldValue\":\"Previous maximum participant count.\"}},\"MaxSelectedAppsUpdated(uint256,uint256)\":{\"params\":{\"newValue\":\"New maximum app count.\",\"oldValue\":\"Previous maximum app count.\"}},\"MinBetAmountUpdated(uint256,uint256)\":{\"params\":{\"newValue\":\"New minimum B3TR amount.\",\"oldValue\":\"Previous minimum B3TR amount.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SplitWinConfigured(uint256,uint256,uint256)\":{\"params\":{\"challengeId\":\"Newly created challenge identifier.\",\"numWinners\":\"Number of Split Win slots (creator-defined).\",\"prizePerWinner\":\"Locked-at-creation per-slot prize (`stakeAmount / numWinners`).\"}},\"SplitWinCreatorRefunded(uint256,address,uint256)\":{\"params\":{\"amount\":\"Amount transferred (unclaimed slots * prizePerWinner + integer-division remainder).\",\"challengeId\":\"Challenge identifier.\",\"creator\":\"Challenge creator.\"}},\"SplitWinPrizeClaimed(uint256,address,uint256,uint256,uint256)\":{\"params\":{\"actions\":\"Action count recorded at claim time.\",\"challengeId\":\"Challenge identifier.\",\"prize\":\"Locked per-winner prize transferred.\",\"winner\":\"Address that secured the slot.\",\"winnersClaimed\":\"Cumulative number of slots claimed including this one.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"},\"VeBetterPassportAddressUpdated(address,address)\":{\"params\":{\"newAddress\":\"New VeBetterPassport address.\",\"oldAddress\":\"Previous VeBetterPassport address.\"}},\"X2EarnAppsAddressUpdated(address,address)\":{\"params\":{\"newAddress\":\"New X2EarnApps registry address.\",\"oldAddress\":\"Previous X2EarnApps registry address.\"}},\"XAllocationVotingAddressUpdated(address,address)\":{\"params\":{\"newAddress\":\"New XAllocationVoting governor address.\",\"oldAddress\":\"Previous XAllocationVoting governor address.\"}}},\"kind\":\"dev\",\"methods\":{\"addInvites(uint256,address[])\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"invitees\":\"Accounts to invite.\"}},\"cancelChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"challengeCount()\":{\"returns\":{\"_0\":\"Number of created challenges.\"}},\"claimChallengePayout(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Amount transferred to the caller.\"}},\"claimChallengeRefund(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Amount transferred to the caller.\"}},\"claimCreatorSplitWinRefund(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Amount transferred to the creator.\"}},\"claimSplitWinPrize(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Amount transferred to the caller.\"}},\"completeChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createChallenge((uint8,uint8,uint8,uint256,uint256,uint256,uint256,uint256,bytes32[],address[],string,string,string,string))\":{\"details\":\"If `params.startRound` is zero, the next round is used.\",\"params\":{\"params\":\"Challenge creation payload.\"},\"returns\":{\"_0\":\"Newly created challenge identifier.\"}},\"declineChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"getChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Challenge data plus derived lifecycle and participation fields.\"}},\"getChallengeDeclined(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Declined addresses.\"}},\"getChallengeInvited(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Invited addresses.\"}},\"getChallengeParticipants(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Participant addresses.\"}},\"getChallengeSelectedApps(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Explicit app ids used by the challenge.\"}},\"getChallengeStatus(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Current status for the challenge.\"}},\"getChallengeWinners(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Winner addresses in claim order; empty for Max Actions challenges.\"}},\"getParticipantActions(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"participant\":\"Participant address to query.\"},\"returns\":{\"_0\":\"Total counted actions.\"}},\"getParticipantStatus(uint256,address)\":{\"params\":{\"account\":\"Account to query.\",\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Participant status for the account.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize((address,address,address,address,uint256,uint256,uint256,uint256),(address,address,address,address))\":{\"params\":{\"data\":\"Initial contract addresses and challenge limits.\",\"roles\":\"Role assignments for the proxy instance.\"}},\"isInvitationEligible(uint256,address)\":{\"params\":{\"account\":\"Account to query.\",\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"True if the account is marked as invitation-eligible.\"}},\"isSplitWinWinner(uint256,address)\":{\"params\":{\"account\":\"Account to query.\",\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"True if the account is in the winners list.\"}},\"joinChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"leaveChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"maxChallengeDuration()\":{\"returns\":{\"_0\":\"Maximum challenge duration, in rounds.\"}},\"maxParticipants()\":{\"returns\":{\"_0\":\"Maximum participant count.\"}},\"maxSelectedApps()\":{\"returns\":{\"_0\":\"Maximum selected app count.\"}},\"minBetAmount()\":{\"returns\":{\"_0\":\"Minimum stake or sponsored prize amount.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setB3TRAddress(address)\":{\"params\":{\"newAddress\":\"New B3TR token address.\"}},\"setMaxChallengeDuration(uint256)\":{\"params\":{\"newValue\":\"New maximum duration, in rounds.\"}},\"setMaxParticipants(uint256)\":{\"params\":{\"newValue\":\"New maximum participant count.\"}},\"setMaxSelectedApps(uint256)\":{\"params\":{\"newValue\":\"New maximum selected app count.\"}},\"setMinBetAmount(uint256)\":{\"params\":{\"newValue\":\"New minimum B3TR amount.\"}},\"setVeBetterPassportAddress(address)\":{\"params\":{\"newAddress\":\"New VeBetterPassport address.\"}},\"setX2EarnAppsAddress(address)\":{\"params\":{\"newAddress\":\"New X2EarnApps registry address.\"}},\"setXAllocationVotingAddress(address)\":{\"params\":{\"newAddress\":\"New XAllocationVoting governor address.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"syncChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Status after syncing.\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"version()\":{\"returns\":{\"_0\":\"Current implementation version string.\"}},\"withdraw(address,uint256)\":{\"details\":\"Emergency admin function that can drain any B3TR currently held by the contract.\",\"params\":{\"amount\":\"Amount of B3TR to withdraw.\",\"to\":\"Recipient of the withdrawn B3TR.\"}}},\"title\":\"B3TRChallenges\",\"version\":1},\"userdoc\":{\"errors\":{\"NotVerifiedPerson(address,string)\":[{\"notice\":\"Thrown when an account fails the VeBetterPassport personhood check on a participation or claim path.\"}]},\"events\":{\"AdminWithdrawal(address,address,uint256)\":{\"notice\":\"Emitted when an admin withdraws B3TR from the contract.\"},\"B3TRAddressUpdated(address,address)\":{\"notice\":\"Emitted when the B3TR token address used by challenges is updated.\"},\"ChallengeActivated(uint256)\":{\"notice\":\"Emitted when a pending challenge becomes active.\"},\"ChallengeCancelled(uint256)\":{\"notice\":\"Emitted when the creator cancels a pending challenge.\"},\"ChallengeCompleted(uint256,uint8,uint256,uint256)\":{\"notice\":\"Emitted when a challenge transitions to Completed status.\"},\"ChallengeCreated(uint256,address,uint256,uint8,uint8,uint8,uint256,uint256,uint256,bool,bytes32[],string,string,string,string)\":{\"notice\":\"Emitted when a challenge is created and funded.\"},\"ChallengeDeclined(uint256,address)\":{\"notice\":\"Emitted when an invitee declines a challenge.\"},\"ChallengeInvalidated(uint256)\":{\"notice\":\"Emitted when a pending challenge becomes invalid at start time.\"},\"ChallengeInviteAdded(uint256,address)\":{\"notice\":\"Emitted when an invitee is added to a challenge.\"},\"ChallengeJoined(uint256,address)\":{\"notice\":\"Emitted when a participant joins a challenge.\"},\"ChallengeLeft(uint256,address)\":{\"notice\":\"Emitted when a participant leaves a challenge before it starts.\"},\"ChallengePayoutClaimed(uint256,address,uint256)\":{\"notice\":\"Emitted when a payout is claimed from a completed Max Actions challenge.\"},\"ChallengeRefundClaimed(uint256,address,uint256)\":{\"notice\":\"Emitted when a refund is claimed from a cancelled or invalid challenge.\"},\"MaxChallengeDurationUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the maximum challenge duration is updated.\"},\"MaxParticipantsUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the maximum number of participants per Max Actions challenge is updated.\"},\"MaxSelectedAppsUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the maximum number of explicit apps per challenge is updated.\"},\"MinBetAmountUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the minimum stake or sponsored prize amount is updated.\"},\"SplitWinConfigured(uint256,uint256,uint256)\":{\"notice\":\"Emitted immediately after `ChallengeCreated` for Split Win challenges only.\"},\"SplitWinCreatorRefunded(uint256,address,uint256)\":{\"notice\":\"Emitted when the creator reclaims unclaimed Split Win slots after the end round.\"},\"SplitWinPrizeClaimed(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a participant claims a Split Win slot.\"},\"VeBetterPassportAddressUpdated(address,address)\":{\"notice\":\"Emitted when the VeBetterPassport address used for action accounting is updated.\"},\"X2EarnAppsAddressUpdated(address,address)\":{\"notice\":\"Emitted when the X2EarnApps registry address is updated.\"},\"XAllocationVotingAddressUpdated(address,address)\":{\"notice\":\"Emitted when the XAllocationVoting governor address is updated.\"}},\"kind\":\"user\",\"methods\":{\"addInvites(uint256,address[])\":{\"notice\":\"Adds new invitees to a pending challenge.\"},\"cancelChallenge(uint256)\":{\"notice\":\"Cancels a pending challenge.\"},\"challengeCount()\":{\"notice\":\"Returns the total number of created challenges.\"},\"claimChallengePayout(uint256)\":{\"notice\":\"Claims the caller's payout from a completed Max Actions challenge.\"},\"claimChallengeRefund(uint256)\":{\"notice\":\"Claims the caller's refund from a cancelled or invalid challenge.\"},\"claimCreatorSplitWinRefund(uint256)\":{\"notice\":\"Reclaims unclaimed Split Win slots after the end round (creator only).\"},\"claimSplitWinPrize(uint256)\":{\"notice\":\"Claims a Split Win slot during the active window.\"},\"completeChallenge(uint256)\":{\"notice\":\"Completes a Max Actions challenge after its end round has passed.\"},\"createChallenge((uint8,uint8,uint8,uint256,uint256,uint256,uint256,uint256,bytes32[],address[],string,string,string,string))\":{\"notice\":\"Creates and funds a new challenge.\"},\"declineChallenge(uint256)\":{\"notice\":\"Declines a challenge invitation.\"},\"getChallenge(uint256)\":{\"notice\":\"Returns a full challenge view with derived counters and status.\"},\"getChallengeDeclined(uint256)\":{\"notice\":\"Returns the accounts that declined a challenge invitation.\"},\"getChallengeInvited(uint256)\":{\"notice\":\"Returns the accounts currently marked as invited for a challenge.\"},\"getChallengeParticipants(uint256)\":{\"notice\":\"Returns the current participants of a challenge.\"},\"getChallengeSelectedApps(uint256)\":{\"notice\":\"Returns the explicit app allowlist for a challenge.\"},\"getChallengeStatus(uint256)\":{\"notice\":\"Returns the current challenge status.\"},\"getChallengeWinners(uint256)\":{\"notice\":\"Returns the ordered list of Split Win winners (claim order).\"},\"getParticipantActions(uint256,address)\":{\"notice\":\"Returns the total counted actions for a participant across the challenge scope.\"},\"getParticipantStatus(uint256,address)\":{\"notice\":\"Returns the current participant status for an account.\"},\"initialize((address,address,address,address,uint256,uint256,uint256,uint256),(address,address,address,address))\":{\"notice\":\"Initializes the challenge contract.\"},\"isInvitationEligible(uint256,address)\":{\"notice\":\"Returns whether an account is eligible to join or be re-invited to a challenge.\"},\"isSplitWinWinner(uint256,address)\":{\"notice\":\"Returns whether an account has already claimed a Split Win slot.\"},\"joinChallenge(uint256)\":{\"notice\":\"Joins a pending challenge.\"},\"leaveChallenge(uint256)\":{\"notice\":\"Leaves a pending challenge before it starts.\"},\"maxChallengeDuration()\":{\"notice\":\"Returns the maximum duration allowed for a challenge.\"},\"maxParticipants()\":{\"notice\":\"Returns the maximum number of participants allowed in a Max Actions challenge.\"},\"maxSelectedApps()\":{\"notice\":\"Returns the maximum number of explicit apps allowed in a challenge.\"},\"minBetAmount()\":{\"notice\":\"Returns the minimum B3TR amount allowed for challenge funding.\"},\"setB3TRAddress(address)\":{\"notice\":\"Updates the B3TR token address.\"},\"setMaxChallengeDuration(uint256)\":{\"notice\":\"Updates the maximum duration allowed for new challenges.\"},\"setMaxParticipants(uint256)\":{\"notice\":\"Updates the maximum number of participants allowed for new Max Actions challenges.\"},\"setMaxSelectedApps(uint256)\":{\"notice\":\"Updates the maximum number of explicit apps allowed for new challenges.\"},\"setMinBetAmount(uint256)\":{\"notice\":\"Updates the minimum B3TR amount allowed for challenge funding.\"},\"setVeBetterPassportAddress(address)\":{\"notice\":\"Updates the VeBetterPassport address.\"},\"setX2EarnAppsAddress(address)\":{\"notice\":\"Updates the X2EarnApps registry address.\"},\"setXAllocationVotingAddress(address)\":{\"notice\":\"Updates the XAllocationVoting governor address.\"},\"syncChallenge(uint256)\":{\"notice\":\"Resolves the latest status for a pending challenge.\"},\"version()\":{\"notice\":\"Returns the current implementation version.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraws B3TR from the contract.\"}},\"notice\":\"Upgradeable entrypoint for creating, joining, settling, and administering B3TR challenges.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/B3TRChallenges.sol\":\"B3TRChallenges\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/B3TRChallenges.sol\":{\"keccak256\":\"0x038e07127ce45e4d6984d6a1a318d7ba034f014ddeee99536a0bafc1226c84dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8645f732949ea6badc820cea0fb06c8e958a7f96f435c6224ff98768f165d759\",\"dweb:/ipfs/QmU5E1S3tWTrSPZcEhapSoeTqV5k14uMsCHntP3pJ6nt7z\"]},\"contracts/challenges/libraries/ChallengeCoreLogic.sol\":{\"keccak256\":\"0xa8b36faba4fad9cb0608d35c25b2cff0cb523e3a74774f32b8b188ab3b09cfad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c51347b202390262e45321f847f9d76290768f1d1509acb13bdaecef13ebda3e\",\"dweb:/ipfs/QmYGfSd4ZmTuyKPJmBCbQZS144WPgefFJX2FovR8Adudb3\"]},\"contracts/challenges/libraries/ChallengeSettlementLogic.sol\":{\"keccak256\":\"0xe77c85f2e223e54c61a378ce551fda366ba32cd0e166e780be87cdf754327bb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01ac906c5798167b10d0e2aeb7260a9d57a8b25d3192cf51a358b4a136f31708\",\"dweb:/ipfs/QmNpn2usZZuMLVpNBSX7wq9wTqjgn7yCttZDbZs6WhVWzW\"]},\"contracts/challenges/libraries/ChallengeStorageTypes.sol\":{\"keccak256\":\"0x1a3adb8916b01bb810f7f3a038defba464839c0fa62c33b66dccedbbfc354f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e5c7eb48cf0b47d9e50e5fae367dd0e55870eed76cea3b0772c5893091875b7\",\"dweb:/ipfs/QmVhXYingpgmkWEumVzwaRBRGUpudBEyHheHmTUsrH1kXg\"]},\"contracts/challenges/libraries/ChallengeTypes.sol\":{\"keccak256\":\"0xe06bbeff932f2d2dfa150a44e4115fabf11eb8bb98b5564c4eb1d8976216f795\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ff27c89e0fb1d73ea0ac59e507d0445c4d56f8d2be7a015289498da55f8a556\",\"dweb:/ipfs/QmaJppVA1LfAQ5gXQ2C8o51MjAnRMQx47vRSCPpe4SvkWK\"]},\"contracts/interfaces/IB3TR.sol\":{\"keccak256\":\"0x84072a0b3340a0972192bd7d9491f00b2676aff7a6c58461b836147a39e31bd2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca091823fbc799175caa96e5fbaf5f449acd78c728e92950845fa347c33d9ea5\",\"dweb:/ipfs/QmYLDKyKjssZPcWjtgRR3Fbmo3JKdWQaKpFj5GUxPWvvc4\"]},\"contracts/interfaces/IChallenges.sol\":{\"keccak256\":\"0xfe61f023db7a7caf543a27d480458e8f08ad8d9852f8e398b63640cd4bbf278a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37b02c8754732a8e16be7d8fcb322bd82ca388815b0d2dce35b380fcbb6b0fe9\",\"dweb:/ipfs/QmbzRdqpLhK13R4SaqxrHCetUzrZCTfSqBvJ9rteSYVRPm\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]},\"contracts/interfaces/IVeBetterPassport.sol\":{\"keccak256\":\"0x1094bcf1a7f61ad26e5d49a6efd7302419a1d2475fa0723f62f24757c7a1655c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a25e330da50daf45f56fe4c496da2ea6695fb4de491c112980deb385f0f3ac\",\"dweb:/ipfs/QmaPE4T6UR91WxnGkqGp85d6YB9UGQceGGtSTCres1Y2Ut\"]},\"contracts/interfaces/IX2EarnApps.sol\":{\"keccak256\":\"0xf476e628b4037c16d44c833c9f0f4db9a3abc48f60ad4654574bce31ca9c759c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8c183bbd394bb708a637dca7626f6beb7a78e5111674e3ccea6f98140580172\",\"dweb:/ipfs/Qmar8Za1an3ZGP6B5wcCZSmY6g6MKzPcGeVYetRhiPFm7e\"]},\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]},\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]},\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]},\"contracts/ve-better-passport/libraries/PassportTypes.sol\":{\"keccak256\":\"0x0250b067d550cd85bd77278c705bd8d28db1bce6829e084cbe65b74353483ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://176022bfb06a2c03efe880a13a97cea66e25e9b31fe164936b5845a57a299be8\",\"dweb:/ipfs/QmS2kQnhxdjkrnNGfFyBdtThpmvyT2B7tF1owW2vF2hmbz\"]},\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":{\"keccak256\":\"0x1830b8438f0b6b516cc22ebbfcc7cff9db478c9a2a44fedf5926e63bd77d5aa7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aad5b08dbb03f727b8b74b10d1d00e796ece111f3aa23ef48ad27f54dd3f7b58\",\"dweb:/ipfs/QmfZZoP44EZ3Ts81BgvRuG9AXuTAxCqCbFqHoKEspFsPSa\"]},\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":{\"keccak256\":\"0x8a44d64c1e998dad0d21b928c499b7b624623cb26a30df541c493641191f6091\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751749980251dd9cda3e77654fafa229dab8a9bc74992dee9e8b3adee9595b72\",\"dweb:/ipfs/QmSHViJSMCbr25KBPap8VB38SjrLojRTnC3JUDCvf3rRBB\"]}},\"version\":1}"}},"contracts/challenges/libraries/ChallengeCoreLogic.sol":{"ChallengeCoreLogic":{"abi":[{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"invitee","type":"address"}],"name":"AlreadyInvited","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"AlreadyParticipating","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"name":"BetAmountBelowMinimum","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeDoesNotExist","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeNotPending","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"ChallengeUnknownApp","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"ChallengesUnauthorizedUser","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"CreatorCannotJoin","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"CreatorCannotLeave","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"DescriptionTooLong","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"DuplicateApp","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"ImageURITooLong","type":"error"},{"inputs":[{"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"internalType":"uint256","name":"numWinners","type":"uint256"},{"internalType":"uint256","name":"minPrizePerWinner","type":"uint256"}],"name":"InsufficientPrizePerWinner","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidChallengeTypeForCombo","type":"error"},{"inputs":[{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"}],"name":"InvalidEndRound","type":"error"},{"inputs":[{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"currentRound","type":"uint256"}],"name":"InvalidStartRound","type":"error"},{"inputs":[],"name":"InvalidTypeConfiguration","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MaxChallengeDurationExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MaxParticipantsExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MaxSelectedAppsExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MetadataURITooLong","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"NotInvited","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"NotParticipating","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"name":"NotVerifiedPerson","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"ThresholdTooHigh","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"TitleTooLong","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":true,"internalType":"uint256","name":"endRound","type":"uint256"},{"indexed":false,"internalType":"enum ChallengeTypes.ChallengeKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"enum ChallengeTypes.ChallengeVisibility","name":"visibility","type":"uint8"},{"indexed":false,"internalType":"enum ChallengeTypes.ChallengeType","name":"challengeType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startRound","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"},{"indexed":false,"internalType":"bool","name":"allApps","type":"bool"},{"indexed":false,"internalType":"bytes32[]","name":"selectedApps","type":"bytes32[]"},{"indexed":false,"internalType":"string","name":"title","type":"string"},{"indexed":false,"internalType":"string","name":"description","type":"string"},{"indexed":false,"internalType":"string","name":"imageURI","type":"string"},{"indexed":false,"internalType":"string","name":"metadataURI","type":"string"}],"name":"ChallengeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"ChallengeDeclined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeInvalidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"invitee","type":"address"}],"name":"ChallengeInviteAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"ChallengeJoined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"ChallengeLeft","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"numWinners","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prizePerWinner","type":"uint256"}],"name":"SplitWinConfigured","type":"event"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getComputedStatus","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"612a5e61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100815760003560e01c806212462a14610086578063262ad80b146100a857806367fc8c89146100c85780639ed14864146100e8578063a41483e314610112578063b30f058414610132578063e0e65a5414610152578063e448ee2614610180575b600080fd5b81801561009257600080fd5b506100a66100a13660046120ce565b6101a0565b005b8180156100b457600080fd5b506100a66100c33660046121fa565b61039f565b8180156100d457600080fd5b506100a66100e33660046120ce565b610430565b6100fb6100f63660046120ce565b61063d565b60405160ff90911681526020015b60405180910390f35b81801561011e57600080fd5b506100a661012d3660046120ce565b6106e3565b81801561013e57600080fd5b506100fb61014d3660046120ce565b61076d565b81801561015e57600080fd5b5061017261016d366004612327565b6108bf565b604051908152602001610109565b81801561018c57600080fd5b506100a661019b3660046120ce565b610d60565b60006101aa611005565b905060006101b783611029565b90506101c3838261107a565b8054600160301b90046001600160a01b031633036101ff57336040516309edd0f760e11b81526004016101f691906124bb565b60405180910390fd5b6000838152600a83016020908152604080832033845290915290205460ff1661023f57823360405163028a786960e31b81526004016101f69291906124cf565b60036000848152600984016020908152604080832033845290915290205460ff166003811115610271576102716124e6565b0361034f5761028083336110fa565b6000815460ff166001811115610298576102986124e6565b0361034f5780600101548160070160008282546102b59190612512565b90915550508154600182015460405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916102ef91339190600401612525565b6020604051808303816000875af115801561030e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610332919061254e565b61034f576040516312171d8360e31b815260040160405180910390fd5b6103598333611291565b6103638333611412565b61036d8333611593565b604051339084907f622307417dca07086bf34ab5f56032aa32328c417e8fd3020ae0394eb918083790600090a3505050565b60006103aa83611029565b90506103b6838261107a565b8054600160301b90046001600160a01b031633146103e957336040516309edd0f760e11b81526004016101f691906124bb565b60005b825181101561042a576104188484838151811061040b5761040b612569565b602002602001015161168c565b806104228161257f565b9150506103ec565b50505050565b600061043a611005565b9050600061044783611029565b9050610453838261107a565b8054600160301b90046001600160a01b0316330361048757604051630fc3589b60e11b8152600481018490526024016101f6565b60036000848152600984016020908152604080832033845290915290205460ff1660038111156104b9576104b96124e6565b146104db57823360405163c100013360e01b81526004016101f69291906124cf565b6104e583336110fa565b6000815460ff1660018111156104fd576104fd6124e6565b036105b457806001015481600701600082825461051a9190612512565b90915550508154600182015460405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161055491339190600401612525565b6020604051808303816000875af1158015610573573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610597919061254e565b6105b4576040516312171d8360e31b815260040160405180910390fd5b6000838152600a83016020908152604080832033845290915290205460ff16156105e7576105e28333611840565b61060b565b600083815260098301602090815260408083203384529091529020805460ff191690555b604051339084907fa1132418813654d1519f5c54cbeaa3aef5c41c01f9fad4cf6bd730eca8f4357590600090a3505050565b600080610648611005565b9050600061065584611029565b9050600081546301000000900460ff166004811115610676576106766124e6565b146106a05780546301000000900460ff166004811115610698576106986124e6565b949350505050565b80600201546106ae8361192c565b10156106bb576000610698565b6106c4816119a2565b6106cf5760046106d2565b60015b6004811115610698576106986124e6565b60006106ee82611029565b90506106fa828261107a565b8054600160301b90046001600160a01b0316331461072d57336040516309edd0f760e11b81526004016101f691906124bb565b805463ff0000001916630300000017815560405182907f8f468517950218b9c61ac630652209be7aeda4de4f6eda5e0d4b106d784fa4e990600090a25050565b60008061077983611029565b9050600081546301000000900460ff16600481111561079a5761079a6124e6565b146107c35780546301000000900460ff1660048111156107bc576107bc6124e6565b9392505050565b60006107ce8461063d565b60ff1660048111156107e2576107e26124e6565b905060008160048111156107f8576107f86124e6565b0361080f57806004811115610698576106986124e6565b81548190839063ff00000019166301000000836004811115610833576108336124e6565b0217905550600181600481111561084c5761084c6124e6565b036108815760405184907f15aacf6098564d68b408a7200e71ed0dcdc4b4538f11437b0fe1f3976afef91490600090a26108ad565b60405184907fd483b2246f0bbcfae793b6618f6da27d09bc5d458d1ed0ca1c0003c4b696cd1b90600090a25b806004811115610698576106986124e6565b6000806108ca611005565b905060006108d78261192c565b905083606001516000036108fe5760405163162908e360e11b815260040160405180910390fd5b81601001548460600151101561093357836060015182601001546040516327ab623f60e01b81526004016101f6929190612598565b6000846080015160001461094b578460800151610956565b6109568260016125a6565b905081811161097c57808260405163b986b59960e01b81526004016101f6929190612598565b808560a0015110156109a85760a0850151604051634d7d392360e01b81526101f6918391600401612598565b6000818660a001516109ba9190612512565b6109c59060016125a6565b905083600401548111156109f457808460040154604051637f00747f60e11b81526004016101f6929190612598565b610100860151511580610a48578460050154876101000151511115610a3a57866101000151518560050154604051634a92394160e11b81526004016101f6929190612598565b610a488761010001516119e1565b610a5187611b64565b610a5a87611d52565b8460060160008154610a6b9061257f565b918290555060008181526008870160205260409020885181549298509091829060ff191660018381811115610aa257610aa26124e6565b021790555060208801518154829061ff001916610100836001811115610aca57610aca6124e6565b021790555060408801518154829062ff0000191662010000836001811115610af457610af46124e6565b021790555080546060890151600183018190556002830186905560a08a0151600384015560c08a0151600484015560e08a015160058401556301000000600160d01b031990911633600160301b0260ff60281b191617600160281b8415150217825560078201556101408801516010820190610b709082612641565b506101608801516011820190610b869082612641565b506101808801516012820190610b9c9082612641565b506101a08801516013820190610bb29082612641565b50600188604001516001811115610bcb57610bcb6124e6565b03610bea578760e001518860600151610be49190612700565b60068201555b60005b88610100015151811015610c475781600f018961010001518281518110610c1657610c16612569565b6020908102919091018101518254600181018455600093845291909220015580610c3f8161257f565b915050610bed565b50855460608901516040516323b872dd60e01b81526001600160a01b03909216916323b872dd91610c7e9133913091600401612722565b6020604051808303816000875af1158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc1919061254e565b610cde576040516312171d8360e31b815260040160405180910390fd5b600088516001811115610cf357610cf36124e6565b03610d0c57610d028633611e17565b610d0c8733611eb9565b610d168782611f92565b60005b88610120015151811015610d5457610d42888a6101200151838151811061040b5761040b612569565b80610d4c8161257f565b915050610d19565b50505050505050919050565b6000610d6a611005565b90506000610d7783611029565b9050610d83838261107a565b8054600160301b90046001600160a01b03163303610db75760405163f6f0bad160e01b8152600481018490526024016101f6565b60018154610100900460ff166001811115610dd457610dd46124e6565b148015610dfd57506000838152600a83016020908152604080832033845290915290205460ff16155b15610e1f57823360405163028a786960e31b81526004016101f69291906124cf565b60036000848152600984016020908152604080832033845290915290205460ff166003811115610e5157610e516124e6565b03610e735782336040516373d4594360e01b81526004016101f69291906124cf565b610e7d8233611e17565b6000815462010000900460ff166001811115610e9b57610e9b6124e6565b148015610eb057506007820154600b82015410155b15610ee557600b810154610ec59060016125a6565b8260070154604051631dd2498560e31b81526004016101f6929190612598565b6000815460ff166001811115610efd57610efd6124e6565b03610fb5578060010154816007016000828254610f1a91906125a6565b9091555050815460018201546040516323b872dd60e01b81526001600160a01b03909216916323b872dd91610f559133913091600401612722565b6020604051808303816000875af1158015610f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f98919061254e565b610fb5576040516312171d8360e31b815260040160405180910390fd5b610fbf8333611291565b610fc98333611412565b610fd38333611eb9565b604051339084907f690ecbabe96222b39728b512682860cc6460002a670ff94954038286bea0ba6990600090a3505050565b7f4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d10090565b600080611034611005565b90508215806110465750806006015483115b1561106757604051635bafafd160e01b8152600481018490526024016101f6565b6000928352600801602052506040902090565b600081546301000000900460ff166004811115611099576110996124e6565b146110ba57604051637d288d4560e01b8152600481018390526024016101f6565b60006110c4611005565b905081600201546110d48261192c565b106110f557604051637d288d4560e01b8152600481018490526024016101f6565b505050565b6000611104611005565b60008481526008820160209081526040808320600b850183528184206001600160a01b0388168552909252822054929350919081900361115b57848460405163c100013360e01b81526004016101f69291906124cf565b6000611168600183612512565b600b84015490915060009061117f90600190612512565b905080821461122d57600084600b01828154811061119f5761119f612569565b600091825260209091200154600b860180546001600160a01b0390921692508291859081106111d0576111d0612569565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556112048360016125a6565b6000898152600b8801602090815260408083206001600160a01b03909516835293905291909120555b83600b0180548061124057611240612746565b60008281526020808220830160001990810180546001600160a01b0319169055909201909255978152600b9095018752505060408084206001600160a01b0395909516845293909452509081205550565b600061129b611005565b60008481526008820160209081526040808320600c850183528184206001600160a01b038816855290925282205492935091908190036112dc575050505050565b60006112e9600183612512565b600c84015490915060009061130090600190612512565b90508082146113ae57600084600c01828154811061132057611320612569565b600091825260209091200154600c860180546001600160a01b03909216925082918590811061135157611351612569565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556113858360016125a6565b6000898152600c8801602090815260408083206001600160a01b03909516835293905291909120555b83600c018054806113c1576113c1612746565b60008281526020808220830160001990810180546001600160a01b0319169055909201909255978152600c9095018752505060408084206001600160a01b0395909516845293909452509081205550565b600061141c611005565b60008481526008820160209081526040808320600d850183528184206001600160a01b0388168552909252822054929350919081900361145d575050505050565b600061146a600183612512565b600d84015490915060009061148190600190612512565b905080821461152f57600084600d0182815481106114a1576114a1612569565b600091825260209091200154600d860180546001600160a01b0390921692508291859081106114d2576114d2612569565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556115068360016125a6565b6000898152600d8801602090815260408083206001600160a01b03909516835293905291909120555b83600d0180548061154257611542612746565b60008281526020808220830160001990810180546001600160a01b0319169055909201909255978152600d9095018752505060408084206001600160a01b0395909516845293909452509081205550565b600061159d611005565b60008481526008820160209081526040808320600d850183528184206001600160a01b038816855290925290912054919250901561161257600084815260098301602090815260408083206001600160a01b0387168452909152902080546002919060ff19166001835b021790555050505050565b600d8181018054600180820183556000838152602080822090930180546001600160a01b0319166001600160a01b038a1690811790915593548982529487018352604080822085835284528082209590955588815260098701835284812093815292909152919020805460029260ff199091169083611607565b6000611696611005565b90506001600160a01b0382166116bf5760405163d92e233d60e01b815260040160405180910390fd5b6000838152600882016020526040902080546001600160a01b03600160301b9091048116908416036116f15750505050565b6003600085815260098401602090815260408083206001600160a01b038816845290915290205460ff16600381111561172c5761172c6124e6565b036117375750505050565b6001600085815260098401602090815260408083206001600160a01b038816845290915290205460ff166003811115611772576117726124e6565b03611794578383604051633525212360e21b81526004016101f69291906124cf565b6000848152600a8301602090815260408083206001600160a01b038716845290915290205460ff166117f0576000848152600a8301602090815260408083206001600160a01b03871684529091529020805460ff191660011790555b6117fa8484611412565b6118048484611840565b6040516001600160a01b0384169085907f9a32db57826ebc3e7487a5b33bf9b4eeec26e87e54fbaa4d09df62f3fb62731490600090a350505050565b600061184a611005565b60008481526008820160209081526040808320600c850183528184206001600160a01b03881685529092529091205491925090156118b757600084815260098301602090815260408083206001600160a01b0387168452909152902080546001919060ff19168280611607565b600c8181018054600180820183556000838152602080822090930180546001600160a01b0319166001600160a01b038a1690811790915593548982529487018352604080822085835284528082209590955588815260098701835284812093815292909152919020805460ff19168280611607565b600281015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa158015611978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199c919061275c565b92915050565b60008080835460ff1660018111156119bc576119bc6124e6565b146119c85760016119cb565b60025b600b9093015460ff939093169092101592915050565b60006119eb611005565b905060005b82518110156110f557600382015483516001600160a01b039091169063607bfb2490859084908110611a2457611a24612569565b60200260200101516040518263ffffffff1660e01b8152600401611a4a91815260200190565b602060405180830381865afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b919061254e565b611ac557828181518110611aa157611aa1612569565b6020026020010151604051636e770b7b60e01b81526004016101f691815260200190565b60005b81811015611b5157838281518110611ae257611ae2612569565b6020026020010151848281518110611afc57611afc612569565b602002602001015103611b3f57838281518110611b1b57611b1b612569565b602002602001015160405163de0927c960e01b81526004016101f691815260200190565b80611b498161257f565b915050611ac8565b5080611b5c8161257f565b9150506119f0565b600081516001811115611b7957611b796124e6565b03611bdc57600181602001516001811115611b9657611b966124e6565b141580611bb95750600081604001516001811115611bb657611bb66124e6565b14155b15611bd7576040516335f4a26b60e01b815260040160405180910390fd5b611c35565b600081602001516001811115611bf457611bf46124e6565b148015611c175750600181604001516001811115611c1457611c146124e6565b14155b15611c35576040516335f4a26b60e01b815260040160405180910390fd5b600081604001516001811115611c4d57611c4d6124e6565b03611c885760c0810151151580611c67575060e081015115155b15611c8557604051636a88293d60e01b815260040160405180910390fd5b50565b60c08101511580611c9b575060e0810151155b15611cb957604051636a88293d60e01b815260040160405180910390fd5b620f42408160c001511115611cec578060c00151620f42406040516313c3d1b160e01b81526004016101f6929190612598565b6000670de0b6b3a76400008260e00151611d069190612775565b90508082606001511015611d4e57606082015160e083015160405163f45cb75360e01b815260048101929092526024820152670de0b6b3a764000060448201526064016101f6565b5050565b610140810151516078811115611d805780607860405163107b8cab60e31b81526004016101f6929190612598565b610160820151516101f4811115611db057806101f46040516371a24cf360e01b81526004016101f6929190612598565b61018083015151610200811115611de05780610200604051636754ccbf60e01b81526004016101f6929190612598565b6101a084015151610200811115611e105780610200604051634af3fa9360e11b81526004016101f6929190612598565b5050505050565b60018201546040516307b9c93d60e11b815260009182916001600160a01b0390911690630f73927a90611e4e9086906004016124bb565b600060405180830381865afa158015611e6b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e9391908101906127b0565b915091508161042a57828160405163411f12c760e01b81526004016101f692919061283a565b6000611ec3611005565b60008481526008820160209081526040808320600b850183528184206001600160a01b0388168552909252909120549192509015611f185783836040516373d4594360e01b81526004016101f69291906124cf565b600b8181018054600180820183556000838152602080822090930180546001600160a01b0319166001600160a01b038a1690811790915593548982529487018352604080822085835284528082209590955588815260098701835284812093815292909152919020805460039260ff199091169083611607565b80600301548160000160069054906101000a90046001600160a01b03166001600160a01b0316837ffacaa812f3ddb00d0d30b86be7240dff1cd3372e8f77a7b421d35125891e30608460000160009054906101000a900460ff168560000160019054906101000a900460ff168660000160029054906101000a900460ff168760010154886002015489600401548a60000160059054906101000a900460ff168b600f018c6010018d6011018e6012018f60130160405161205d9c9b9a99989796959493929190612964565b60405180910390a46001815462010000900460ff166001811115612083576120836124e6565b03611d4e57817f632e7af18aa775a9a28c2f3530920c3dc0924efe616499de9943f6dc93c699a5826005015483600601546040516120c2929190612598565b60405180910390a25050565b6000602082840312156120e057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516101c081016001600160401b0381118282101715612120576121206120e7565b60405290565b604051601f8201601f191681016001600160401b038111828210171561214e5761214e6120e7565b604052919050565b60006001600160401b0382111561216f5761216f6120e7565b5060051b60200190565b600082601f83011261218a57600080fd5b8135602061219f61219a83612156565b612126565b82815260059290921b840181019181810190868411156121be57600080fd5b8286015b848110156121ef5780356001600160a01b03811681146121e25760008081fd5b83529183019183016121c2565b509695505050505050565b6000806040838503121561220d57600080fd5b8235915060208301356001600160401b0381111561222a57600080fd5b61223685828601612179565b9150509250929050565b80356002811061224f57600080fd5b919050565b600082601f83011261226557600080fd5b8135602061227561219a83612156565b82815260059290921b8401810191818101908684111561229457600080fd5b8286015b848110156121ef5780358352918301918301612298565b60006001600160401b038211156122c8576122c86120e7565b50601f01601f191660200190565b600082601f8301126122e757600080fd5b81356122f561219a826122af565b81815284602083860101111561230a57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561233957600080fd5b81356001600160401b038082111561235057600080fd5b908301906101c0828603121561236557600080fd5b61236d6120fd565b61237683612240565b815261238460208401612240565b602082015261239560408401612240565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e082015261010080840135838111156123e057600080fd5b6123ec88828701612254565b828401525050610120808401358381111561240657600080fd5b61241288828701612179565b828401525050610140808401358381111561242c57600080fd5b612438888287016122d6565b828401525050610160808401358381111561245257600080fd5b61245e888287016122d6565b828401525050610180808401358381111561247857600080fd5b612484888287016122d6565b8284015250506101a0808401358381111561249e57600080fd5b6124aa888287016122d6565b918301919091525095945050505050565b6001600160a01b0391909116815260200190565b9182526001600160a01b0316602082015260400190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561199c5761199c6124fc565b6001600160a01b03929092168252602082015260400190565b8051801515811461224f57600080fd5b60006020828403121561256057600080fd5b6107bc8261253e565b634e487b7160e01b600052603260045260246000fd5b600060018201612591576125916124fc565b5060010190565b918252602082015260400190565b8082018082111561199c5761199c6124fc565b600181811c908216806125cd57607f821691505b6020821081036125ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156110f557600081815260208120601f850160051c8101602086101561261a5750805b601f850160051c820191505b8181101561263957828155600101612626565b505050505050565b81516001600160401b0381111561265a5761265a6120e7565b61266e8161266884546125b9565b846125f3565b602080601f8311600181146126a3576000841561268b5750858301515b600019600386901b1c1916600185901b178555612639565b600085815260208120601f198616915b828110156126d2578886015182559484019460019091019084016126b3565b50858210156126f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008261271d57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561276e57600080fd5b5051919050565b808202811582820484141761199c5761199c6124fc565b60005b838110156127a757818101518382015260200161278f565b50506000910152565b600080604083850312156127c357600080fd5b6127cc8361253e565b60208401519092506001600160401b038111156127e857600080fd5b8301601f810185136127f957600080fd5b805161280761219a826122af565b81815286602083850101111561281c57600080fd5b61282d82602083016020860161278c565b8093505050509250929050565b60018060a01b0383168152604060208201526000825180604084015261286781606085016020870161278c565b601f01601f1916919091016060019392505050565b60028110611c8557634e487b7160e01b600052602160045260246000fd5b6128a38161287c565b9052565b6000815480845260208085019450836000528060002060005b838110156128dc578154875295820195600191820191016128c0565b509495945050505050565b600081546128f4816125b9565b808552602060018381168015612911576001811461292b57612959565b60ff1985168884015283151560051b880183019550612959565b866000528260002060005b858110156129515781548a8201860152908301908401612936565b890184019650505b505050505092915050565b60006101806129728f61287c565b8e8352612982602084018f61289a565b61298f604084018e61289a565b8b60608401528a60808401528960a08401526129af60c084018a15159052565b8060e08401526129c1818401896128a7565b90508281036101008401526129d681886128e7565b90508281036101208401526129eb81876128e7565b9050828103610140840152612a0081866128e7565b9050828103610160840152612a1581856128e7565b9f9e50505050505050505050505050505056fea26469706673582212204e82d2c8e93d94c82ab1585b94b8064ade93d7d8483f6348089670081ceb46d264736f6c63430008140033","opcodes":"PUSH2 0x2A5E PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x81 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x12462A EQ PUSH2 0x86 JUMPI DUP1 PUSH4 0x262AD80B EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x67FC8C89 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x9ED14864 EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0xA41483E3 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xB30F0584 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xE0E65A54 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0xE448EE26 EQ PUSH2 0x180 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0xA1 CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x1A0 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x21FA JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0xE3 CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x63D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x6E3 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFB PUSH2 0x14D CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x76D JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x15E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH2 0x16D CALLDATASIZE PUSH1 0x4 PUSH2 0x2327 JUMP JUMPDEST PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x109 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0xD60 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AA PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B7 DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C3 DUP4 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1FF JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x23F JUMPI DUP3 CALLER PUSH1 0x40 MLOAD PUSH4 0x28A7869 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x271 JUMPI PUSH2 0x271 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x34F JUMPI PUSH2 0x280 DUP4 CALLER PUSH2 0x10FA JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x34F JUMPI DUP1 PUSH1 0x1 ADD SLOAD DUP2 PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2B5 SWAP2 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x2EF SWAP2 CALLER SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2525 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x332 SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0x34F JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x359 DUP4 CALLER PUSH2 0x1291 JUMP JUMPDEST PUSH2 0x363 DUP4 CALLER PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x36D DUP4 CALLER PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP5 SWAP1 PUSH32 0x622307417DCA07086BF34AB5F56032AA32328C417E8FD3020AE0394EB9180837 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AA DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0x3B6 DUP4 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3E9 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x42A JUMPI PUSH2 0x418 DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x40B JUMPI PUSH2 0x40B PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x168C JUMP JUMPDEST DUP1 PUSH2 0x422 DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3EC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43A PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x447 DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0x453 DUP4 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x487 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFC3589B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B9 JUMPI PUSH2 0x4B9 PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x4DB JUMPI DUP3 CALLER PUSH1 0x40 MLOAD PUSH4 0xC1000133 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH2 0x4E5 DUP4 CALLER PUSH2 0x10FA JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4FD JUMPI PUSH2 0x4FD PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x5B4 JUMPI DUP1 PUSH1 0x1 ADD SLOAD DUP2 PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x51A SWAP2 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x554 SWAP2 CALLER SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2525 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5E7 JUMPI PUSH2 0x5E2 DUP4 CALLER PUSH2 0x1840 JUMP JUMPDEST PUSH2 0x60B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP5 SWAP1 PUSH32 0xA1132418813654D1519F5C54CBEAA3AEF5C41C01F9FAD4CF6BD730ECA8F43575 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x648 PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x655 DUP5 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x676 JUMPI PUSH2 0x676 PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x6A0 JUMPI DUP1 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x698 JUMPI PUSH2 0x698 PUSH2 0x24E6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 ADD SLOAD PUSH2 0x6AE DUP4 PUSH2 0x192C JUMP JUMPDEST LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 PUSH2 0x698 JUMP JUMPDEST PUSH2 0x6C4 DUP2 PUSH2 0x19A2 JUMP JUMPDEST PUSH2 0x6CF JUMPI PUSH1 0x4 PUSH2 0x6D2 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x698 JUMPI PUSH2 0x698 PUSH2 0x24E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6EE DUP3 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0x6FA DUP3 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x72D JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST DUP1 SLOAD PUSH4 0xFF000000 NOT AND PUSH4 0x3000000 OR DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH32 0x8F468517950218B9C61AC630652209BE7AEDA4DE4F6EDA5E0D4B106D784FA4E9 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x779 DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x79A JUMPI PUSH2 0x79A PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x7C3 JUMPI DUP1 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x7BC JUMPI PUSH2 0x7BC PUSH2 0x24E6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CE DUP5 PUSH2 0x63D JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x7E2 JUMPI PUSH2 0x7E2 PUSH2 0x24E6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x7F8 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x80F JUMPI DUP1 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x698 JUMPI PUSH2 0x698 PUSH2 0x24E6 JUMP JUMPDEST DUP2 SLOAD DUP2 SWAP1 DUP4 SWAP1 PUSH4 0xFF000000 NOT AND PUSH4 0x1000000 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x833 JUMPI PUSH2 0x833 PUSH2 0x24E6 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x84C JUMPI PUSH2 0x84C PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x881 JUMPI PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH32 0x15AACF6098564D68B408A7200E71ED0DCDC4B4538F11437B0FE1F3976AFEF914 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH32 0xD483B2246F0BBCFAE793B6618F6DA27D09BC5D458D1ED0CA1C0003C4B696CD1B SWAP1 PUSH1 0x0 SWAP1 LOG2 JUMPDEST DUP1 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x698 JUMPI PUSH2 0x698 PUSH2 0x24E6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8CA PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x8D7 DUP3 PUSH2 0x192C JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x0 SUB PUSH2 0x8FE JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x10 ADD SLOAD DUP5 PUSH1 0x60 ADD MLOAD LT ISZERO PUSH2 0x933 JUMPI DUP4 PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x27AB623F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x80 ADD MLOAD PUSH1 0x0 EQ PUSH2 0x94B JUMPI DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x956 JUMP JUMPDEST PUSH2 0x956 DUP3 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 GT PUSH2 0x97C JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xB986B599 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST DUP1 DUP6 PUSH1 0xA0 ADD MLOAD LT ISZERO PUSH2 0x9A8 JUMPI PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x4D7D3923 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1F6 SWAP2 DUP4 SWAP2 PUSH1 0x4 ADD PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP7 PUSH1 0xA0 ADD MLOAD PUSH2 0x9BA SWAP2 SWAP1 PUSH2 0x2512 JUMP JUMPDEST PUSH2 0x9C5 SWAP1 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x4 ADD SLOAD DUP2 GT ISZERO PUSH2 0x9F4 JUMPI DUP1 DUP5 PUSH1 0x4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F00747F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0x100 DUP7 ADD MLOAD MLOAD ISZERO DUP1 PUSH2 0xA48 JUMPI DUP5 PUSH1 0x5 ADD SLOAD DUP8 PUSH2 0x100 ADD MLOAD MLOAD GT ISZERO PUSH2 0xA3A JUMPI DUP7 PUSH2 0x100 ADD MLOAD MLOAD DUP6 PUSH1 0x5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x4A923941 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0xA48 DUP8 PUSH2 0x100 ADD MLOAD PUSH2 0x19E1 JUMP JUMPDEST PUSH2 0xA51 DUP8 PUSH2 0x1B64 JUMP JUMPDEST PUSH2 0xA5A DUP8 PUSH2 0x1D52 JUMP JUMPDEST DUP5 PUSH1 0x6 ADD PUSH1 0x0 DUP2 SLOAD PUSH2 0xA6B SWAP1 PUSH2 0x257F JUMP JUMPDEST SWAP2 DUP3 SWAP1 SSTORE POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 DUP8 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP9 MLOAD DUP2 SLOAD SWAP3 SWAP9 POP SWAP1 SWAP2 DUP3 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH2 0xAA2 JUMPI PUSH2 0xAA2 PUSH2 0x24E6 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP9 ADD MLOAD DUP2 SLOAD DUP3 SWAP1 PUSH2 0xFF00 NOT AND PUSH2 0x100 DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xACA JUMPI PUSH2 0xACA PUSH2 0x24E6 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP9 ADD MLOAD DUP2 SLOAD DUP3 SWAP1 PUSH3 0xFF0000 NOT AND PUSH3 0x10000 DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xAF4 JUMPI PUSH2 0xAF4 PUSH2 0x24E6 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 SLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x1 DUP4 ADD DUP2 SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP7 SWAP1 SSTORE PUSH1 0xA0 DUP11 ADD MLOAD PUSH1 0x3 DUP5 ADD SSTORE PUSH1 0xC0 DUP11 ADD MLOAD PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0xE0 DUP11 ADD MLOAD PUSH1 0x5 DUP5 ADD SSTORE PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT SWAP1 SWAP2 AND CALLER PUSH1 0x1 PUSH1 0x30 SHL MUL PUSH1 0xFF PUSH1 0x28 SHL NOT AND OR PUSH1 0x1 PUSH1 0x28 SHL DUP5 ISZERO ISZERO MUL OR DUP3 SSTORE PUSH1 0x7 DUP3 ADD SSTORE PUSH2 0x140 DUP9 ADD MLOAD PUSH1 0x10 DUP3 ADD SWAP1 PUSH2 0xB70 SWAP1 DUP3 PUSH2 0x2641 JUMP JUMPDEST POP PUSH2 0x160 DUP9 ADD MLOAD PUSH1 0x11 DUP3 ADD SWAP1 PUSH2 0xB86 SWAP1 DUP3 PUSH2 0x2641 JUMP JUMPDEST POP PUSH2 0x180 DUP9 ADD MLOAD PUSH1 0x12 DUP3 ADD SWAP1 PUSH2 0xB9C SWAP1 DUP3 PUSH2 0x2641 JUMP JUMPDEST POP PUSH2 0x1A0 DUP9 ADD MLOAD PUSH1 0x13 DUP3 ADD SWAP1 PUSH2 0xBB2 SWAP1 DUP3 PUSH2 0x2641 JUMP JUMPDEST POP PUSH1 0x1 DUP9 PUSH1 0x40 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xBCB JUMPI PUSH2 0xBCB PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0xBEA JUMPI DUP8 PUSH1 0xE0 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0xBE4 SWAP2 SWAP1 PUSH2 0x2700 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SSTORE JUMPDEST PUSH1 0x0 JUMPDEST DUP9 PUSH2 0x100 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0xC47 JUMPI DUP2 PUSH1 0xF ADD DUP10 PUSH2 0x100 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC16 JUMPI PUSH2 0xC16 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 SLOAD PUSH1 0x1 DUP2 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 ADD SSTORE DUP1 PUSH2 0xC3F DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xBED JUMP JUMPDEST POP DUP6 SLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH2 0xC7E SWAP2 CALLER SWAP2 ADDRESS SWAP2 PUSH1 0x4 ADD PUSH2 0x2722 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC9D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCC1 SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0xCDE JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP9 MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCF3 JUMPI PUSH2 0xCF3 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0xD0C JUMPI PUSH2 0xD02 DUP7 CALLER PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0xD0C DUP8 CALLER PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0xD16 DUP8 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP9 PUSH2 0x120 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0xD54 JUMPI PUSH2 0xD42 DUP9 DUP11 PUSH2 0x120 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x40B JUMPI PUSH2 0x40B PUSH2 0x2569 JUMP JUMPDEST DUP1 PUSH2 0xD4C DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD19 JUMP JUMPDEST POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD6A PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xD77 DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0xD83 DUP4 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0xDB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF6F0BAD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xDD4 JUMPI PUSH2 0xDD4 PUSH2 0x24E6 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0xDFD JUMPI POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xE1F JUMPI DUP3 CALLER PUSH1 0x40 MLOAD PUSH4 0x28A7869 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0xE73 JUMPI DUP3 CALLER PUSH1 0x40 MLOAD PUSH4 0x73D45943 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH2 0xE7D DUP3 CALLER PUSH2 0x1E17 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xE9B JUMPI PUSH2 0xE9B PUSH2 0x24E6 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0xEB0 JUMPI POP PUSH1 0x7 DUP3 ADD SLOAD PUSH1 0xB DUP3 ADD SLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0xEE5 JUMPI PUSH1 0xB DUP2 ADD SLOAD PUSH2 0xEC5 SWAP1 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST DUP3 PUSH1 0x7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x1DD24985 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xEFD JUMPI PUSH2 0xEFD PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0xFB5 JUMPI DUP1 PUSH1 0x1 ADD SLOAD DUP2 PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF1A SWAP2 SWAP1 PUSH2 0x25A6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH2 0xF55 SWAP2 CALLER SWAP2 ADDRESS SWAP2 PUSH1 0x4 ADD PUSH2 0x2722 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF98 SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0xFB5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFBF DUP4 CALLER PUSH2 0x1291 JUMP JUMPDEST PUSH2 0xFC9 DUP4 CALLER PUSH2 0x1412 JUMP JUMPDEST PUSH2 0xFD3 DUP4 CALLER PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP5 SWAP1 PUSH32 0x690ECBABE96222B39728B512682860CC6460002A670FF94954038286BEA0BA69 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH32 0x4602C7A79EAC2C186A5049FA18AA513E24B689A1ED3277F24B1E5B426612D100 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1034 PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP DUP3 ISZERO DUP1 PUSH2 0x1046 JUMPI POP DUP1 PUSH1 0x6 ADD SLOAD DUP4 GT JUMPDEST ISZERO PUSH2 0x1067 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5BAFAFD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x8 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1099 JUMPI PUSH2 0x1099 PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x7D288D45 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C4 PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x10D4 DUP3 PUSH2 0x192C JUMP JUMPDEST LT PUSH2 0x10F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7D288D45 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1104 PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xB DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x115B JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH4 0xC1000133 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1168 PUSH1 0x1 DUP4 PUSH2 0x2512 JUMP JUMPDEST PUSH1 0xB DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x117F SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x122D JUMPI PUSH1 0x0 DUP5 PUSH1 0xB ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x119F JUMPI PUSH2 0x119F PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xB DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x11D0 JUMPI PUSH2 0x11D0 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1204 DUP4 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xB DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SSTORE JUMPDEST DUP4 PUSH1 0xB ADD DUP1 SLOAD DUP1 PUSH2 0x1240 JUMPI PUSH2 0x1240 PUSH2 0x2746 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE SWAP8 DUP2 MSTORE PUSH1 0xB SWAP1 SWAP6 ADD DUP8 MSTORE POP POP PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP5 MSTORE SWAP4 SWAP1 SWAP5 MSTORE POP SWAP1 DUP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x129B PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xC DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x12DC JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E9 PUSH1 0x1 DUP4 PUSH2 0x2512 JUMP JUMPDEST PUSH1 0xC DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1300 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x13AE JUMPI PUSH1 0x0 DUP5 PUSH1 0xC ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1320 JUMPI PUSH2 0x1320 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xC DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x1351 JUMPI PUSH2 0x1351 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1385 DUP4 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xC DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SSTORE JUMPDEST DUP4 PUSH1 0xC ADD DUP1 SLOAD DUP1 PUSH2 0x13C1 JUMPI PUSH2 0x13C1 PUSH2 0x2746 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE SWAP8 DUP2 MSTORE PUSH1 0xC SWAP1 SWAP6 ADD DUP8 MSTORE POP POP PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP5 MSTORE SWAP4 SWAP1 SWAP5 MSTORE POP SWAP1 DUP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x141C PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xD DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x145D JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146A PUSH1 0x1 DUP4 PUSH2 0x2512 JUMP JUMPDEST PUSH1 0xD DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1481 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x152F JUMPI PUSH1 0x0 DUP5 PUSH1 0xD ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14A1 JUMPI PUSH2 0x14A1 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xD DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x14D2 JUMPI PUSH2 0x14D2 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1506 DUP4 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xD DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SSTORE JUMPDEST DUP4 PUSH1 0xD ADD DUP1 SLOAD DUP1 PUSH2 0x1542 JUMPI PUSH2 0x1542 PUSH2 0x2746 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE SWAP8 DUP2 MSTORE PUSH1 0xD SWAP1 SWAP6 ADD DUP8 MSTORE POP POP PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP5 MSTORE SWAP4 SWAP1 SWAP5 MSTORE POP SWAP1 DUP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x159D PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xD DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 ISZERO PUSH2 0x1612 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0xD DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 SLOAD DUP10 DUP3 MSTORE SWAP5 DUP8 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE DUP5 MSTORE DUP1 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP9 DUP2 MSTORE PUSH1 0x9 DUP8 ADD DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP4 DUP2 MSTORE SWAP3 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x2 SWAP3 PUSH1 0xFF NOT SWAP1 SWAP2 AND SWAP1 DUP4 PUSH2 0x1607 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1696 PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x16BF JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND SUB PUSH2 0x16F1 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x172C JUMPI PUSH2 0x172C PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1737 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1772 JUMPI PUSH2 0x1772 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1794 JUMPI DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x35252123 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x17F0 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH2 0x17FA DUP5 DUP5 PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x1804 DUP5 DUP5 PUSH2 0x1840 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP6 SWAP1 PUSH32 0x9A32DB57826EBC3E7487A5B33BF9B4EEEC26E87E54FBAA4D09DF62F3FB627314 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x184A PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xC DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 ISZERO PUSH2 0x18B7 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xFF NOT AND DUP3 DUP1 PUSH2 0x1607 JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 SLOAD DUP10 DUP3 MSTORE SWAP5 DUP8 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE DUP5 MSTORE DUP1 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP9 DUP2 MSTORE PUSH1 0x9 DUP8 ADD DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP4 DUP2 MSTORE SWAP3 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 DUP1 PUSH2 0x1607 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1978 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x199C SWAP2 SWAP1 PUSH2 0x275C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP4 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x19BC JUMPI PUSH2 0x19BC PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x19C8 JUMPI PUSH1 0x1 PUSH2 0x19CB JUMP JUMPDEST PUSH1 0x2 JUMPDEST PUSH1 0xB SWAP1 SWAP4 ADD SLOAD PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP1 SWAP3 LT ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19EB PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x10F5 JUMPI PUSH1 0x3 DUP3 ADD SLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x607BFB24 SWAP1 DUP6 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1A24 JUMPI PUSH2 0x1A24 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A4A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A8B SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0x1AC5 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1AA1 JUMPI PUSH2 0x1AA1 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x6E770B7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1B51 JUMPI DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AE2 JUMPI PUSH2 0x1AE2 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AFC JUMPI PUSH2 0x1AFC PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB PUSH2 0x1B3F JUMPI DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B1B JUMPI PUSH2 0x1B1B PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xDE0927C9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x1B49 DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1AC8 JUMP JUMPDEST POP DUP1 PUSH2 0x1B5C DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x19F0 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1B79 JUMPI PUSH2 0x1B79 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1BDC JUMPI PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1B96 JUMPI PUSH2 0x1B96 PUSH2 0x24E6 JUMP JUMPDEST EQ ISZERO DUP1 PUSH2 0x1BB9 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1BB6 JUMPI PUSH2 0x1BB6 PUSH2 0x24E6 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1BD7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35F4A26B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C35 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1BF4 JUMPI PUSH2 0x1BF4 PUSH2 0x24E6 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x1C17 JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1C14 JUMPI PUSH2 0x1C14 PUSH2 0x24E6 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1C35 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35F4A26B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1C4D JUMPI PUSH2 0x1C4D PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1C88 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x1C67 JUMPI POP PUSH1 0xE0 DUP2 ADD MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1C85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6A88293D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD ISZERO DUP1 PUSH2 0x1C9B JUMPI POP PUSH1 0xE0 DUP2 ADD MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x1CB9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6A88293D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xF4240 DUP2 PUSH1 0xC0 ADD MLOAD GT ISZERO PUSH2 0x1CEC JUMPI DUP1 PUSH1 0xC0 ADD MLOAD PUSH3 0xF4240 PUSH1 0x40 MLOAD PUSH4 0x13C3D1B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x1D06 SWAP2 SWAP1 PUSH2 0x2775 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 PUSH1 0x60 ADD MLOAD LT ISZERO PUSH2 0x1D4E JUMPI PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF45CB753 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x140 DUP2 ADD MLOAD MLOAD PUSH1 0x78 DUP2 GT ISZERO PUSH2 0x1D80 JUMPI DUP1 PUSH1 0x78 PUSH1 0x40 MLOAD PUSH4 0x107B8CAB PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MLOAD MLOAD PUSH2 0x1F4 DUP2 GT ISZERO PUSH2 0x1DB0 JUMPI DUP1 PUSH2 0x1F4 PUSH1 0x40 MLOAD PUSH4 0x71A24CF3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0x180 DUP4 ADD MLOAD MLOAD PUSH2 0x200 DUP2 GT ISZERO PUSH2 0x1DE0 JUMPI DUP1 PUSH2 0x200 PUSH1 0x40 MLOAD PUSH4 0x6754CCBF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0x1A0 DUP5 ADD MLOAD MLOAD PUSH2 0x200 DUP2 GT ISZERO PUSH2 0x1E10 JUMPI DUP1 PUSH2 0x200 PUSH1 0x40 MLOAD PUSH4 0x4AF3FA93 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7B9C93D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF73927A SWAP1 PUSH2 0x1E4E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1E93 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x27B0 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x42A JUMPI DUP3 DUP2 PUSH1 0x40 MLOAD PUSH4 0x411F12C7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x283A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EC3 PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xB DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 ISZERO PUSH2 0x1F18 JUMPI DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x73D45943 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0xB DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 SLOAD DUP10 DUP3 MSTORE SWAP5 DUP8 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE DUP5 MSTORE DUP1 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP9 DUP2 MSTORE PUSH1 0x9 DUP8 ADD DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP4 DUP2 MSTORE SWAP3 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x3 SWAP3 PUSH1 0xFF NOT SWAP1 SWAP2 AND SWAP1 DUP4 PUSH2 0x1607 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0xFACAA812F3DDB00D0D30B86BE7240DFF1CD3372E8F77A7B421D35125891E3060 DUP5 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP6 PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP7 PUSH1 0x0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP8 PUSH1 0x1 ADD SLOAD DUP9 PUSH1 0x2 ADD SLOAD DUP10 PUSH1 0x4 ADD SLOAD DUP11 PUSH1 0x0 ADD PUSH1 0x5 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP12 PUSH1 0xF ADD DUP13 PUSH1 0x10 ADD DUP14 PUSH1 0x11 ADD DUP15 PUSH1 0x12 ADD DUP16 PUSH1 0x13 ADD PUSH1 0x40 MLOAD PUSH2 0x205D SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2964 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2083 JUMPI PUSH2 0x2083 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1D4E JUMPI DUP2 PUSH32 0x632E7AF18AA775A9A28C2F3530920C3DC0924EFE616499DE9943F6DC93C699A5 DUP3 PUSH1 0x5 ADD SLOAD DUP4 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x20C2 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2120 JUMPI PUSH2 0x2120 PUSH2 0x20E7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x214E JUMPI PUSH2 0x214E PUSH2 0x20E7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x216F JUMPI PUSH2 0x216F PUSH2 0x20E7 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x218A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x219F PUSH2 0x219A DUP4 PUSH2 0x2156 JUMP JUMPDEST PUSH2 0x2126 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x21BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x21EF JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x21E2 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x21C2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x220D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x222A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2236 DUP6 DUP3 DUP7 ADD PUSH2 0x2179 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x224F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x2275 PUSH2 0x219A DUP4 PUSH2 0x2156 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x2294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x21EF JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x2298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x22C8 JUMPI PUSH2 0x22C8 PUSH2 0x20E7 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x22E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x22F5 PUSH2 0x219A DUP3 PUSH2 0x22AF JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x230A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH2 0x1C0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x236D PUSH2 0x20FD JUMP JUMPDEST PUSH2 0x2376 DUP4 PUSH2 0x2240 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2384 PUSH1 0x20 DUP5 ADD PUSH2 0x2240 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2395 PUSH1 0x40 DUP5 ADD PUSH2 0x2240 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP4 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP4 ADD CALLDATALOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x23E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23EC DUP9 DUP3 DUP8 ADD PUSH2 0x2254 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x120 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2412 DUP9 DUP3 DUP8 ADD PUSH2 0x2179 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x140 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x242C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2438 DUP9 DUP3 DUP8 ADD PUSH2 0x22D6 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x160 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x245E DUP9 DUP3 DUP8 ADD PUSH2 0x22D6 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x180 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2484 DUP9 DUP3 DUP8 ADD PUSH2 0x22D6 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x1A0 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x249E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24AA DUP9 DUP3 DUP8 ADD PUSH2 0x22D6 JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x199C JUMPI PUSH2 0x199C PUSH2 0x24FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x224F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7BC DUP3 PUSH2 0x253E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x2591 JUMPI PUSH2 0x2591 PUSH2 0x24FC JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x199C JUMPI PUSH2 0x199C PUSH2 0x24FC JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x25CD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x25ED JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x10F5 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x261A JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2639 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2626 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x265A JUMPI PUSH2 0x265A PUSH2 0x20E7 JUMP JUMPDEST PUSH2 0x266E DUP2 PUSH2 0x2668 DUP5 SLOAD PUSH2 0x25B9 JUMP JUMPDEST DUP5 PUSH2 0x25F3 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x26A3 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x268B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x2639 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x26D2 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x26B3 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x26F0 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x271D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x276E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x199C JUMPI PUSH2 0x199C PUSH2 0x24FC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x27A7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x278F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27CC DUP4 PUSH2 0x253E JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x27E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x27F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2807 PUSH2 0x219A DUP3 PUSH2 0x22AF JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x281C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x282D DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x278C JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x2867 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x278C JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x1C85 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x28A3 DUP2 PUSH2 0x287C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP4 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28DC JUMPI DUP2 SLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 PUSH1 0x1 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x28C0 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH2 0x28F4 DUP2 PUSH2 0x25B9 JUMP JUMPDEST DUP1 DUP6 MSTORE PUSH1 0x20 PUSH1 0x1 DUP4 DUP2 AND DUP1 ISZERO PUSH2 0x2911 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x292B JUMPI PUSH2 0x2959 JUMP JUMPDEST PUSH1 0xFF NOT DUP6 AND DUP9 DUP5 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x5 SHL DUP9 ADD DUP4 ADD SWAP6 POP PUSH2 0x2959 JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE DUP3 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2951 JUMPI DUP2 SLOAD DUP11 DUP3 ADD DUP7 ADD MSTORE SWAP1 DUP4 ADD SWAP1 DUP5 ADD PUSH2 0x2936 JUMP JUMPDEST DUP10 ADD DUP5 ADD SWAP7 POP POP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 PUSH2 0x2972 DUP16 PUSH2 0x287C JUMP JUMPDEST DUP15 DUP4 MSTORE PUSH2 0x2982 PUSH1 0x20 DUP5 ADD DUP16 PUSH2 0x289A JUMP JUMPDEST PUSH2 0x298F PUSH1 0x40 DUP5 ADD DUP15 PUSH2 0x289A JUMP JUMPDEST DUP12 PUSH1 0x60 DUP5 ADD MSTORE DUP11 PUSH1 0x80 DUP5 ADD MSTORE DUP10 PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x29AF PUSH1 0xC0 DUP5 ADD DUP11 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST DUP1 PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x29C1 DUP2 DUP5 ADD DUP10 PUSH2 0x28A7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x29D6 DUP2 DUP9 PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x29EB DUP2 DUP8 PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x140 DUP5 ADD MSTORE PUSH2 0x2A00 DUP2 DUP7 PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x160 DUP5 ADD MSTORE PUSH2 0x2A15 DUP2 DUP6 PUSH2 0x28E7 JUMP JUMPDEST SWAP16 SWAP15 POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E DUP3 0xD2 0xC8 0xE9 RETURNDATASIZE SWAP5 0xC8 0x2A 0xB1 PC JUMPDEST SWAP5 0xB8 MOD 0x4A 0xDE SWAP4 0xD7 0xD8 BASEFEE EXTCODEHASH PUSH4 0x48089670 ADDMOD SHR 0xEB CHAINID 0xD2 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"533:24462:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;533:24462:23;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addDeclined_10650":{"entryPoint":5523,"id":10650,"parameterSlots":2,"returnSlots":0},"@_addInvite_10302":{"entryPoint":5772,"id":10302,"parameterSlots":2,"returnSlots":0},"@_addInvited_10568":{"entryPoint":6208,"id":10568,"parameterSlots":2,"returnSlots":0},"@_addParticipant_10378":{"entryPoint":7865,"id":10378,"parameterSlots":2,"returnSlots":0},"@_currentRound_10927":{"entryPoint":6444,"id":10927,"parameterSlots":1,"returnSlots":1},"@_emitChallengeCreated_10190":{"entryPoint":8082,"id":10190,"parameterSlots":2,"returnSlots":0},"@_ensurePendingChallenge_10133":{"entryPoint":4218,"id":10133,"parameterSlots":2,"returnSlots":0},"@_getChallenge_10967":{"entryPoint":4137,"id":10967,"parameterSlots":1,"returnSlots":1},"@_isChallengeValid_10913":{"entryPoint":6562,"id":10913,"parameterSlots":1,"returnSlots":1},"@_removeFromDeclinedIfPresent_10856":{"entryPoint":5138,"id":10856,"parameterSlots":2,"returnSlots":0},"@_removeFromInvitedIfPresent_10753":{"entryPoint":4753,"id":10753,"parameterSlots":2,"returnSlots":0},"@_removeParticipant_10486":{"entryPoint":4346,"id":10486,"parameterSlots":2,"returnSlots":0},"@_requirePerson_10886":{"entryPoint":7703,"id":10886,"parameterSlots":2,"returnSlots":0},"@_validateApps_10087":{"entryPoint":6625,"id":10087,"parameterSlots":1,"returnSlots":0},"@_validateMetadataLengths_10015":{"entryPoint":7506,"id":10015,"parameterSlots":1,"returnSlots":0},"@_validateTypeConfiguration_9925":{"entryPoint":7012,"id":9925,"parameterSlots":1,"returnSlots":0},"@addInvites_9147":{"entryPoint":927,"id":9147,"parameterSlots":2,"returnSlots":0},"@cancelChallenge_9639":{"entryPoint":1763,"id":9639,"parameterSlots":1,"returnSlots":0},"@createChallenge_9091":{"entryPoint":2239,"id":9091,"parameterSlots":1,"returnSlots":1},"@declineChallenge_9593":{"entryPoint":416,"id":9593,"parameterSlots":1,"returnSlots":0},"@getChallengesStorage_12654":{"entryPoint":4101,"id":12654,"parameterSlots":0,"returnSlots":1},"@getComputedStatus_9792":{"entryPoint":1597,"id":9792,"parameterSlots":1,"returnSlots":1},"@joinChallenge_9326":{"entryPoint":3424,"id":9326,"parameterSlots":1,"returnSlots":0},"@leaveChallenge_9460":{"entryPoint":1072,"id":9460,"parameterSlots":1,"returnSlots":0},"@syncChallenge_9722":{"entryPoint":1901,"id":9722,"parameterSlots":1,"returnSlots":1},"abi_decode_array_address_dyn":{"entryPoint":8569,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_bytes32_dyn":{"entryPoint":8788,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":9534,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_enum_ChallengeKind":{"entryPoint":8768,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_string":{"entryPoint":8918,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":9550,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_boolt_string_memory_ptr_fromMemory":{"entryPoint":10160,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_struct$_CreateChallengeParams_$12717_memory_ptr":{"entryPoint":8999,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":8398,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":10076,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_array$_t_address_$dyn_memory_ptr":{"entryPoint":8698,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_array_bytes32_dyn_storage":{"entryPoint":10407,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_ChallengeKind":{"entryPoint":10394,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string_storage":{"entryPoint":10471,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":9403,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":10018,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10298,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":9509,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_ChallengeKind_$12660_t_enum$_ChallengeVisibility_$12663_t_enum$_ChallengeType_$12667_t_uint256_t_uint256_t_uint256_t_bool_t_array$_t_bytes32_$dyn_storage_t_string_storage_t_string_storage_t_string_storage_t_string_storage__to_t_uint8_t_uint8_t_uint8_t_uint256_t_uint256_t_uint256_t_bool_t_array$_t_bytes32_$dyn_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10596,"id":null,"parameterSlots":13,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed":{"entryPoint":9423,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":9624,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":8486,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_2305":{"entryPoint":8445,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_address_dyn":{"entryPoint":8534,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":8879,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":9638,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":9984,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":10101,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":9490,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":9715,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":9793,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":10124,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":9657,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":9599,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":9468,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":9446,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":10054,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":9577,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":8423,"id":null,"parameterSlots":0,"returnSlots":0},"validator_assert_enum_ChallengeKind":{"entryPoint":10364,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:17772:46","statements":[{"nodeType":"YulBlock","src":"6:3:46","statements":[]},{"body":{"nodeType":"YulBlock","src":"84:110:46","statements":[{"body":{"nodeType":"YulBlock","src":"130:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"139:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"142:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"132:6:46"},"nodeType":"YulFunctionCall","src":"132:12:46"},"nodeType":"YulExpressionStatement","src":"132:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"105:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"114:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"101:3:46"},"nodeType":"YulFunctionCall","src":"101:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"126:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"97:3:46"},"nodeType":"YulFunctionCall","src":"97:32:46"},"nodeType":"YulIf","src":"94:52:46"},{"nodeType":"YulAssignment","src":"155:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"178:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"165:12:46"},"nodeType":"YulFunctionCall","src":"165:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"155:6:46"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"50:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"61:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"73:6:46","type":""}],"src":"14:180:46"},{"body":{"nodeType":"YulBlock","src":"231:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"248:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"255:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"260:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"251:3:46"},"nodeType":"YulFunctionCall","src":"251:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"241:6:46"},"nodeType":"YulFunctionCall","src":"241:31:46"},"nodeType":"YulExpressionStatement","src":"241:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"288:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"291:4:46","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"281:6:46"},"nodeType":"YulFunctionCall","src":"281:15:46"},"nodeType":"YulExpressionStatement","src":"281:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"312:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"315:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"305:6:46"},"nodeType":"YulFunctionCall","src":"305:15:46"},"nodeType":"YulExpressionStatement","src":"305:15:46"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"199:127:46"},{"body":{"nodeType":"YulBlock","src":"377:209:46","statements":[{"nodeType":"YulAssignment","src":"387:19:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"403:2:46","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"397:5:46"},"nodeType":"YulFunctionCall","src":"397:9:46"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"387:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"415:37:46","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"437:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"445:6:46","type":"","value":"0x01c0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"433:3:46"},"nodeType":"YulFunctionCall","src":"433:19:46"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"419:10:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"527:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"529:16:46"},"nodeType":"YulFunctionCall","src":"529:18:46"},"nodeType":"YulExpressionStatement","src":"529:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"470:10:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"490:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"494:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"486:3:46"},"nodeType":"YulFunctionCall","src":"486:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"498:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"482:3:46"},"nodeType":"YulFunctionCall","src":"482:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"467:2:46"},"nodeType":"YulFunctionCall","src":"467:34:46"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"506:10:46"},{"name":"memPtr","nodeType":"YulIdentifier","src":"518:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"503:2:46"},"nodeType":"YulFunctionCall","src":"503:22:46"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"464:2:46"},"nodeType":"YulFunctionCall","src":"464:62:46"},"nodeType":"YulIf","src":"461:88:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"565:2:46","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"569:10:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"558:6:46"},"nodeType":"YulFunctionCall","src":"558:22:46"},"nodeType":"YulExpressionStatement","src":"558:22:46"}]},"name":"allocate_memory_2305","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"366:6:46","type":""}],"src":"331:255:46"},{"body":{"nodeType":"YulBlock","src":"636:230:46","statements":[{"nodeType":"YulAssignment","src":"646:19:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"662:2:46","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"656:5:46"},"nodeType":"YulFunctionCall","src":"656:9:46"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"646:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"674:58:46","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"696:6:46"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"712:4:46"},{"kind":"number","nodeType":"YulLiteral","src":"718:2:46","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:46"},"nodeType":"YulFunctionCall","src":"708:13:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"727:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"723:3:46"},"nodeType":"YulFunctionCall","src":"723:7:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"704:3:46"},"nodeType":"YulFunctionCall","src":"704:27:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"692:3:46"},"nodeType":"YulFunctionCall","src":"692:40:46"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"678:10:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"807:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"809:16:46"},"nodeType":"YulFunctionCall","src":"809:18:46"},"nodeType":"YulExpressionStatement","src":"809:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"750:10:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"770:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"774:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"766:3:46"},"nodeType":"YulFunctionCall","src":"766:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"778:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"762:3:46"},"nodeType":"YulFunctionCall","src":"762:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"747:2:46"},"nodeType":"YulFunctionCall","src":"747:34:46"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"786:10:46"},{"name":"memPtr","nodeType":"YulIdentifier","src":"798:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"783:2:46"},"nodeType":"YulFunctionCall","src":"783:22:46"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"744:2:46"},"nodeType":"YulFunctionCall","src":"744:62:46"},"nodeType":"YulIf","src":"741:88:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"845:2:46","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"849:10:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"838:6:46"},"nodeType":"YulFunctionCall","src":"838:22:46"},"nodeType":"YulExpressionStatement","src":"838:22:46"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"616:4:46","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"625:6:46","type":""}],"src":"591:275:46"},{"body":{"nodeType":"YulBlock","src":"940:114:46","statements":[{"body":{"nodeType":"YulBlock","src":"984:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"986:16:46"},"nodeType":"YulFunctionCall","src":"986:18:46"},"nodeType":"YulExpressionStatement","src":"986:18:46"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"956:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"972:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"976:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"968:3:46"},"nodeType":"YulFunctionCall","src":"968:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"980:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"964:3:46"},"nodeType":"YulFunctionCall","src":"964:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"953:2:46"},"nodeType":"YulFunctionCall","src":"953:30:46"},"nodeType":"YulIf","src":"950:56:46"},{"nodeType":"YulAssignment","src":"1015:33:46","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1031:1:46","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"1034:6:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1027:3:46"},"nodeType":"YulFunctionCall","src":"1027:14:46"},{"kind":"number","nodeType":"YulLiteral","src":"1043:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1023:3:46"},"nodeType":"YulFunctionCall","src":"1023:25:46"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1015:4:46"}]}]},"name":"array_allocation_size_array_address_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"920:6:46","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"931:4:46","type":""}],"src":"871:183:46"},{"body":{"nodeType":"YulBlock","src":"1123:782:46","statements":[{"body":{"nodeType":"YulBlock","src":"1172:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1181:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1184:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1174:6:46"},"nodeType":"YulFunctionCall","src":"1174:12:46"},"nodeType":"YulExpressionStatement","src":"1174:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1151:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"1159:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1147:3:46"},"nodeType":"YulFunctionCall","src":"1147:17:46"},{"name":"end","nodeType":"YulIdentifier","src":"1166:3:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1143:3:46"},"nodeType":"YulFunctionCall","src":"1143:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1136:6:46"},"nodeType":"YulFunctionCall","src":"1136:35:46"},"nodeType":"YulIf","src":"1133:55:46"},{"nodeType":"YulVariableDeclaration","src":"1197:30:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1220:6:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1207:12:46"},"nodeType":"YulFunctionCall","src":"1207:20:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1201:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1236:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"1246:4:46","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1240:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1259:71:46","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1326:2:46"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"1286:39:46"},"nodeType":"YulFunctionCall","src":"1286:43:46"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"1270:15:46"},"nodeType":"YulFunctionCall","src":"1270:60:46"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"1263:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1339:16:46","value":{"name":"dst","nodeType":"YulIdentifier","src":"1352:3:46"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"1343:5:46","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1371:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"1376:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1364:6:46"},"nodeType":"YulFunctionCall","src":"1364:15:46"},"nodeType":"YulExpressionStatement","src":"1364:15:46"},{"nodeType":"YulAssignment","src":"1388:19:46","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1399:3:46"},{"name":"_2","nodeType":"YulIdentifier","src":"1404:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1395:3:46"},"nodeType":"YulFunctionCall","src":"1395:12:46"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1388:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"1416:46:46","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1438:6:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1450:1:46","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"1453:2:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1446:3:46"},"nodeType":"YulFunctionCall","src":"1446:10:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1434:3:46"},"nodeType":"YulFunctionCall","src":"1434:23:46"},{"name":"_2","nodeType":"YulIdentifier","src":"1459:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1430:3:46"},"nodeType":"YulFunctionCall","src":"1430:32:46"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"1420:6:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"1490:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1499:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1492:6:46"},"nodeType":"YulFunctionCall","src":"1492:12:46"},"nodeType":"YulExpressionStatement","src":"1492:12:46"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"1477:6:46"},{"name":"end","nodeType":"YulIdentifier","src":"1485:3:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1474:2:46"},"nodeType":"YulFunctionCall","src":"1474:15:46"},"nodeType":"YulIf","src":"1471:35:46"},{"nodeType":"YulVariableDeclaration","src":"1515:26:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1530:6:46"},{"name":"_2","nodeType":"YulIdentifier","src":"1538:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1526:3:46"},"nodeType":"YulFunctionCall","src":"1526:15:46"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"1519:3:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"1606:270:46","statements":[{"nodeType":"YulVariableDeclaration","src":"1620:30:46","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1646:3:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1633:12:46"},"nodeType":"YulFunctionCall","src":"1633:17:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1624:5:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"1729:74:46","statements":[{"nodeType":"YulVariableDeclaration","src":"1747:11:46","value":{"kind":"number","nodeType":"YulLiteral","src":"1757:1:46","type":"","value":"0"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1751:2:46","type":""}]},{"expression":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1782:2:46"},{"name":"_3","nodeType":"YulIdentifier","src":"1786:2:46"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1775:6:46"},"nodeType":"YulFunctionCall","src":"1775:14:46"},"nodeType":"YulExpressionStatement","src":"1775:14:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1676:5:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1687:5:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1702:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1707:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1698:3:46"},"nodeType":"YulFunctionCall","src":"1698:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"1711:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1694:3:46"},"nodeType":"YulFunctionCall","src":"1694:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1683:3:46"},"nodeType":"YulFunctionCall","src":"1683:31:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1673:2:46"},"nodeType":"YulFunctionCall","src":"1673:42:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1666:6:46"},"nodeType":"YulFunctionCall","src":"1666:50:46"},"nodeType":"YulIf","src":"1663:140:46"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1823:3:46"},{"name":"value","nodeType":"YulIdentifier","src":"1828:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1816:6:46"},"nodeType":"YulFunctionCall","src":"1816:18:46"},"nodeType":"YulExpressionStatement","src":"1816:18:46"},{"nodeType":"YulAssignment","src":"1847:19:46","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1858:3:46"},{"name":"_2","nodeType":"YulIdentifier","src":"1863:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1854:3:46"},"nodeType":"YulFunctionCall","src":"1854:12:46"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1847:3:46"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1561:3:46"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"1566:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1558:2:46"},"nodeType":"YulFunctionCall","src":"1558:15:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1574:23:46","statements":[{"nodeType":"YulAssignment","src":"1576:19:46","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1587:3:46"},{"name":"_2","nodeType":"YulIdentifier","src":"1592:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1583:3:46"},"nodeType":"YulFunctionCall","src":"1583:12:46"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"1576:3:46"}]}]},"pre":{"nodeType":"YulBlock","src":"1554:3:46","statements":[]},"src":"1550:326:46"},{"nodeType":"YulAssignment","src":"1885:14:46","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"1894:5:46"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1885:5:46"}]}]},"name":"abi_decode_array_address_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1097:6:46","type":""},{"name":"end","nodeType":"YulTypedName","src":"1105:3:46","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1113:5:46","type":""}],"src":"1059:846:46"},{"body":{"nodeType":"YulBlock","src":"2022:304:46","statements":[{"body":{"nodeType":"YulBlock","src":"2068:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2077:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2080:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2070:6:46"},"nodeType":"YulFunctionCall","src":"2070:12:46"},"nodeType":"YulExpressionStatement","src":"2070:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2043:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"2052:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2039:3:46"},"nodeType":"YulFunctionCall","src":"2039:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"2064:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2035:3:46"},"nodeType":"YulFunctionCall","src":"2035:32:46"},"nodeType":"YulIf","src":"2032:52:46"},{"nodeType":"YulAssignment","src":"2093:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2116:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2103:12:46"},"nodeType":"YulFunctionCall","src":"2103:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2093:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"2135:46:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2166:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"2177:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2162:3:46"},"nodeType":"YulFunctionCall","src":"2162:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2149:12:46"},"nodeType":"YulFunctionCall","src":"2149:32:46"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2139:6:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"2224:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2233:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2236:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2226:6:46"},"nodeType":"YulFunctionCall","src":"2226:12:46"},"nodeType":"YulExpressionStatement","src":"2226:12:46"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2196:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2212:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2216:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2208:3:46"},"nodeType":"YulFunctionCall","src":"2208:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"2220:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2204:3:46"},"nodeType":"YulFunctionCall","src":"2204:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2193:2:46"},"nodeType":"YulFunctionCall","src":"2193:30:46"},"nodeType":"YulIf","src":"2190:50:46"},{"nodeType":"YulAssignment","src":"2249:71:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2292:9:46"},{"name":"offset","nodeType":"YulIdentifier","src":"2303:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2288:3:46"},"nodeType":"YulFunctionCall","src":"2288:22:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2312:7:46"}],"functionName":{"name":"abi_decode_array_address_dyn","nodeType":"YulIdentifier","src":"2259:28:46"},"nodeType":"YulFunctionCall","src":"2259:61:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2249:6:46"}]}]},"name":"abi_decode_tuple_t_uint256t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1980:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1991:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2003:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2011:6:46","type":""}],"src":"1910:416:46"},{"body":{"nodeType":"YulBlock","src":"2436:87:46","statements":[{"nodeType":"YulAssignment","src":"2446:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2458:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"2469:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2454:3:46"},"nodeType":"YulFunctionCall","src":"2454:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2446:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2488:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2503:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"2511:4:46","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2499:3:46"},"nodeType":"YulFunctionCall","src":"2499:17:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2481:6:46"},"nodeType":"YulFunctionCall","src":"2481:36:46"},"nodeType":"YulExpressionStatement","src":"2481:36:46"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2405:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2416:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2427:4:46","type":""}],"src":"2331:192:46"},{"body":{"nodeType":"YulBlock","src":"2588:94:46","statements":[{"nodeType":"YulAssignment","src":"2598:29:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2620:6:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2607:12:46"},"nodeType":"YulFunctionCall","src":"2607:20:46"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2598:5:46"}]},{"body":{"nodeType":"YulBlock","src":"2660:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2669:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2672:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2662:6:46"},"nodeType":"YulFunctionCall","src":"2662:12:46"},"nodeType":"YulExpressionStatement","src":"2662:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2649:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"2656:1:46","type":"","value":"2"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2646:2:46"},"nodeType":"YulFunctionCall","src":"2646:12:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2639:6:46"},"nodeType":"YulFunctionCall","src":"2639:20:46"},"nodeType":"YulIf","src":"2636:40:46"}]},"name":"abi_decode_enum_ChallengeKind","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2567:6:46","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2578:5:46","type":""}],"src":"2528:154:46"},{"body":{"nodeType":"YulBlock","src":"2751:598:46","statements":[{"body":{"nodeType":"YulBlock","src":"2800:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2809:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2812:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2802:6:46"},"nodeType":"YulFunctionCall","src":"2802:12:46"},"nodeType":"YulExpressionStatement","src":"2802:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2779:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"2787:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2775:3:46"},"nodeType":"YulFunctionCall","src":"2775:17:46"},{"name":"end","nodeType":"YulIdentifier","src":"2794:3:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2771:3:46"},"nodeType":"YulFunctionCall","src":"2771:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2764:6:46"},"nodeType":"YulFunctionCall","src":"2764:35:46"},"nodeType":"YulIf","src":"2761:55:46"},{"nodeType":"YulVariableDeclaration","src":"2825:30:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2848:6:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2835:12:46"},"nodeType":"YulFunctionCall","src":"2835:20:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2829:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2864:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"2874:4:46","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2868:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2887:71:46","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2954:2:46"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"2914:39:46"},"nodeType":"YulFunctionCall","src":"2914:43:46"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2898:15:46"},"nodeType":"YulFunctionCall","src":"2898:60:46"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2891:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2967:16:46","value":{"name":"dst","nodeType":"YulIdentifier","src":"2980:3:46"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"2971:5:46","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2999:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"3004:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2992:6:46"},"nodeType":"YulFunctionCall","src":"2992:15:46"},"nodeType":"YulExpressionStatement","src":"2992:15:46"},{"nodeType":"YulAssignment","src":"3016:19:46","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3027:3:46"},{"name":"_2","nodeType":"YulIdentifier","src":"3032:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3023:3:46"},"nodeType":"YulFunctionCall","src":"3023:12:46"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3016:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"3044:46:46","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3066:6:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3078:1:46","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"3081:2:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3074:3:46"},"nodeType":"YulFunctionCall","src":"3074:10:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3062:3:46"},"nodeType":"YulFunctionCall","src":"3062:23:46"},{"name":"_2","nodeType":"YulIdentifier","src":"3087:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3058:3:46"},"nodeType":"YulFunctionCall","src":"3058:32:46"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"3048:6:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"3118:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3127:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3130:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3120:6:46"},"nodeType":"YulFunctionCall","src":"3120:12:46"},"nodeType":"YulExpressionStatement","src":"3120:12:46"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"3105:6:46"},{"name":"end","nodeType":"YulIdentifier","src":"3113:3:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3102:2:46"},"nodeType":"YulFunctionCall","src":"3102:15:46"},"nodeType":"YulIf","src":"3099:35:46"},{"nodeType":"YulVariableDeclaration","src":"3143:26:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3158:6:46"},{"name":"_2","nodeType":"YulIdentifier","src":"3166:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3154:3:46"},"nodeType":"YulFunctionCall","src":"3154:15:46"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3147:3:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"3234:86:46","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3255:3:46"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3273:3:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3260:12:46"},"nodeType":"YulFunctionCall","src":"3260:17:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3248:6:46"},"nodeType":"YulFunctionCall","src":"3248:30:46"},"nodeType":"YulExpressionStatement","src":"3248:30:46"},{"nodeType":"YulAssignment","src":"3291:19:46","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3302:3:46"},{"name":"_2","nodeType":"YulIdentifier","src":"3307:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3298:3:46"},"nodeType":"YulFunctionCall","src":"3298:12:46"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3291:3:46"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3189:3:46"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3194:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3186:2:46"},"nodeType":"YulFunctionCall","src":"3186:15:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3202:23:46","statements":[{"nodeType":"YulAssignment","src":"3204:19:46","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3215:3:46"},{"name":"_2","nodeType":"YulIdentifier","src":"3220:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3211:3:46"},"nodeType":"YulFunctionCall","src":"3211:12:46"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3204:3:46"}]}]},"pre":{"nodeType":"YulBlock","src":"3182:3:46","statements":[]},"src":"3178:142:46"},{"nodeType":"YulAssignment","src":"3329:14:46","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"3338:5:46"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3329:5:46"}]}]},"name":"abi_decode_array_bytes32_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2725:6:46","type":""},{"name":"end","nodeType":"YulTypedName","src":"2733:3:46","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2741:5:46","type":""}],"src":"2687:662:46"},{"body":{"nodeType":"YulBlock","src":"3412:129:46","statements":[{"body":{"nodeType":"YulBlock","src":"3456:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3458:16:46"},"nodeType":"YulFunctionCall","src":"3458:18:46"},"nodeType":"YulExpressionStatement","src":"3458:18:46"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3428:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3444:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"3448:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3440:3:46"},"nodeType":"YulFunctionCall","src":"3440:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"3452:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3436:3:46"},"nodeType":"YulFunctionCall","src":"3436:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3425:2:46"},"nodeType":"YulFunctionCall","src":"3425:30:46"},"nodeType":"YulIf","src":"3422:56:46"},{"nodeType":"YulAssignment","src":"3487:48:46","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3507:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"3515:2:46","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3503:3:46"},"nodeType":"YulFunctionCall","src":"3503:15:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3524:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3520:3:46"},"nodeType":"YulFunctionCall","src":"3520:7:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3499:3:46"},"nodeType":"YulFunctionCall","src":"3499:29:46"},{"kind":"number","nodeType":"YulLiteral","src":"3530:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3495:3:46"},"nodeType":"YulFunctionCall","src":"3495:40:46"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"3487:4:46"}]}]},"name":"array_allocation_size_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"3392:6:46","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"3403:4:46","type":""}],"src":"3354:187:46"},{"body":{"nodeType":"YulBlock","src":"3599:411:46","statements":[{"body":{"nodeType":"YulBlock","src":"3648:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3657:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3660:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3650:6:46"},"nodeType":"YulFunctionCall","src":"3650:12:46"},"nodeType":"YulExpressionStatement","src":"3650:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3627:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"3635:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3623:3:46"},"nodeType":"YulFunctionCall","src":"3623:17:46"},{"name":"end","nodeType":"YulIdentifier","src":"3642:3:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3619:3:46"},"nodeType":"YulFunctionCall","src":"3619:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3612:6:46"},"nodeType":"YulFunctionCall","src":"3612:35:46"},"nodeType":"YulIf","src":"3609:55:46"},{"nodeType":"YulVariableDeclaration","src":"3673:30:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3696:6:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3683:12:46"},"nodeType":"YulFunctionCall","src":"3683:20:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3677:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3712:64:46","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3772:2:46"}],"functionName":{"name":"array_allocation_size_string","nodeType":"YulIdentifier","src":"3743:28:46"},"nodeType":"YulFunctionCall","src":"3743:32:46"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3727:15:46"},"nodeType":"YulFunctionCall","src":"3727:49:46"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"3716:7:46","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"3792:7:46"},{"name":"_1","nodeType":"YulIdentifier","src":"3801:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3785:6:46"},"nodeType":"YulFunctionCall","src":"3785:19:46"},"nodeType":"YulExpressionStatement","src":"3785:19:46"},{"body":{"nodeType":"YulBlock","src":"3852:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3861:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3864:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3854:6:46"},"nodeType":"YulFunctionCall","src":"3854:12:46"},"nodeType":"YulExpressionStatement","src":"3854:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3827:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"3835:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3823:3:46"},"nodeType":"YulFunctionCall","src":"3823:15:46"},{"kind":"number","nodeType":"YulLiteral","src":"3840:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3819:3:46"},"nodeType":"YulFunctionCall","src":"3819:26:46"},{"name":"end","nodeType":"YulIdentifier","src":"3847:3:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3816:2:46"},"nodeType":"YulFunctionCall","src":"3816:35:46"},"nodeType":"YulIf","src":"3813:55:46"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"3894:7:46"},{"kind":"number","nodeType":"YulLiteral","src":"3903:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3890:3:46"},"nodeType":"YulFunctionCall","src":"3890:18:46"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3914:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"3922:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3910:3:46"},"nodeType":"YulFunctionCall","src":"3910:17:46"},{"name":"_1","nodeType":"YulIdentifier","src":"3929:2:46"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3877:12:46"},"nodeType":"YulFunctionCall","src":"3877:55:46"},"nodeType":"YulExpressionStatement","src":"3877:55:46"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"3956:7:46"},{"name":"_1","nodeType":"YulIdentifier","src":"3965:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3952:3:46"},"nodeType":"YulFunctionCall","src":"3952:16:46"},{"kind":"number","nodeType":"YulLiteral","src":"3970:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3948:3:46"},"nodeType":"YulFunctionCall","src":"3948:27:46"},{"kind":"number","nodeType":"YulLiteral","src":"3977:1:46","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3941:6:46"},"nodeType":"YulFunctionCall","src":"3941:38:46"},"nodeType":"YulExpressionStatement","src":"3941:38:46"},{"nodeType":"YulAssignment","src":"3988:16:46","value":{"name":"array_1","nodeType":"YulIdentifier","src":"3997:7:46"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3988:5:46"}]}]},"name":"abi_decode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3573:6:46","type":""},{"name":"end","nodeType":"YulTypedName","src":"3581:3:46","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3589:5:46","type":""}],"src":"3546:464:46"},{"body":{"nodeType":"YulBlock","src":"4125:2058:46","statements":[{"body":{"nodeType":"YulBlock","src":"4171:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4180:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4183:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4173:6:46"},"nodeType":"YulFunctionCall","src":"4173:12:46"},"nodeType":"YulExpressionStatement","src":"4173:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4146:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"4155:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4142:3:46"},"nodeType":"YulFunctionCall","src":"4142:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"4167:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4138:3:46"},"nodeType":"YulFunctionCall","src":"4138:32:46"},"nodeType":"YulIf","src":"4135:52:46"},{"nodeType":"YulVariableDeclaration","src":"4196:37:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4223:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4210:12:46"},"nodeType":"YulFunctionCall","src":"4210:23:46"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4200:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4242:28:46","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4260:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"4264:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4256:3:46"},"nodeType":"YulFunctionCall","src":"4256:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"4268:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4252:3:46"},"nodeType":"YulFunctionCall","src":"4252:18:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4246:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"4297:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4306:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4309:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4299:6:46"},"nodeType":"YulFunctionCall","src":"4299:12:46"},"nodeType":"YulExpressionStatement","src":"4299:12:46"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4285:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"4293:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4282:2:46"},"nodeType":"YulFunctionCall","src":"4282:14:46"},"nodeType":"YulIf","src":"4279:34:46"},{"nodeType":"YulVariableDeclaration","src":"4322:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4336:9:46"},{"name":"offset","nodeType":"YulIdentifier","src":"4347:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4332:3:46"},"nodeType":"YulFunctionCall","src":"4332:22:46"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4326:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"4396:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4405:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4408:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4398:6:46"},"nodeType":"YulFunctionCall","src":"4398:12:46"},"nodeType":"YulExpressionStatement","src":"4398:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4374:7:46"},{"name":"_2","nodeType":"YulIdentifier","src":"4383:2:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4370:3:46"},"nodeType":"YulFunctionCall","src":"4370:16:46"},{"kind":"number","nodeType":"YulLiteral","src":"4388:6:46","type":"","value":"0x01c0"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4366:3:46"},"nodeType":"YulFunctionCall","src":"4366:29:46"},"nodeType":"YulIf","src":"4363:49:46"},{"nodeType":"YulVariableDeclaration","src":"4421:35:46","value":{"arguments":[],"functionName":{"name":"allocate_memory_2305","nodeType":"YulIdentifier","src":"4434:20:46"},"nodeType":"YulFunctionCall","src":"4434:22:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4425:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4472:5:46"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4509:2:46"}],"functionName":{"name":"abi_decode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"4479:29:46"},"nodeType":"YulFunctionCall","src":"4479:33:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4465:6:46"},"nodeType":"YulFunctionCall","src":"4465:48:46"},"nodeType":"YulExpressionStatement","src":"4465:48:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4533:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"4540:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4529:3:46"},"nodeType":"YulFunctionCall","src":"4529:14:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4579:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"4583:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4575:3:46"},"nodeType":"YulFunctionCall","src":"4575:11:46"}],"functionName":{"name":"abi_decode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"4545:29:46"},"nodeType":"YulFunctionCall","src":"4545:42:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4522:6:46"},"nodeType":"YulFunctionCall","src":"4522:66:46"},"nodeType":"YulExpressionStatement","src":"4522:66:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4608:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4604:3:46"},"nodeType":"YulFunctionCall","src":"4604:14:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4654:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"4658:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4650:3:46"},"nodeType":"YulFunctionCall","src":"4650:11:46"}],"functionName":{"name":"abi_decode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"4620:29:46"},"nodeType":"YulFunctionCall","src":"4620:42:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4597:6:46"},"nodeType":"YulFunctionCall","src":"4597:66:46"},"nodeType":"YulExpressionStatement","src":"4597:66:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4683:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"4690:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4679:3:46"},"nodeType":"YulFunctionCall","src":"4679:14:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4712:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"4716:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4708:3:46"},"nodeType":"YulFunctionCall","src":"4708:11:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4695:12:46"},"nodeType":"YulFunctionCall","src":"4695:25:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4672:6:46"},"nodeType":"YulFunctionCall","src":"4672:49:46"},"nodeType":"YulExpressionStatement","src":"4672:49:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4741:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"4748:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4737:3:46"},"nodeType":"YulFunctionCall","src":"4737:15:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4771:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"4775:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4767:3:46"},"nodeType":"YulFunctionCall","src":"4767:12:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4754:12:46"},"nodeType":"YulFunctionCall","src":"4754:26:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4730:6:46"},"nodeType":"YulFunctionCall","src":"4730:51:46"},"nodeType":"YulExpressionStatement","src":"4730:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4801:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"4808:3:46","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4797:3:46"},"nodeType":"YulFunctionCall","src":"4797:15:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4831:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"4835:3:46","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4827:3:46"},"nodeType":"YulFunctionCall","src":"4827:12:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4814:12:46"},"nodeType":"YulFunctionCall","src":"4814:26:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4790:6:46"},"nodeType":"YulFunctionCall","src":"4790:51:46"},"nodeType":"YulExpressionStatement","src":"4790:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4861:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"4868:3:46","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4857:3:46"},"nodeType":"YulFunctionCall","src":"4857:15:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4891:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"4895:3:46","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4887:3:46"},"nodeType":"YulFunctionCall","src":"4887:12:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4874:12:46"},"nodeType":"YulFunctionCall","src":"4874:26:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4850:6:46"},"nodeType":"YulFunctionCall","src":"4850:51:46"},"nodeType":"YulExpressionStatement","src":"4850:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4921:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"4928:3:46","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4917:3:46"},"nodeType":"YulFunctionCall","src":"4917:15:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4951:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"4955:3:46","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4947:3:46"},"nodeType":"YulFunctionCall","src":"4947:12:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4934:12:46"},"nodeType":"YulFunctionCall","src":"4934:26:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4910:6:46"},"nodeType":"YulFunctionCall","src":"4910:51:46"},"nodeType":"YulExpressionStatement","src":"4910:51:46"},{"nodeType":"YulVariableDeclaration","src":"4970:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4980:3:46","type":"","value":"256"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4974:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4992:41:46","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5025:2:46"},{"name":"_3","nodeType":"YulIdentifier","src":"5029:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5021:3:46"},"nodeType":"YulFunctionCall","src":"5021:11:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5008:12:46"},"nodeType":"YulFunctionCall","src":"5008:25:46"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"4996:8:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"5062:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5071:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5074:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5064:6:46"},"nodeType":"YulFunctionCall","src":"5064:12:46"},"nodeType":"YulExpressionStatement","src":"5064:12:46"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"5048:8:46"},{"name":"_1","nodeType":"YulIdentifier","src":"5058:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5045:2:46"},"nodeType":"YulFunctionCall","src":"5045:16:46"},"nodeType":"YulIf","src":"5042:36:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5098:5:46"},{"name":"_3","nodeType":"YulIdentifier","src":"5105:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5094:3:46"},"nodeType":"YulFunctionCall","src":"5094:14:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5143:2:46"},{"name":"offset_1","nodeType":"YulIdentifier","src":"5147:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5139:3:46"},"nodeType":"YulFunctionCall","src":"5139:17:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5158:7:46"}],"functionName":{"name":"abi_decode_array_bytes32_dyn","nodeType":"YulIdentifier","src":"5110:28:46"},"nodeType":"YulFunctionCall","src":"5110:56:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5087:6:46"},"nodeType":"YulFunctionCall","src":"5087:80:46"},"nodeType":"YulExpressionStatement","src":"5087:80:46"},{"nodeType":"YulVariableDeclaration","src":"5176:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5186:3:46","type":"","value":"288"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"5180:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5198:41:46","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5231:2:46"},{"name":"_4","nodeType":"YulIdentifier","src":"5235:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5227:3:46"},"nodeType":"YulFunctionCall","src":"5227:11:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5214:12:46"},"nodeType":"YulFunctionCall","src":"5214:25:46"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"5202:8:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"5268:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5277:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5280:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5270:6:46"},"nodeType":"YulFunctionCall","src":"5270:12:46"},"nodeType":"YulExpressionStatement","src":"5270:12:46"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"5254:8:46"},{"name":"_1","nodeType":"YulIdentifier","src":"5264:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5251:2:46"},"nodeType":"YulFunctionCall","src":"5251:16:46"},"nodeType":"YulIf","src":"5248:36:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5304:5:46"},{"name":"_4","nodeType":"YulIdentifier","src":"5311:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5300:3:46"},"nodeType":"YulFunctionCall","src":"5300:14:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5349:2:46"},{"name":"offset_2","nodeType":"YulIdentifier","src":"5353:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5345:3:46"},"nodeType":"YulFunctionCall","src":"5345:17:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5364:7:46"}],"functionName":{"name":"abi_decode_array_address_dyn","nodeType":"YulIdentifier","src":"5316:28:46"},"nodeType":"YulFunctionCall","src":"5316:56:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5293:6:46"},"nodeType":"YulFunctionCall","src":"5293:80:46"},"nodeType":"YulExpressionStatement","src":"5293:80:46"},{"nodeType":"YulVariableDeclaration","src":"5382:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5392:3:46","type":"","value":"320"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"5386:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5404:41:46","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5437:2:46"},{"name":"_5","nodeType":"YulIdentifier","src":"5441:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5433:3:46"},"nodeType":"YulFunctionCall","src":"5433:11:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5420:12:46"},"nodeType":"YulFunctionCall","src":"5420:25:46"},"variables":[{"name":"offset_3","nodeType":"YulTypedName","src":"5408:8:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"5474:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5483:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5486:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5476:6:46"},"nodeType":"YulFunctionCall","src":"5476:12:46"},"nodeType":"YulExpressionStatement","src":"5476:12:46"}]},"condition":{"arguments":[{"name":"offset_3","nodeType":"YulIdentifier","src":"5460:8:46"},{"name":"_1","nodeType":"YulIdentifier","src":"5470:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5457:2:46"},"nodeType":"YulFunctionCall","src":"5457:16:46"},"nodeType":"YulIf","src":"5454:36:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5510:5:46"},{"name":"_5","nodeType":"YulIdentifier","src":"5517:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5506:3:46"},"nodeType":"YulFunctionCall","src":"5506:14:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5544:2:46"},{"name":"offset_3","nodeType":"YulIdentifier","src":"5548:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5540:3:46"},"nodeType":"YulFunctionCall","src":"5540:17:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5559:7:46"}],"functionName":{"name":"abi_decode_string","nodeType":"YulIdentifier","src":"5522:17:46"},"nodeType":"YulFunctionCall","src":"5522:45:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5499:6:46"},"nodeType":"YulFunctionCall","src":"5499:69:46"},"nodeType":"YulExpressionStatement","src":"5499:69:46"},{"nodeType":"YulVariableDeclaration","src":"5577:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5587:3:46","type":"","value":"352"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"5581:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5599:41:46","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5632:2:46"},{"name":"_6","nodeType":"YulIdentifier","src":"5636:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5628:3:46"},"nodeType":"YulFunctionCall","src":"5628:11:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5615:12:46"},"nodeType":"YulFunctionCall","src":"5615:25:46"},"variables":[{"name":"offset_4","nodeType":"YulTypedName","src":"5603:8:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"5669:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5678:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5681:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5671:6:46"},"nodeType":"YulFunctionCall","src":"5671:12:46"},"nodeType":"YulExpressionStatement","src":"5671:12:46"}]},"condition":{"arguments":[{"name":"offset_4","nodeType":"YulIdentifier","src":"5655:8:46"},{"name":"_1","nodeType":"YulIdentifier","src":"5665:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5652:2:46"},"nodeType":"YulFunctionCall","src":"5652:16:46"},"nodeType":"YulIf","src":"5649:36:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5705:5:46"},{"name":"_6","nodeType":"YulIdentifier","src":"5712:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5701:3:46"},"nodeType":"YulFunctionCall","src":"5701:14:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5739:2:46"},{"name":"offset_4","nodeType":"YulIdentifier","src":"5743:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5735:3:46"},"nodeType":"YulFunctionCall","src":"5735:17:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5754:7:46"}],"functionName":{"name":"abi_decode_string","nodeType":"YulIdentifier","src":"5717:17:46"},"nodeType":"YulFunctionCall","src":"5717:45:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5694:6:46"},"nodeType":"YulFunctionCall","src":"5694:69:46"},"nodeType":"YulExpressionStatement","src":"5694:69:46"},{"nodeType":"YulVariableDeclaration","src":"5772:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5782:3:46","type":"","value":"384"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"5776:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5794:41:46","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5827:2:46"},{"name":"_7","nodeType":"YulIdentifier","src":"5831:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5823:3:46"},"nodeType":"YulFunctionCall","src":"5823:11:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5810:12:46"},"nodeType":"YulFunctionCall","src":"5810:25:46"},"variables":[{"name":"offset_5","nodeType":"YulTypedName","src":"5798:8:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"5864:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5873:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5876:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5866:6:46"},"nodeType":"YulFunctionCall","src":"5866:12:46"},"nodeType":"YulExpressionStatement","src":"5866:12:46"}]},"condition":{"arguments":[{"name":"offset_5","nodeType":"YulIdentifier","src":"5850:8:46"},{"name":"_1","nodeType":"YulIdentifier","src":"5860:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5847:2:46"},"nodeType":"YulFunctionCall","src":"5847:16:46"},"nodeType":"YulIf","src":"5844:36:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5900:5:46"},{"name":"_7","nodeType":"YulIdentifier","src":"5907:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5896:3:46"},"nodeType":"YulFunctionCall","src":"5896:14:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5934:2:46"},{"name":"offset_5","nodeType":"YulIdentifier","src":"5938:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5930:3:46"},"nodeType":"YulFunctionCall","src":"5930:17:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5949:7:46"}],"functionName":{"name":"abi_decode_string","nodeType":"YulIdentifier","src":"5912:17:46"},"nodeType":"YulFunctionCall","src":"5912:45:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5889:6:46"},"nodeType":"YulFunctionCall","src":"5889:69:46"},"nodeType":"YulExpressionStatement","src":"5889:69:46"},{"nodeType":"YulVariableDeclaration","src":"5967:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"5977:3:46","type":"","value":"416"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"5971:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5989:41:46","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6022:2:46"},{"name":"_8","nodeType":"YulIdentifier","src":"6026:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6018:3:46"},"nodeType":"YulFunctionCall","src":"6018:11:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6005:12:46"},"nodeType":"YulFunctionCall","src":"6005:25:46"},"variables":[{"name":"offset_6","nodeType":"YulTypedName","src":"5993:8:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"6059:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6068:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6071:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6061:6:46"},"nodeType":"YulFunctionCall","src":"6061:12:46"},"nodeType":"YulExpressionStatement","src":"6061:12:46"}]},"condition":{"arguments":[{"name":"offset_6","nodeType":"YulIdentifier","src":"6045:8:46"},{"name":"_1","nodeType":"YulIdentifier","src":"6055:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6042:2:46"},"nodeType":"YulFunctionCall","src":"6042:16:46"},"nodeType":"YulIf","src":"6039:36:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6095:5:46"},{"name":"_8","nodeType":"YulIdentifier","src":"6102:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6091:3:46"},"nodeType":"YulFunctionCall","src":"6091:14:46"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6129:2:46"},{"name":"offset_6","nodeType":"YulIdentifier","src":"6133:8:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6125:3:46"},"nodeType":"YulFunctionCall","src":"6125:17:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6144:7:46"}],"functionName":{"name":"abi_decode_string","nodeType":"YulIdentifier","src":"6107:17:46"},"nodeType":"YulFunctionCall","src":"6107:45:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6084:6:46"},"nodeType":"YulFunctionCall","src":"6084:69:46"},"nodeType":"YulExpressionStatement","src":"6084:69:46"},{"nodeType":"YulAssignment","src":"6162:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"6172:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6162:6:46"}]}]},"name":"abi_decode_tuple_t_struct$_CreateChallengeParams_$12717_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4091:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4102:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4114:6:46","type":""}],"src":"4015:2168:46"},{"body":{"nodeType":"YulBlock","src":"6297:76:46","statements":[{"nodeType":"YulAssignment","src":"6307:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6319:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6330:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6315:3:46"},"nodeType":"YulFunctionCall","src":"6315:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6307:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6349:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"6360:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6342:6:46"},"nodeType":"YulFunctionCall","src":"6342:25:46"},"nodeType":"YulExpressionStatement","src":"6342:25:46"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6266:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6277:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6288:4:46","type":""}],"src":"6188:185:46"},{"body":{"nodeType":"YulBlock","src":"6479:102:46","statements":[{"nodeType":"YulAssignment","src":"6489:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6501:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6512:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6497:3:46"},"nodeType":"YulFunctionCall","src":"6497:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6489:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6531:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6546:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6562:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6567:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6558:3:46"},"nodeType":"YulFunctionCall","src":"6558:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"6571:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6554:3:46"},"nodeType":"YulFunctionCall","src":"6554:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6542:3:46"},"nodeType":"YulFunctionCall","src":"6542:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6524:6:46"},"nodeType":"YulFunctionCall","src":"6524:51:46"},"nodeType":"YulExpressionStatement","src":"6524:51:46"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6448:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6459:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6470:4:46","type":""}],"src":"6378:203:46"},{"body":{"nodeType":"YulBlock","src":"6715:145:46","statements":[{"nodeType":"YulAssignment","src":"6725:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6737:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6748:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6733:3:46"},"nodeType":"YulFunctionCall","src":"6733:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6725:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6767:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"6778:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6760:6:46"},"nodeType":"YulFunctionCall","src":"6760:25:46"},"nodeType":"YulExpressionStatement","src":"6760:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6805:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6816:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6801:3:46"},"nodeType":"YulFunctionCall","src":"6801:18:46"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6825:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6841:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6846:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6837:3:46"},"nodeType":"YulFunctionCall","src":"6837:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"6850:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6833:3:46"},"nodeType":"YulFunctionCall","src":"6833:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6821:3:46"},"nodeType":"YulFunctionCall","src":"6821:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6794:6:46"},"nodeType":"YulFunctionCall","src":"6794:60:46"},"nodeType":"YulExpressionStatement","src":"6794:60:46"}]},"name":"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6676:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6687:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6695:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6706:4:46","type":""}],"src":"6586:274:46"},{"body":{"nodeType":"YulBlock","src":"6897:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6914:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6921:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6926:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6917:3:46"},"nodeType":"YulFunctionCall","src":"6917:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6907:6:46"},"nodeType":"YulFunctionCall","src":"6907:31:46"},"nodeType":"YulExpressionStatement","src":"6907:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6954:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6957:4:46","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6947:6:46"},"nodeType":"YulFunctionCall","src":"6947:15:46"},"nodeType":"YulExpressionStatement","src":"6947:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6978:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6981:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6971:6:46"},"nodeType":"YulFunctionCall","src":"6971:15:46"},"nodeType":"YulExpressionStatement","src":"6971:15:46"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"6865:127:46"},{"body":{"nodeType":"YulBlock","src":"7029:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7046:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7053:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"7058:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7049:3:46"},"nodeType":"YulFunctionCall","src":"7049:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7039:6:46"},"nodeType":"YulFunctionCall","src":"7039:31:46"},"nodeType":"YulExpressionStatement","src":"7039:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7086:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7089:4:46","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7079:6:46"},"nodeType":"YulFunctionCall","src":"7079:15:46"},"nodeType":"YulExpressionStatement","src":"7079:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7110:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7113:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7103:6:46"},"nodeType":"YulFunctionCall","src":"7103:15:46"},"nodeType":"YulExpressionStatement","src":"7103:15:46"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6997:127:46"},{"body":{"nodeType":"YulBlock","src":"7178:79:46","statements":[{"nodeType":"YulAssignment","src":"7188:17:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7200:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"7203:1:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7196:3:46"},"nodeType":"YulFunctionCall","src":"7196:9:46"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"7188:4:46"}]},{"body":{"nodeType":"YulBlock","src":"7229:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7231:16:46"},"nodeType":"YulFunctionCall","src":"7231:18:46"},"nodeType":"YulExpressionStatement","src":"7231:18:46"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"7220:4:46"},{"name":"x","nodeType":"YulIdentifier","src":"7226:1:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7217:2:46"},"nodeType":"YulFunctionCall","src":"7217:11:46"},"nodeType":"YulIf","src":"7214:37:46"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"7160:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"7163:1:46","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"7169:4:46","type":""}],"src":"7129:128:46"},{"body":{"nodeType":"YulBlock","src":"7391:145:46","statements":[{"nodeType":"YulAssignment","src":"7401:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7413:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7424:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7409:3:46"},"nodeType":"YulFunctionCall","src":"7409:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7401:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7443:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7458:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7474:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"7479:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7470:3:46"},"nodeType":"YulFunctionCall","src":"7470:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"7483:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7466:3:46"},"nodeType":"YulFunctionCall","src":"7466:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7454:3:46"},"nodeType":"YulFunctionCall","src":"7454:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7436:6:46"},"nodeType":"YulFunctionCall","src":"7436:51:46"},"nodeType":"YulExpressionStatement","src":"7436:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7507:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7518:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7503:3:46"},"nodeType":"YulFunctionCall","src":"7503:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"7523:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7496:6:46"},"nodeType":"YulFunctionCall","src":"7496:34:46"},"nodeType":"YulExpressionStatement","src":"7496:34:46"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7352:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7363:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7371:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7382:4:46","type":""}],"src":"7262:274:46"},{"body":{"nodeType":"YulBlock","src":"7598:107:46","statements":[{"nodeType":"YulAssignment","src":"7608:22:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7623:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7617:5:46"},"nodeType":"YulFunctionCall","src":"7617:13:46"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7608:5:46"}]},{"body":{"nodeType":"YulBlock","src":"7683:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7692:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7695:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7685:6:46"},"nodeType":"YulFunctionCall","src":"7685:12:46"},"nodeType":"YulExpressionStatement","src":"7685:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7652:5:46"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7673:5:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7666:6:46"},"nodeType":"YulFunctionCall","src":"7666:13:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7659:6:46"},"nodeType":"YulFunctionCall","src":"7659:21:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7649:2:46"},"nodeType":"YulFunctionCall","src":"7649:32:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7642:6:46"},"nodeType":"YulFunctionCall","src":"7642:40:46"},"nodeType":"YulIf","src":"7639:60:46"}]},"name":"abi_decode_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7577:6:46","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"7588:5:46","type":""}],"src":"7541:164:46"},{"body":{"nodeType":"YulBlock","src":"7788:124:46","statements":[{"body":{"nodeType":"YulBlock","src":"7834:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7843:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7846:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7836:6:46"},"nodeType":"YulFunctionCall","src":"7836:12:46"},"nodeType":"YulExpressionStatement","src":"7836:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7809:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"7818:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7805:3:46"},"nodeType":"YulFunctionCall","src":"7805:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"7830:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7801:3:46"},"nodeType":"YulFunctionCall","src":"7801:32:46"},"nodeType":"YulIf","src":"7798:52:46"},{"nodeType":"YulAssignment","src":"7859:47:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7896:9:46"}],"functionName":{"name":"abi_decode_bool_fromMemory","nodeType":"YulIdentifier","src":"7869:26:46"},"nodeType":"YulFunctionCall","src":"7869:37:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7859:6:46"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7754:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7765:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7777:6:46","type":""}],"src":"7710:202:46"},{"body":{"nodeType":"YulBlock","src":"7949:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7966:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7973:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"7978:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7969:3:46"},"nodeType":"YulFunctionCall","src":"7969:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7959:6:46"},"nodeType":"YulFunctionCall","src":"7959:31:46"},"nodeType":"YulExpressionStatement","src":"7959:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8006:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8009:4:46","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7999:6:46"},"nodeType":"YulFunctionCall","src":"7999:15:46"},"nodeType":"YulExpressionStatement","src":"7999:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8030:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8033:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8023:6:46"},"nodeType":"YulFunctionCall","src":"8023:15:46"},"nodeType":"YulExpressionStatement","src":"8023:15:46"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"7917:127:46"},{"body":{"nodeType":"YulBlock","src":"8096:88:46","statements":[{"body":{"nodeType":"YulBlock","src":"8127:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8129:16:46"},"nodeType":"YulFunctionCall","src":"8129:18:46"},"nodeType":"YulExpressionStatement","src":"8129:18:46"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8112:5:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8123:1:46","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8119:3:46"},"nodeType":"YulFunctionCall","src":"8119:6:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8109:2:46"},"nodeType":"YulFunctionCall","src":"8109:17:46"},"nodeType":"YulIf","src":"8106:43:46"},{"nodeType":"YulAssignment","src":"8158:20:46","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8169:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"8176:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8165:3:46"},"nodeType":"YulFunctionCall","src":"8165:13:46"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8158:3:46"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8078:5:46","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8088:3:46","type":""}],"src":"8049:135:46"},{"body":{"nodeType":"YulBlock","src":"8290:76:46","statements":[{"nodeType":"YulAssignment","src":"8300:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8312:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"8323:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8308:3:46"},"nodeType":"YulFunctionCall","src":"8308:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8300:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8342:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"8353:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8335:6:46"},"nodeType":"YulFunctionCall","src":"8335:25:46"},"nodeType":"YulExpressionStatement","src":"8335:25:46"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8259:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8270:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8281:4:46","type":""}],"src":"8189:177:46"},{"body":{"nodeType":"YulBlock","src":"8500:119:46","statements":[{"nodeType":"YulAssignment","src":"8510:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8522:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"8533:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8518:3:46"},"nodeType":"YulFunctionCall","src":"8518:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8510:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8552:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"8563:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8545:6:46"},"nodeType":"YulFunctionCall","src":"8545:25:46"},"nodeType":"YulExpressionStatement","src":"8545:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8590:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"8601:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8586:3:46"},"nodeType":"YulFunctionCall","src":"8586:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"8606:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8579:6:46"},"nodeType":"YulFunctionCall","src":"8579:34:46"},"nodeType":"YulExpressionStatement","src":"8579:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8461:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8472:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8480:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8491:4:46","type":""}],"src":"8371:248:46"},{"body":{"nodeType":"YulBlock","src":"8672:77:46","statements":[{"nodeType":"YulAssignment","src":"8682:16:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8693:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"8696:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8689:3:46"},"nodeType":"YulFunctionCall","src":"8689:9:46"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"8682:3:46"}]},{"body":{"nodeType":"YulBlock","src":"8721:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8723:16:46"},"nodeType":"YulFunctionCall","src":"8723:18:46"},"nodeType":"YulExpressionStatement","src":"8723:18:46"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8713:1:46"},{"name":"sum","nodeType":"YulIdentifier","src":"8716:3:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8710:2:46"},"nodeType":"YulFunctionCall","src":"8710:10:46"},"nodeType":"YulIf","src":"8707:36:46"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8655:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"8658:1:46","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"8664:3:46","type":""}],"src":"8624:125:46"},{"body":{"nodeType":"YulBlock","src":"8809:325:46","statements":[{"nodeType":"YulAssignment","src":"8819:22:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8833:1:46","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"8836:4:46"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8829:3:46"},"nodeType":"YulFunctionCall","src":"8829:12:46"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8819:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"8850:38:46","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"8880:4:46"},{"kind":"number","nodeType":"YulLiteral","src":"8886:1:46","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8876:3:46"},"nodeType":"YulFunctionCall","src":"8876:12:46"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"8854:18:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"8927:31:46","statements":[{"nodeType":"YulAssignment","src":"8929:27:46","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8943:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"8951:4:46","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8939:3:46"},"nodeType":"YulFunctionCall","src":"8939:17:46"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8929:6:46"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8907:18:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8900:6:46"},"nodeType":"YulFunctionCall","src":"8900:26:46"},"nodeType":"YulIf","src":"8897:61:46"},{"body":{"nodeType":"YulBlock","src":"9017:111:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9038:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9045:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9050:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9041:3:46"},"nodeType":"YulFunctionCall","src":"9041:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9031:6:46"},"nodeType":"YulFunctionCall","src":"9031:31:46"},"nodeType":"YulExpressionStatement","src":"9031:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9082:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9085:4:46","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9075:6:46"},"nodeType":"YulFunctionCall","src":"9075:15:46"},"nodeType":"YulExpressionStatement","src":"9075:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9110:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9113:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9103:6:46"},"nodeType":"YulFunctionCall","src":"9103:15:46"},"nodeType":"YulExpressionStatement","src":"9103:15:46"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8973:18:46"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8996:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"9004:2:46","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8993:2:46"},"nodeType":"YulFunctionCall","src":"8993:14:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8970:2:46"},"nodeType":"YulFunctionCall","src":"8970:38:46"},"nodeType":"YulIf","src":"8967:161:46"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"8789:4:46","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"8798:6:46","type":""}],"src":"8754:380:46"},{"body":{"nodeType":"YulBlock","src":"9195:65:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9212:1:46","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"9215:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9205:6:46"},"nodeType":"YulFunctionCall","src":"9205:14:46"},"nodeType":"YulExpressionStatement","src":"9205:14:46"},{"nodeType":"YulAssignment","src":"9228:26:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9246:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9249:4:46","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"9236:9:46"},"nodeType":"YulFunctionCall","src":"9236:18:46"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"9228:4:46"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"9178:3:46","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"9186:4:46","type":""}],"src":"9139:121:46"},{"body":{"nodeType":"YulBlock","src":"9346:464:46","statements":[{"body":{"nodeType":"YulBlock","src":"9379:425:46","statements":[{"nodeType":"YulVariableDeclaration","src":"9393:11:46","value":{"kind":"number","nodeType":"YulLiteral","src":"9403:1:46","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9397:2:46","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9424:2:46"},{"name":"array","nodeType":"YulIdentifier","src":"9428:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9417:6:46"},"nodeType":"YulFunctionCall","src":"9417:17:46"},"nodeType":"YulExpressionStatement","src":"9417:17:46"},{"nodeType":"YulVariableDeclaration","src":"9447:31:46","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9469:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"9473:4:46","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"9459:9:46"},"nodeType":"YulFunctionCall","src":"9459:19:46"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"9451:4:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9491:57:46","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"9514:4:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9524:1:46","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"9531:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"9543:2:46","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9527:3:46"},"nodeType":"YulFunctionCall","src":"9527:19:46"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"9520:3:46"},"nodeType":"YulFunctionCall","src":"9520:27:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9510:3:46"},"nodeType":"YulFunctionCall","src":"9510:38:46"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"9495:11:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"9585:23:46","statements":[{"nodeType":"YulAssignment","src":"9587:19:46","value":{"name":"data","nodeType":"YulIdentifier","src":"9602:4:46"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"9587:11:46"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"9567:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"9579:4:46","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9564:2:46"},"nodeType":"YulFunctionCall","src":"9564:20:46"},"nodeType":"YulIf","src":"9561:47:46"},{"nodeType":"YulVariableDeclaration","src":"9621:41:46","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"9635:4:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9645:1:46","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"9652:3:46"},{"kind":"number","nodeType":"YulLiteral","src":"9657:2:46","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9648:3:46"},"nodeType":"YulFunctionCall","src":"9648:12:46"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"9641:3:46"},"nodeType":"YulFunctionCall","src":"9641:20:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9631:3:46"},"nodeType":"YulFunctionCall","src":"9631:31:46"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9625:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9675:24:46","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"9688:11:46"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"9679:5:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"9773:21:46","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"9782:5:46"},{"name":"_1","nodeType":"YulIdentifier","src":"9789:2:46"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"9775:6:46"},"nodeType":"YulFunctionCall","src":"9775:17:46"},"nodeType":"YulExpressionStatement","src":"9775:17:46"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"9723:5:46"},{"name":"_2","nodeType":"YulIdentifier","src":"9730:2:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9720:2:46"},"nodeType":"YulFunctionCall","src":"9720:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9734:26:46","statements":[{"nodeType":"YulAssignment","src":"9736:22:46","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"9749:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"9756:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9745:3:46"},"nodeType":"YulFunctionCall","src":"9745:13:46"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"9736:5:46"}]}]},"pre":{"nodeType":"YulBlock","src":"9716:3:46","statements":[]},"src":"9712:82:46"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"9362:3:46"},{"kind":"number","nodeType":"YulLiteral","src":"9367:2:46","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9359:2:46"},"nodeType":"YulFunctionCall","src":"9359:11:46"},"nodeType":"YulIf","src":"9356:448:46"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"9318:5:46","type":""},{"name":"len","nodeType":"YulTypedName","src":"9325:3:46","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"9330:10:46","type":""}],"src":"9265:545:46"},{"body":{"nodeType":"YulBlock","src":"9900:81:46","statements":[{"nodeType":"YulAssignment","src":"9910:65:46","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"9925:4:46"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9943:1:46","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"9946:3:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9939:3:46"},"nodeType":"YulFunctionCall","src":"9939:11:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9956:1:46","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9952:3:46"},"nodeType":"YulFunctionCall","src":"9952:6:46"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"9935:3:46"},"nodeType":"YulFunctionCall","src":"9935:24:46"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9931:3:46"},"nodeType":"YulFunctionCall","src":"9931:29:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9921:3:46"},"nodeType":"YulFunctionCall","src":"9921:40:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9967:1:46","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"9970:3:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9963:3:46"},"nodeType":"YulFunctionCall","src":"9963:11:46"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"9918:2:46"},"nodeType":"YulFunctionCall","src":"9918:57:46"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"9910:4:46"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"9877:4:46","type":""},{"name":"len","nodeType":"YulTypedName","src":"9883:3:46","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"9891:4:46","type":""}],"src":"9815:166:46"},{"body":{"nodeType":"YulBlock","src":"10082:1256:46","statements":[{"nodeType":"YulVariableDeclaration","src":"10092:24:46","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10112:3:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10106:5:46"},"nodeType":"YulFunctionCall","src":"10106:10:46"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"10096:6:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"10159:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"10161:16:46"},"nodeType":"YulFunctionCall","src":"10161:18:46"},"nodeType":"YulExpressionStatement","src":"10161:18:46"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"10131:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10147:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"10151:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10143:3:46"},"nodeType":"YulFunctionCall","src":"10143:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"10155:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10139:3:46"},"nodeType":"YulFunctionCall","src":"10139:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10128:2:46"},"nodeType":"YulFunctionCall","src":"10128:30:46"},"nodeType":"YulIf","src":"10125:56:46"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"10234:4:46"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"10272:4:46"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"10266:5:46"},"nodeType":"YulFunctionCall","src":"10266:11:46"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"10240:25:46"},"nodeType":"YulFunctionCall","src":"10240:38:46"},{"name":"newLen","nodeType":"YulIdentifier","src":"10280:6:46"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"10190:43:46"},"nodeType":"YulFunctionCall","src":"10190:97:46"},"nodeType":"YulExpressionStatement","src":"10190:97:46"},{"nodeType":"YulVariableDeclaration","src":"10296:18:46","value":{"kind":"number","nodeType":"YulLiteral","src":"10313:1:46","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"10300:9:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"10323:23:46","value":{"kind":"number","nodeType":"YulLiteral","src":"10342:4:46","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"10327:11:46","type":""}]},{"nodeType":"YulAssignment","src":"10355:24:46","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"10368:11:46"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"10355:9:46"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"10425:656:46","statements":[{"nodeType":"YulVariableDeclaration","src":"10439:35:46","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"10458:6:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10470:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10466:3:46"},"nodeType":"YulFunctionCall","src":"10466:7:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10454:3:46"},"nodeType":"YulFunctionCall","src":"10454:20:46"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"10443:7:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"10487:49:46","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"10531:4:46"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"10501:29:46"},"nodeType":"YulFunctionCall","src":"10501:35:46"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"10491:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"10549:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"10558:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"10553:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"10636:172:46","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"10661:6:46"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10679:3:46"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"10684:9:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10675:3:46"},"nodeType":"YulFunctionCall","src":"10675:19:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10669:5:46"},"nodeType":"YulFunctionCall","src":"10669:26:46"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"10654:6:46"},"nodeType":"YulFunctionCall","src":"10654:42:46"},"nodeType":"YulExpressionStatement","src":"10654:42:46"},{"nodeType":"YulAssignment","src":"10713:24:46","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"10727:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"10735:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10723:3:46"},"nodeType":"YulFunctionCall","src":"10723:14:46"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"10713:6:46"}]},{"nodeType":"YulAssignment","src":"10754:40:46","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"10771:9:46"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"10782:11:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10767:3:46"},"nodeType":"YulFunctionCall","src":"10767:27:46"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"10754:9:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"10583:1:46"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"10586:7:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10580:2:46"},"nodeType":"YulFunctionCall","src":"10580:14:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"10595:28:46","statements":[{"nodeType":"YulAssignment","src":"10597:24:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"10606:1:46"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"10609:11:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10602:3:46"},"nodeType":"YulFunctionCall","src":"10602:19:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"10597:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"10576:3:46","statements":[]},"src":"10572:236:46"},{"body":{"nodeType":"YulBlock","src":"10856:166:46","statements":[{"nodeType":"YulVariableDeclaration","src":"10874:43:46","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10901:3:46"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"10906:9:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10897:3:46"},"nodeType":"YulFunctionCall","src":"10897:19:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10891:5:46"},"nodeType":"YulFunctionCall","src":"10891:26:46"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"10878:9:46","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"10941:6:46"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"10953:9:46"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10980:1:46","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"10983:6:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10976:3:46"},"nodeType":"YulFunctionCall","src":"10976:14:46"},{"kind":"number","nodeType":"YulLiteral","src":"10992:3:46","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10972:3:46"},"nodeType":"YulFunctionCall","src":"10972:24:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11002:1:46","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10998:3:46"},"nodeType":"YulFunctionCall","src":"10998:6:46"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"10968:3:46"},"nodeType":"YulFunctionCall","src":"10968:37:46"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10964:3:46"},"nodeType":"YulFunctionCall","src":"10964:42:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10949:3:46"},"nodeType":"YulFunctionCall","src":"10949:58:46"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"10934:6:46"},"nodeType":"YulFunctionCall","src":"10934:74:46"},"nodeType":"YulExpressionStatement","src":"10934:74:46"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"10827:7:46"},{"name":"newLen","nodeType":"YulIdentifier","src":"10836:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10824:2:46"},"nodeType":"YulFunctionCall","src":"10824:19:46"},"nodeType":"YulIf","src":"10821:201:46"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"11042:4:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11056:1:46","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"11059:6:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11052:3:46"},"nodeType":"YulFunctionCall","src":"11052:14:46"},{"kind":"number","nodeType":"YulLiteral","src":"11068:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11048:3:46"},"nodeType":"YulFunctionCall","src":"11048:22:46"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"11035:6:46"},"nodeType":"YulFunctionCall","src":"11035:36:46"},"nodeType":"YulExpressionStatement","src":"11035:36:46"}]},"nodeType":"YulCase","src":"10418:663:46","value":{"kind":"number","nodeType":"YulLiteral","src":"10423:1:46","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"11098:234:46","statements":[{"nodeType":"YulVariableDeclaration","src":"11112:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"11125:1:46","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11116:5:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"11161:67:46","statements":[{"nodeType":"YulAssignment","src":"11179:35:46","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11198:3:46"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"11203:9:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11194:3:46"},"nodeType":"YulFunctionCall","src":"11194:19:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11188:5:46"},"nodeType":"YulFunctionCall","src":"11188:26:46"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"11179:5:46"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"11142:6:46"},"nodeType":"YulIf","src":"11139:89:46"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"11248:4:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11307:5:46"},{"name":"newLen","nodeType":"YulIdentifier","src":"11314:6:46"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"11254:52:46"},"nodeType":"YulFunctionCall","src":"11254:67:46"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"11241:6:46"},"nodeType":"YulFunctionCall","src":"11241:81:46"},"nodeType":"YulExpressionStatement","src":"11241:81:46"}]},"nodeType":"YulCase","src":"11090:242:46","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"10398:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"10406:2:46","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10395:2:46"},"nodeType":"YulFunctionCall","src":"10395:14:46"},"nodeType":"YulSwitch","src":"10388:944:46"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"10067:4:46","type":""},{"name":"src","nodeType":"YulTypedName","src":"10073:3:46","type":""}],"src":"9986:1352:46"},{"body":{"nodeType":"YulBlock","src":"11389:171:46","statements":[{"body":{"nodeType":"YulBlock","src":"11420:111:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11441:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11448:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"11453:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11444:3:46"},"nodeType":"YulFunctionCall","src":"11444:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11434:6:46"},"nodeType":"YulFunctionCall","src":"11434:31:46"},"nodeType":"YulExpressionStatement","src":"11434:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11485:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11488:4:46","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11478:6:46"},"nodeType":"YulFunctionCall","src":"11478:15:46"},"nodeType":"YulExpressionStatement","src":"11478:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11513:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11516:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11506:6:46"},"nodeType":"YulFunctionCall","src":"11506:15:46"},"nodeType":"YulExpressionStatement","src":"11506:15:46"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"11409:1:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11402:6:46"},"nodeType":"YulFunctionCall","src":"11402:9:46"},"nodeType":"YulIf","src":"11399:132:46"},{"nodeType":"YulAssignment","src":"11540:14:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11549:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"11552:1:46"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"11545:3:46"},"nodeType":"YulFunctionCall","src":"11545:9:46"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"11540:1:46"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"11374:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"11377:1:46","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"11383:1:46","type":""}],"src":"11343:217:46"},{"body":{"nodeType":"YulBlock","src":"11722:218:46","statements":[{"nodeType":"YulAssignment","src":"11732:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11744:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"11755:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11740:3:46"},"nodeType":"YulFunctionCall","src":"11740:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11732:4:46"}]},{"nodeType":"YulVariableDeclaration","src":"11767:29:46","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11785:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"11790:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11781:3:46"},"nodeType":"YulFunctionCall","src":"11781:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"11794:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11777:3:46"},"nodeType":"YulFunctionCall","src":"11777:19:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11771:2:46","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11812:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11827:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"11835:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11823:3:46"},"nodeType":"YulFunctionCall","src":"11823:15:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11805:6:46"},"nodeType":"YulFunctionCall","src":"11805:34:46"},"nodeType":"YulExpressionStatement","src":"11805:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11859:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"11870:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11855:3:46"},"nodeType":"YulFunctionCall","src":"11855:18:46"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11879:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"11887:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11875:3:46"},"nodeType":"YulFunctionCall","src":"11875:15:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11848:6:46"},"nodeType":"YulFunctionCall","src":"11848:43:46"},"nodeType":"YulExpressionStatement","src":"11848:43:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11911:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"11922:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11907:3:46"},"nodeType":"YulFunctionCall","src":"11907:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"11927:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11900:6:46"},"nodeType":"YulFunctionCall","src":"11900:34:46"},"nodeType":"YulExpressionStatement","src":"11900:34:46"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11675:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11686:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11694:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11702:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11713:4:46","type":""}],"src":"11565:375:46"},{"body":{"nodeType":"YulBlock","src":"11977:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11994:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12001:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"12006:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11997:3:46"},"nodeType":"YulFunctionCall","src":"11997:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11987:6:46"},"nodeType":"YulFunctionCall","src":"11987:31:46"},"nodeType":"YulExpressionStatement","src":"11987:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12034:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12037:4:46","type":"","value":"0x31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12027:6:46"},"nodeType":"YulFunctionCall","src":"12027:15:46"},"nodeType":"YulExpressionStatement","src":"12027:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12058:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12061:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12051:6:46"},"nodeType":"YulFunctionCall","src":"12051:15:46"},"nodeType":"YulExpressionStatement","src":"12051:15:46"}]},"name":"panic_error_0x31","nodeType":"YulFunctionDefinition","src":"11945:127:46"},{"body":{"nodeType":"YulBlock","src":"12158:103:46","statements":[{"body":{"nodeType":"YulBlock","src":"12204:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12213:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12216:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12206:6:46"},"nodeType":"YulFunctionCall","src":"12206:12:46"},"nodeType":"YulExpressionStatement","src":"12206:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12179:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"12188:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12175:3:46"},"nodeType":"YulFunctionCall","src":"12175:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"12200:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12171:3:46"},"nodeType":"YulFunctionCall","src":"12171:32:46"},"nodeType":"YulIf","src":"12168:52:46"},{"nodeType":"YulAssignment","src":"12229:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12245:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12239:5:46"},"nodeType":"YulFunctionCall","src":"12239:16:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12229:6:46"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12124:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12135:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12147:6:46","type":""}],"src":"12077:184:46"},{"body":{"nodeType":"YulBlock","src":"12367:76:46","statements":[{"nodeType":"YulAssignment","src":"12377:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12389:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12400:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12385:3:46"},"nodeType":"YulFunctionCall","src":"12385:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12377:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12419:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"12430:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12412:6:46"},"nodeType":"YulFunctionCall","src":"12412:25:46"},"nodeType":"YulExpressionStatement","src":"12412:25:46"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12336:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12347:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12358:4:46","type":""}],"src":"12266:177:46"},{"body":{"nodeType":"YulBlock","src":"12500:116:46","statements":[{"nodeType":"YulAssignment","src":"12510:20:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12525:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"12528:1:46"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12521:3:46"},"nodeType":"YulFunctionCall","src":"12521:9:46"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"12510:7:46"}]},{"body":{"nodeType":"YulBlock","src":"12588:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12590:16:46"},"nodeType":"YulFunctionCall","src":"12590:18:46"},"nodeType":"YulExpressionStatement","src":"12590:18:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12559:1:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12552:6:46"},"nodeType":"YulFunctionCall","src":"12552:9:46"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"12566:1:46"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"12573:7:46"},{"name":"x","nodeType":"YulIdentifier","src":"12582:1:46"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12569:3:46"},"nodeType":"YulFunctionCall","src":"12569:15:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12563:2:46"},"nodeType":"YulFunctionCall","src":"12563:22:46"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"12549:2:46"},"nodeType":"YulFunctionCall","src":"12549:37:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12542:6:46"},"nodeType":"YulFunctionCall","src":"12542:45:46"},"nodeType":"YulIf","src":"12539:71:46"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"12479:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"12482:1:46","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"12488:7:46","type":""}],"src":"12448:168:46"},{"body":{"nodeType":"YulBlock","src":"12778:162:46","statements":[{"nodeType":"YulAssignment","src":"12788:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12800:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12811:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12796:3:46"},"nodeType":"YulFunctionCall","src":"12796:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12788:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12830:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"12841:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12823:6:46"},"nodeType":"YulFunctionCall","src":"12823:25:46"},"nodeType":"YulExpressionStatement","src":"12823:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12868:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12879:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12864:3:46"},"nodeType":"YulFunctionCall","src":"12864:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"12884:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12857:6:46"},"nodeType":"YulFunctionCall","src":"12857:34:46"},"nodeType":"YulExpressionStatement","src":"12857:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12911:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12922:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12907:3:46"},"nodeType":"YulFunctionCall","src":"12907:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"12927:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12900:6:46"},"nodeType":"YulFunctionCall","src":"12900:34:46"},"nodeType":"YulExpressionStatement","src":"12900:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12731:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12742:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12750:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12758:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12769:4:46","type":""}],"src":"12621:319:46"},{"body":{"nodeType":"YulBlock","src":"13011:184:46","statements":[{"nodeType":"YulVariableDeclaration","src":"13021:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"13030:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"13025:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"13090:63:46","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"13115:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"13120:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13111:3:46"},"nodeType":"YulFunctionCall","src":"13111:11:46"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"13134:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"13139:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13130:3:46"},"nodeType":"YulFunctionCall","src":"13130:11:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13124:5:46"},"nodeType":"YulFunctionCall","src":"13124:18:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13104:6:46"},"nodeType":"YulFunctionCall","src":"13104:39:46"},"nodeType":"YulExpressionStatement","src":"13104:39:46"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"13051:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"13054:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"13048:2:46"},"nodeType":"YulFunctionCall","src":"13048:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"13062:19:46","statements":[{"nodeType":"YulAssignment","src":"13064:15:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"13073:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"13076:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13069:3:46"},"nodeType":"YulFunctionCall","src":"13069:10:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"13064:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"13044:3:46","statements":[]},"src":"13040:113:46"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"13173:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"13178:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13169:3:46"},"nodeType":"YulFunctionCall","src":"13169:16:46"},{"kind":"number","nodeType":"YulLiteral","src":"13187:1:46","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13162:6:46"},"nodeType":"YulFunctionCall","src":"13162:27:46"},"nodeType":"YulExpressionStatement","src":"13162:27:46"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"12989:3:46","type":""},{"name":"dst","nodeType":"YulTypedName","src":"12994:3:46","type":""},{"name":"length","nodeType":"YulTypedName","src":"12999:6:46","type":""}],"src":"12945:250:46"},{"body":{"nodeType":"YulBlock","src":"13305:623:46","statements":[{"body":{"nodeType":"YulBlock","src":"13351:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13360:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13363:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13353:6:46"},"nodeType":"YulFunctionCall","src":"13353:12:46"},"nodeType":"YulExpressionStatement","src":"13353:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13326:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"13335:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13322:3:46"},"nodeType":"YulFunctionCall","src":"13322:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"13347:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13318:3:46"},"nodeType":"YulFunctionCall","src":"13318:32:46"},"nodeType":"YulIf","src":"13315:52:46"},{"nodeType":"YulAssignment","src":"13376:47:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13413:9:46"}],"functionName":{"name":"abi_decode_bool_fromMemory","nodeType":"YulIdentifier","src":"13386:26:46"},"nodeType":"YulFunctionCall","src":"13386:37:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13376:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"13432:39:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13456:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"13467:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13452:3:46"},"nodeType":"YulFunctionCall","src":"13452:18:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13446:5:46"},"nodeType":"YulFunctionCall","src":"13446:25:46"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13436:6:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"13514:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13523:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13526:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13516:6:46"},"nodeType":"YulFunctionCall","src":"13516:12:46"},"nodeType":"YulExpressionStatement","src":"13516:12:46"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13486:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13502:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"13506:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"13498:3:46"},"nodeType":"YulFunctionCall","src":"13498:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"13510:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13494:3:46"},"nodeType":"YulFunctionCall","src":"13494:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13483:2:46"},"nodeType":"YulFunctionCall","src":"13483:30:46"},"nodeType":"YulIf","src":"13480:50:46"},{"nodeType":"YulVariableDeclaration","src":"13539:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13553:9:46"},{"name":"offset","nodeType":"YulIdentifier","src":"13564:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13549:3:46"},"nodeType":"YulFunctionCall","src":"13549:22:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13543:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"13619:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13628:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13631:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13621:6:46"},"nodeType":"YulFunctionCall","src":"13621:12:46"},"nodeType":"YulExpressionStatement","src":"13621:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"13598:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"13602:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13594:3:46"},"nodeType":"YulFunctionCall","src":"13594:13:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13609:7:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13590:3:46"},"nodeType":"YulFunctionCall","src":"13590:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13583:6:46"},"nodeType":"YulFunctionCall","src":"13583:35:46"},"nodeType":"YulIf","src":"13580:55:46"},{"nodeType":"YulVariableDeclaration","src":"13644:19:46","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"13660:2:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13654:5:46"},"nodeType":"YulFunctionCall","src":"13654:9:46"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"13648:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13672:62:46","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"13730:2:46"}],"functionName":{"name":"array_allocation_size_string","nodeType":"YulIdentifier","src":"13701:28:46"},"nodeType":"YulFunctionCall","src":"13701:32:46"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"13685:15:46"},"nodeType":"YulFunctionCall","src":"13685:49:46"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"13676:5:46","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"13750:5:46"},{"name":"_2","nodeType":"YulIdentifier","src":"13757:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13743:6:46"},"nodeType":"YulFunctionCall","src":"13743:17:46"},"nodeType":"YulExpressionStatement","src":"13743:17:46"},{"body":{"nodeType":"YulBlock","src":"13806:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13815:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13818:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13808:6:46"},"nodeType":"YulFunctionCall","src":"13808:12:46"},"nodeType":"YulExpressionStatement","src":"13808:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"13783:2:46"},{"name":"_2","nodeType":"YulIdentifier","src":"13787:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13779:3:46"},"nodeType":"YulFunctionCall","src":"13779:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"13792:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13775:3:46"},"nodeType":"YulFunctionCall","src":"13775:20:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13797:7:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13772:2:46"},"nodeType":"YulFunctionCall","src":"13772:33:46"},"nodeType":"YulIf","src":"13769:53:46"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"13870:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"13874:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13866:3:46"},"nodeType":"YulFunctionCall","src":"13866:11:46"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"13883:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"13890:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13879:3:46"},"nodeType":"YulFunctionCall","src":"13879:14:46"},{"name":"_2","nodeType":"YulIdentifier","src":"13895:2:46"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"13831:34:46"},"nodeType":"YulFunctionCall","src":"13831:67:46"},"nodeType":"YulExpressionStatement","src":"13831:67:46"},{"nodeType":"YulAssignment","src":"13907:15:46","value":{"name":"array","nodeType":"YulIdentifier","src":"13917:5:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13907:6:46"}]}]},"name":"abi_decode_tuple_t_boolt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13263:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13274:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13286:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13294:6:46","type":""}],"src":"13200:728:46"},{"body":{"nodeType":"YulBlock","src":"14082:344:46","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14099:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14114:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14130:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"14135:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14126:3:46"},"nodeType":"YulFunctionCall","src":"14126:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"14139:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14122:3:46"},"nodeType":"YulFunctionCall","src":"14122:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14110:3:46"},"nodeType":"YulFunctionCall","src":"14110:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14092:6:46"},"nodeType":"YulFunctionCall","src":"14092:51:46"},"nodeType":"YulExpressionStatement","src":"14092:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14163:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"14174:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14159:3:46"},"nodeType":"YulFunctionCall","src":"14159:18:46"},{"kind":"number","nodeType":"YulLiteral","src":"14179:2:46","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14152:6:46"},"nodeType":"YulFunctionCall","src":"14152:30:46"},"nodeType":"YulExpressionStatement","src":"14152:30:46"},{"nodeType":"YulVariableDeclaration","src":"14191:27:46","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14211:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14205:5:46"},"nodeType":"YulFunctionCall","src":"14205:13:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14195:6:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14238:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"14249:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14234:3:46"},"nodeType":"YulFunctionCall","src":"14234:18:46"},{"name":"length","nodeType":"YulIdentifier","src":"14254:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14227:6:46"},"nodeType":"YulFunctionCall","src":"14227:34:46"},"nodeType":"YulExpressionStatement","src":"14227:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14309:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"14317:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14305:3:46"},"nodeType":"YulFunctionCall","src":"14305:15:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14326:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"14337:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14322:3:46"},"nodeType":"YulFunctionCall","src":"14322:18:46"},{"name":"length","nodeType":"YulIdentifier","src":"14342:6:46"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"14270:34:46"},"nodeType":"YulFunctionCall","src":"14270:79:46"},"nodeType":"YulExpressionStatement","src":"14270:79:46"},{"nodeType":"YulAssignment","src":"14358:62:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14374:9:46"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14393:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"14401:2:46","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14389:3:46"},"nodeType":"YulFunctionCall","src":"14389:15:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14410:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"14406:3:46"},"nodeType":"YulFunctionCall","src":"14406:7:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14385:3:46"},"nodeType":"YulFunctionCall","src":"14385:29:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14370:3:46"},"nodeType":"YulFunctionCall","src":"14370:45:46"},{"kind":"number","nodeType":"YulLiteral","src":"14417:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14366:3:46"},"nodeType":"YulFunctionCall","src":"14366:54:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14358:4:46"}]}]},"name":"abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14043:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14054:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14062:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14073:4:46","type":""}],"src":"13933:493:46"},{"body":{"nodeType":"YulBlock","src":"14487:159:46","statements":[{"body":{"nodeType":"YulBlock","src":"14529:111:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14550:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14557:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"14562:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14553:3:46"},"nodeType":"YulFunctionCall","src":"14553:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14543:6:46"},"nodeType":"YulFunctionCall","src":"14543:31:46"},"nodeType":"YulExpressionStatement","src":"14543:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14594:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"14597:4:46","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14587:6:46"},"nodeType":"YulFunctionCall","src":"14587:15:46"},"nodeType":"YulExpressionStatement","src":"14587:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14622:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14625:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14615:6:46"},"nodeType":"YulFunctionCall","src":"14615:15:46"},"nodeType":"YulExpressionStatement","src":"14615:15:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14510:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"14517:1:46","type":"","value":"2"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14507:2:46"},"nodeType":"YulFunctionCall","src":"14507:12:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14500:6:46"},"nodeType":"YulFunctionCall","src":"14500:20:46"},"nodeType":"YulIf","src":"14497:143:46"}]},"name":"validator_assert_enum_ChallengeKind","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14476:5:46","type":""}],"src":"14431:215:46"},{"body":{"nodeType":"YulBlock","src":"14706:85:46","statements":[{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14752:5:46"}],"functionName":{"name":"validator_assert_enum_ChallengeKind","nodeType":"YulIdentifier","src":"14716:35:46"},"nodeType":"YulFunctionCall","src":"14716:42:46"},"nodeType":"YulExpressionStatement","src":"14716:42:46"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14774:3:46"},{"name":"value","nodeType":"YulIdentifier","src":"14779:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14767:6:46"},"nodeType":"YulFunctionCall","src":"14767:18:46"},"nodeType":"YulExpressionStatement","src":"14767:18:46"}]},"name":"abi_encode_enum_ChallengeKind","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14690:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14697:3:46","type":""}],"src":"14651:140:46"},{"body":{"nodeType":"YulBlock","src":"14837:50:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14854:3:46"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14873:5:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14866:6:46"},"nodeType":"YulFunctionCall","src":"14866:13:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14859:6:46"},"nodeType":"YulFunctionCall","src":"14859:21:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14847:6:46"},"nodeType":"YulFunctionCall","src":"14847:34:46"},"nodeType":"YulExpressionStatement","src":"14847:34:46"}]},"name":"abi_encode_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14821:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14828:3:46","type":""}],"src":"14796:91:46"},{"body":{"nodeType":"YulBlock","src":"14961:400:46","statements":[{"nodeType":"YulVariableDeclaration","src":"14971:26:46","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14991:5:46"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"14985:5:46"},"nodeType":"YulFunctionCall","src":"14985:12:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14975:6:46","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15013:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"15018:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15006:6:46"},"nodeType":"YulFunctionCall","src":"15006:19:46"},"nodeType":"YulExpressionStatement","src":"15006:19:46"},{"nodeType":"YulVariableDeclaration","src":"15034:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15044:4:46","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15038:2:46","type":""}]},{"nodeType":"YulAssignment","src":"15057:19:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15068:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15073:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15064:3:46"},"nodeType":"YulFunctionCall","src":"15064:12:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15057:3:46"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15092:1:46","type":"","value":"0"},{"name":"value","nodeType":"YulIdentifier","src":"15095:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15085:6:46"},"nodeType":"YulFunctionCall","src":"15085:16:46"},"nodeType":"YulExpressionStatement","src":"15085:16:46"},{"nodeType":"YulVariableDeclaration","src":"15110:30:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15134:1:46","type":"","value":"0"},{"name":"_1","nodeType":"YulIdentifier","src":"15137:2:46"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"15124:9:46"},"nodeType":"YulFunctionCall","src":"15124:16:46"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"15114:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15149:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15158:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"15153:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"15217:119:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15238:3:46"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"15249:6:46"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"15243:5:46"},"nodeType":"YulFunctionCall","src":"15243:13:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15231:6:46"},"nodeType":"YulFunctionCall","src":"15231:26:46"},"nodeType":"YulExpressionStatement","src":"15231:26:46"},{"nodeType":"YulAssignment","src":"15270:19:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15281:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15286:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15277:3:46"},"nodeType":"YulFunctionCall","src":"15277:12:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15270:3:46"}]},{"nodeType":"YulAssignment","src":"15302:24:46","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"15316:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"15324:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15312:3:46"},"nodeType":"YulFunctionCall","src":"15312:14:46"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"15302:6:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15179:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"15182:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15176:2:46"},"nodeType":"YulFunctionCall","src":"15176:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"15190:18:46","statements":[{"nodeType":"YulAssignment","src":"15192:14:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15201:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"15204:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15197:3:46"},"nodeType":"YulFunctionCall","src":"15197:9:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"15192:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"15172:3:46","statements":[]},"src":"15168:168:46"},{"nodeType":"YulAssignment","src":"15345:10:46","value":{"name":"pos","nodeType":"YulIdentifier","src":"15352:3:46"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15345:3:46"}]}]},"name":"abi_encode_array_bytes32_dyn_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14938:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14945:3:46","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14953:3:46","type":""}],"src":"14892:469:46"},{"body":{"nodeType":"YulBlock","src":"15424:714:46","statements":[{"nodeType":"YulVariableDeclaration","src":"15434:29:46","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15457:5:46"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"15451:5:46"},"nodeType":"YulFunctionCall","src":"15451:12:46"},"variables":[{"name":"slotValue","nodeType":"YulTypedName","src":"15438:9:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15472:50:46","value":{"arguments":[{"name":"slotValue","nodeType":"YulIdentifier","src":"15512:9:46"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"15486:25:46"},"nodeType":"YulFunctionCall","src":"15486:36:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"15476:6:46","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15538:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"15543:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15531:6:46"},"nodeType":"YulFunctionCall","src":"15531:19:46"},"nodeType":"YulExpressionStatement","src":"15531:19:46"},{"nodeType":"YulVariableDeclaration","src":"15559:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15569:4:46","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15563:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15582:11:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15592:1:46","type":"","value":"1"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"15586:2:46","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"15643:139:46","statements":[{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15668:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15673:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15664:3:46"},"nodeType":"YulFunctionCall","src":"15664:12:46"},{"arguments":[{"name":"slotValue","nodeType":"YulIdentifier","src":"15682:9:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15697:3:46","type":"","value":"255"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15693:3:46"},"nodeType":"YulFunctionCall","src":"15693:8:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15678:3:46"},"nodeType":"YulFunctionCall","src":"15678:24:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15657:6:46"},"nodeType":"YulFunctionCall","src":"15657:46:46"},"nodeType":"YulExpressionStatement","src":"15657:46:46"},{"nodeType":"YulAssignment","src":"15716:56:46","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15731:3:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15740:1:46","type":"","value":"5"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15757:6:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15750:6:46"},"nodeType":"YulFunctionCall","src":"15750:14:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15743:6:46"},"nodeType":"YulFunctionCall","src":"15743:22:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15736:3:46"},"nodeType":"YulFunctionCall","src":"15736:30:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15727:3:46"},"nodeType":"YulFunctionCall","src":"15727:40:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15769:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15723:3:46"},"nodeType":"YulFunctionCall","src":"15723:49:46"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"15716:3:46"}]}]},"nodeType":"YulCase","src":"15636:146:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15641:1:46","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"15798:334:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15819:1:46","type":"","value":"0"},{"name":"value","nodeType":"YulIdentifier","src":"15822:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15812:6:46"},"nodeType":"YulFunctionCall","src":"15812:16:46"},"nodeType":"YulExpressionStatement","src":"15812:16:46"},{"nodeType":"YulVariableDeclaration","src":"15841:31:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15866:1:46","type":"","value":"0"},{"name":"_1","nodeType":"YulIdentifier","src":"15869:2:46"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"15856:9:46"},"nodeType":"YulFunctionCall","src":"15856:16:46"},"variables":[{"name":"dataPos","nodeType":"YulTypedName","src":"15845:7:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15885:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15894:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"15889:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"15962:120:46","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15995:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"16000:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15991:3:46"},"nodeType":"YulFunctionCall","src":"15991:11:46"},{"name":"_1","nodeType":"YulIdentifier","src":"16004:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15987:3:46"},"nodeType":"YulFunctionCall","src":"15987:20:46"},{"arguments":[{"name":"dataPos","nodeType":"YulIdentifier","src":"16015:7:46"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"16009:5:46"},"nodeType":"YulFunctionCall","src":"16009:14:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15980:6:46"},"nodeType":"YulFunctionCall","src":"15980:44:46"},"nodeType":"YulExpressionStatement","src":"15980:44:46"},{"nodeType":"YulAssignment","src":"16041:27:46","value":{"arguments":[{"name":"dataPos","nodeType":"YulIdentifier","src":"16056:7:46"},{"name":"_2","nodeType":"YulIdentifier","src":"16065:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16052:3:46"},"nodeType":"YulFunctionCall","src":"16052:16:46"},"variableNames":[{"name":"dataPos","nodeType":"YulIdentifier","src":"16041:7:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15919:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"15922:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15916:2:46"},"nodeType":"YulFunctionCall","src":"15916:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"15930:19:46","statements":[{"nodeType":"YulAssignment","src":"15932:15:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15941:1:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15944:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15937:3:46"},"nodeType":"YulFunctionCall","src":"15937:10:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"15932:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"15912:3:46","statements":[]},"src":"15908:174:46"},{"nodeType":"YulAssignment","src":"16095:27:46","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16110:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"16115:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16106:3:46"},"nodeType":"YulFunctionCall","src":"16106:11:46"},{"name":"_1","nodeType":"YulIdentifier","src":"16119:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16102:3:46"},"nodeType":"YulFunctionCall","src":"16102:20:46"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"16095:3:46"}]}]},"nodeType":"YulCase","src":"15791:341:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15796:1:46","type":"","value":"1"}}],"expression":{"arguments":[{"name":"slotValue","nodeType":"YulIdentifier","src":"15613:9:46"},{"name":"_2","nodeType":"YulIdentifier","src":"15624:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15609:3:46"},"nodeType":"YulFunctionCall","src":"15609:18:46"},"nodeType":"YulSwitch","src":"15602:530:46"}]},"name":"abi_encode_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15401:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"15408:3:46","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"15416:3:46","type":""}],"src":"15366:772:46"},{"body":{"nodeType":"YulBlock","src":"16720:1050:46","statements":[{"nodeType":"YulVariableDeclaration","src":"16730:13:46","value":{"kind":"number","nodeType":"YulLiteral","src":"16740:3:46","type":"","value":"384"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16734:2:46","type":""}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16788:6:46"}],"functionName":{"name":"validator_assert_enum_ChallengeKind","nodeType":"YulIdentifier","src":"16752:35:46"},"nodeType":"YulFunctionCall","src":"16752:43:46"},"nodeType":"YulExpressionStatement","src":"16752:43:46"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16811:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"16822:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16804:6:46"},"nodeType":"YulFunctionCall","src":"16804:25:46"},"nodeType":"YulExpressionStatement","src":"16804:25:46"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"16868:6:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16880:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"16891:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16876:3:46"},"nodeType":"YulFunctionCall","src":"16876:18:46"}],"functionName":{"name":"abi_encode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"16838:29:46"},"nodeType":"YulFunctionCall","src":"16838:57:46"},"nodeType":"YulExpressionStatement","src":"16838:57:46"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"16934:6:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16946:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"16957:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16942:3:46"},"nodeType":"YulFunctionCall","src":"16942:18:46"}],"functionName":{"name":"abi_encode_enum_ChallengeKind","nodeType":"YulIdentifier","src":"16904:29:46"},"nodeType":"YulFunctionCall","src":"16904:57:46"},"nodeType":"YulExpressionStatement","src":"16904:57:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16981:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"16992:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16977:3:46"},"nodeType":"YulFunctionCall","src":"16977:18:46"},{"name":"value3","nodeType":"YulIdentifier","src":"16997:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16970:6:46"},"nodeType":"YulFunctionCall","src":"16970:34:46"},"nodeType":"YulExpressionStatement","src":"16970:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17024:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17035:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17020:3:46"},"nodeType":"YulFunctionCall","src":"17020:19:46"},{"name":"value4","nodeType":"YulIdentifier","src":"17041:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17013:6:46"},"nodeType":"YulFunctionCall","src":"17013:35:46"},"nodeType":"YulExpressionStatement","src":"17013:35:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17068:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17079:3:46","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17064:3:46"},"nodeType":"YulFunctionCall","src":"17064:19:46"},{"name":"value5","nodeType":"YulIdentifier","src":"17085:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17057:6:46"},"nodeType":"YulFunctionCall","src":"17057:35:46"},"nodeType":"YulExpressionStatement","src":"17057:35:46"},{"expression":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"17117:6:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17129:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17140:3:46","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17125:3:46"},"nodeType":"YulFunctionCall","src":"17125:19:46"}],"functionName":{"name":"abi_encode_bool","nodeType":"YulIdentifier","src":"17101:15:46"},"nodeType":"YulFunctionCall","src":"17101:44:46"},"nodeType":"YulExpressionStatement","src":"17101:44:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17165:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17176:3:46","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17161:3:46"},"nodeType":"YulFunctionCall","src":"17161:19:46"},{"name":"_1","nodeType":"YulIdentifier","src":"17182:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17154:6:46"},"nodeType":"YulFunctionCall","src":"17154:31:46"},"nodeType":"YulExpressionStatement","src":"17154:31:46"},{"nodeType":"YulVariableDeclaration","src":"17194:78:46","value":{"arguments":[{"name":"value7","nodeType":"YulIdentifier","src":"17245:6:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17257:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"17268:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17253:3:46"},"nodeType":"YulFunctionCall","src":"17253:18:46"}],"functionName":{"name":"abi_encode_array_bytes32_dyn_storage","nodeType":"YulIdentifier","src":"17208:36:46"},"nodeType":"YulFunctionCall","src":"17208:64:46"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"17198:6:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17292:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17303:3:46","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17288:3:46"},"nodeType":"YulFunctionCall","src":"17288:19:46"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"17313:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"17321:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17309:3:46"},"nodeType":"YulFunctionCall","src":"17309:22:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17281:6:46"},"nodeType":"YulFunctionCall","src":"17281:51:46"},"nodeType":"YulExpressionStatement","src":"17281:51:46"},{"nodeType":"YulVariableDeclaration","src":"17341:55:46","value":{"arguments":[{"name":"value8","nodeType":"YulIdentifier","src":"17381:6:46"},{"name":"tail_1","nodeType":"YulIdentifier","src":"17389:6:46"}],"functionName":{"name":"abi_encode_string_storage","nodeType":"YulIdentifier","src":"17355:25:46"},"nodeType":"YulFunctionCall","src":"17355:41:46"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"17345:6:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17416:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17427:3:46","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17412:3:46"},"nodeType":"YulFunctionCall","src":"17412:19:46"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"17437:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"17445:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17433:3:46"},"nodeType":"YulFunctionCall","src":"17433:22:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17405:6:46"},"nodeType":"YulFunctionCall","src":"17405:51:46"},"nodeType":"YulExpressionStatement","src":"17405:51:46"},{"nodeType":"YulVariableDeclaration","src":"17465:55:46","value":{"arguments":[{"name":"value9","nodeType":"YulIdentifier","src":"17505:6:46"},{"name":"tail_2","nodeType":"YulIdentifier","src":"17513:6:46"}],"functionName":{"name":"abi_encode_string_storage","nodeType":"YulIdentifier","src":"17479:25:46"},"nodeType":"YulFunctionCall","src":"17479:41:46"},"variables":[{"name":"tail_3","nodeType":"YulTypedName","src":"17469:6:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17540:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17551:3:46","type":"","value":"320"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17536:3:46"},"nodeType":"YulFunctionCall","src":"17536:19:46"},{"arguments":[{"name":"tail_3","nodeType":"YulIdentifier","src":"17561:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"17569:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17557:3:46"},"nodeType":"YulFunctionCall","src":"17557:22:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17529:6:46"},"nodeType":"YulFunctionCall","src":"17529:51:46"},"nodeType":"YulExpressionStatement","src":"17529:51:46"},{"nodeType":"YulVariableDeclaration","src":"17589:56:46","value":{"arguments":[{"name":"value10","nodeType":"YulIdentifier","src":"17629:7:46"},{"name":"tail_3","nodeType":"YulIdentifier","src":"17638:6:46"}],"functionName":{"name":"abi_encode_string_storage","nodeType":"YulIdentifier","src":"17603:25:46"},"nodeType":"YulFunctionCall","src":"17603:42:46"},"variables":[{"name":"tail_4","nodeType":"YulTypedName","src":"17593:6:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17665:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17676:3:46","type":"","value":"352"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17661:3:46"},"nodeType":"YulFunctionCall","src":"17661:19:46"},{"arguments":[{"name":"tail_4","nodeType":"YulIdentifier","src":"17686:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"17694:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17682:3:46"},"nodeType":"YulFunctionCall","src":"17682:22:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17654:6:46"},"nodeType":"YulFunctionCall","src":"17654:51:46"},"nodeType":"YulExpressionStatement","src":"17654:51:46"},{"nodeType":"YulAssignment","src":"17714:50:46","value":{"arguments":[{"name":"value11","nodeType":"YulIdentifier","src":"17748:7:46"},{"name":"tail_4","nodeType":"YulIdentifier","src":"17757:6:46"}],"functionName":{"name":"abi_encode_string_storage","nodeType":"YulIdentifier","src":"17722:25:46"},"nodeType":"YulFunctionCall","src":"17722:42:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17714:4:46"}]}]},"name":"abi_encode_tuple_t_enum$_ChallengeKind_$12660_t_enum$_ChallengeVisibility_$12663_t_enum$_ChallengeType_$12667_t_uint256_t_uint256_t_uint256_t_bool_t_array$_t_bytes32_$dyn_storage_t_string_storage_t_string_storage_t_string_storage_t_string_storage__to_t_uint8_t_uint8_t_uint8_t_uint256_t_uint256_t_uint256_t_bool_t_array$_t_bytes32_$dyn_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16599:9:46","type":""},{"name":"value11","nodeType":"YulTypedName","src":"16610:7:46","type":""},{"name":"value10","nodeType":"YulTypedName","src":"16619:7:46","type":""},{"name":"value9","nodeType":"YulTypedName","src":"16628:6:46","type":""},{"name":"value8","nodeType":"YulTypedName","src":"16636:6:46","type":""},{"name":"value7","nodeType":"YulTypedName","src":"16644:6:46","type":""},{"name":"value6","nodeType":"YulTypedName","src":"16652:6:46","type":""},{"name":"value5","nodeType":"YulTypedName","src":"16660:6:46","type":""},{"name":"value4","nodeType":"YulTypedName","src":"16668:6:46","type":""},{"name":"value3","nodeType":"YulTypedName","src":"16676:6:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16684:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16692:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16700:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16711:4:46","type":""}],"src":"16143:1627:46"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory_2305() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x01c0)\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_address_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            let value := calldataload(src)\n            if iszero(eq(value, and(value, sub(shl(160, 1), 1))))\n            {\n                let _3 := 0\n                revert(_3, _3)\n            }\n            mstore(dst, value)\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_address_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value1 := abi_decode_array_address_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_enum_ChallengeKind(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(lt(value, 2)) { revert(0, 0) }\n    }\n    function abi_decode_array_bytes32_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function array_allocation_size_string(length) -> size\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_string(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_struct$_CreateChallengeParams_$12717_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0x01c0) { revert(0, 0) }\n        let value := allocate_memory_2305()\n        mstore(value, abi_decode_enum_ChallengeKind(_2))\n        mstore(add(value, 32), abi_decode_enum_ChallengeKind(add(_2, 32)))\n        mstore(add(value, 64), abi_decode_enum_ChallengeKind(add(_2, 64)))\n        mstore(add(value, 96), calldataload(add(_2, 96)))\n        mstore(add(value, 128), calldataload(add(_2, 128)))\n        mstore(add(value, 160), calldataload(add(_2, 160)))\n        mstore(add(value, 192), calldataload(add(_2, 192)))\n        mstore(add(value, 224), calldataload(add(_2, 224)))\n        let _3 := 256\n        let offset_1 := calldataload(add(_2, _3))\n        if gt(offset_1, _1) { revert(0, 0) }\n        mstore(add(value, _3), abi_decode_array_bytes32_dyn(add(_2, offset_1), dataEnd))\n        let _4 := 288\n        let offset_2 := calldataload(add(_2, _4))\n        if gt(offset_2, _1) { revert(0, 0) }\n        mstore(add(value, _4), abi_decode_array_address_dyn(add(_2, offset_2), dataEnd))\n        let _5 := 320\n        let offset_3 := calldataload(add(_2, _5))\n        if gt(offset_3, _1) { revert(0, 0) }\n        mstore(add(value, _5), abi_decode_string(add(_2, offset_3), dataEnd))\n        let _6 := 352\n        let offset_4 := calldataload(add(_2, _6))\n        if gt(offset_4, _1) { revert(0, 0) }\n        mstore(add(value, _6), abi_decode_string(add(_2, offset_4), dataEnd))\n        let _7 := 384\n        let offset_5 := calldataload(add(_2, _7))\n        if gt(offset_5, _1) { revert(0, 0) }\n        mstore(add(value, _7), abi_decode_string(add(_2, offset_5), dataEnd))\n        let _8 := 416\n        let offset_6 := calldataload(add(_2, _8))\n        if gt(offset_6, _1) { revert(0, 0) }\n        mstore(add(value, _8), abi_decode_string(add(_2, offset_6), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_bool_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_bool_fromMemory(headStart)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function panic_error_0x31()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x31)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_decode_tuple_t_boolt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_bool_fromMemory(headStart)\n        let offset := mload(add(headStart, 32))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := mload(_1)\n        let array := allocate_memory(array_allocation_size_string(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 32), add(array, 32), _2)\n        value1 := array\n    }\n    function abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        copy_memory_to_memory_with_cleanup(add(value1, 32), add(headStart, 96), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function validator_assert_enum_ChallengeKind(value)\n    {\n        if iszero(lt(value, 2))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_enum_ChallengeKind(value, pos)\n    {\n        validator_assert_enum_ChallengeKind(value)\n        mstore(pos, value)\n    }\n    function abi_encode_bool(value, pos)\n    {\n        mstore(pos, iszero(iszero(value)))\n    }\n    function abi_encode_array_bytes32_dyn_storage(value, pos) -> end\n    {\n        let length := sload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        mstore(0, value)\n        let srcPtr := keccak256(0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, sload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, 1)\n        }\n        end := pos\n    }\n    function abi_encode_string_storage(value, pos) -> ret\n    {\n        let slotValue := sload(value)\n        let length := extract_byte_array_length(slotValue)\n        mstore(pos, length)\n        let _1 := 0x20\n        let _2 := 1\n        switch and(slotValue, _2)\n        case 0 {\n            mstore(add(pos, _1), and(slotValue, not(255)))\n            ret := add(add(pos, shl(5, iszero(iszero(length)))), _1)\n        }\n        case 1 {\n            mstore(0, value)\n            let dataPos := keccak256(0, _1)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _1) }\n            {\n                mstore(add(add(pos, i), _1), sload(dataPos))\n                dataPos := add(dataPos, _2)\n            }\n            ret := add(add(pos, i), _1)\n        }\n    }\n    function abi_encode_tuple_t_enum$_ChallengeKind_$12660_t_enum$_ChallengeVisibility_$12663_t_enum$_ChallengeType_$12667_t_uint256_t_uint256_t_uint256_t_bool_t_array$_t_bytes32_$dyn_storage_t_string_storage_t_string_storage_t_string_storage_t_string_storage__to_t_uint8_t_uint8_t_uint8_t_uint256_t_uint256_t_uint256_t_bool_t_array$_t_bytes32_$dyn_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value11, value10, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 384\n        validator_assert_enum_ChallengeKind(value0)\n        mstore(headStart, value0)\n        abi_encode_enum_ChallengeKind(value1, add(headStart, 32))\n        abi_encode_enum_ChallengeKind(value2, add(headStart, 64))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n        abi_encode_bool(value6, add(headStart, 192))\n        mstore(add(headStart, 224), _1)\n        let tail_1 := abi_encode_array_bytes32_dyn_storage(value7, add(headStart, _1))\n        mstore(add(headStart, 256), sub(tail_1, headStart))\n        let tail_2 := abi_encode_string_storage(value8, tail_1)\n        mstore(add(headStart, 288), sub(tail_2, headStart))\n        let tail_3 := abi_encode_string_storage(value9, tail_2)\n        mstore(add(headStart, 320), sub(tail_3, headStart))\n        let tail_4 := abi_encode_string_storage(value10, tail_3)\n        mstore(add(headStart, 352), sub(tail_4, headStart))\n        tail := abi_encode_string_storage(value11, tail_4)\n    }\n}","id":46,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600436106100815760003560e01c806212462a14610086578063262ad80b146100a857806367fc8c89146100c85780639ed14864146100e8578063a41483e314610112578063b30f058414610132578063e0e65a5414610152578063e448ee2614610180575b600080fd5b81801561009257600080fd5b506100a66100a13660046120ce565b6101a0565b005b8180156100b457600080fd5b506100a66100c33660046121fa565b61039f565b8180156100d457600080fd5b506100a66100e33660046120ce565b610430565b6100fb6100f63660046120ce565b61063d565b60405160ff90911681526020015b60405180910390f35b81801561011e57600080fd5b506100a661012d3660046120ce565b6106e3565b81801561013e57600080fd5b506100fb61014d3660046120ce565b61076d565b81801561015e57600080fd5b5061017261016d366004612327565b6108bf565b604051908152602001610109565b81801561018c57600080fd5b506100a661019b3660046120ce565b610d60565b60006101aa611005565b905060006101b783611029565b90506101c3838261107a565b8054600160301b90046001600160a01b031633036101ff57336040516309edd0f760e11b81526004016101f691906124bb565b60405180910390fd5b6000838152600a83016020908152604080832033845290915290205460ff1661023f57823360405163028a786960e31b81526004016101f69291906124cf565b60036000848152600984016020908152604080832033845290915290205460ff166003811115610271576102716124e6565b0361034f5761028083336110fa565b6000815460ff166001811115610298576102986124e6565b0361034f5780600101548160070160008282546102b59190612512565b90915550508154600182015460405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916102ef91339190600401612525565b6020604051808303816000875af115801561030e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610332919061254e565b61034f576040516312171d8360e31b815260040160405180910390fd5b6103598333611291565b6103638333611412565b61036d8333611593565b604051339084907f622307417dca07086bf34ab5f56032aa32328c417e8fd3020ae0394eb918083790600090a3505050565b60006103aa83611029565b90506103b6838261107a565b8054600160301b90046001600160a01b031633146103e957336040516309edd0f760e11b81526004016101f691906124bb565b60005b825181101561042a576104188484838151811061040b5761040b612569565b602002602001015161168c565b806104228161257f565b9150506103ec565b50505050565b600061043a611005565b9050600061044783611029565b9050610453838261107a565b8054600160301b90046001600160a01b0316330361048757604051630fc3589b60e11b8152600481018490526024016101f6565b60036000848152600984016020908152604080832033845290915290205460ff1660038111156104b9576104b96124e6565b146104db57823360405163c100013360e01b81526004016101f69291906124cf565b6104e583336110fa565b6000815460ff1660018111156104fd576104fd6124e6565b036105b457806001015481600701600082825461051a9190612512565b90915550508154600182015460405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161055491339190600401612525565b6020604051808303816000875af1158015610573573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610597919061254e565b6105b4576040516312171d8360e31b815260040160405180910390fd5b6000838152600a83016020908152604080832033845290915290205460ff16156105e7576105e28333611840565b61060b565b600083815260098301602090815260408083203384529091529020805460ff191690555b604051339084907fa1132418813654d1519f5c54cbeaa3aef5c41c01f9fad4cf6bd730eca8f4357590600090a3505050565b600080610648611005565b9050600061065584611029565b9050600081546301000000900460ff166004811115610676576106766124e6565b146106a05780546301000000900460ff166004811115610698576106986124e6565b949350505050565b80600201546106ae8361192c565b10156106bb576000610698565b6106c4816119a2565b6106cf5760046106d2565b60015b6004811115610698576106986124e6565b60006106ee82611029565b90506106fa828261107a565b8054600160301b90046001600160a01b0316331461072d57336040516309edd0f760e11b81526004016101f691906124bb565b805463ff0000001916630300000017815560405182907f8f468517950218b9c61ac630652209be7aeda4de4f6eda5e0d4b106d784fa4e990600090a25050565b60008061077983611029565b9050600081546301000000900460ff16600481111561079a5761079a6124e6565b146107c35780546301000000900460ff1660048111156107bc576107bc6124e6565b9392505050565b60006107ce8461063d565b60ff1660048111156107e2576107e26124e6565b905060008160048111156107f8576107f86124e6565b0361080f57806004811115610698576106986124e6565b81548190839063ff00000019166301000000836004811115610833576108336124e6565b0217905550600181600481111561084c5761084c6124e6565b036108815760405184907f15aacf6098564d68b408a7200e71ed0dcdc4b4538f11437b0fe1f3976afef91490600090a26108ad565b60405184907fd483b2246f0bbcfae793b6618f6da27d09bc5d458d1ed0ca1c0003c4b696cd1b90600090a25b806004811115610698576106986124e6565b6000806108ca611005565b905060006108d78261192c565b905083606001516000036108fe5760405163162908e360e11b815260040160405180910390fd5b81601001548460600151101561093357836060015182601001546040516327ab623f60e01b81526004016101f6929190612598565b6000846080015160001461094b578460800151610956565b6109568260016125a6565b905081811161097c57808260405163b986b59960e01b81526004016101f6929190612598565b808560a0015110156109a85760a0850151604051634d7d392360e01b81526101f6918391600401612598565b6000818660a001516109ba9190612512565b6109c59060016125a6565b905083600401548111156109f457808460040154604051637f00747f60e11b81526004016101f6929190612598565b610100860151511580610a48578460050154876101000151511115610a3a57866101000151518560050154604051634a92394160e11b81526004016101f6929190612598565b610a488761010001516119e1565b610a5187611b64565b610a5a87611d52565b8460060160008154610a6b9061257f565b918290555060008181526008870160205260409020885181549298509091829060ff191660018381811115610aa257610aa26124e6565b021790555060208801518154829061ff001916610100836001811115610aca57610aca6124e6565b021790555060408801518154829062ff0000191662010000836001811115610af457610af46124e6565b021790555080546060890151600183018190556002830186905560a08a0151600384015560c08a0151600484015560e08a015160058401556301000000600160d01b031990911633600160301b0260ff60281b191617600160281b8415150217825560078201556101408801516010820190610b709082612641565b506101608801516011820190610b869082612641565b506101808801516012820190610b9c9082612641565b506101a08801516013820190610bb29082612641565b50600188604001516001811115610bcb57610bcb6124e6565b03610bea578760e001518860600151610be49190612700565b60068201555b60005b88610100015151811015610c475781600f018961010001518281518110610c1657610c16612569565b6020908102919091018101518254600181018455600093845291909220015580610c3f8161257f565b915050610bed565b50855460608901516040516323b872dd60e01b81526001600160a01b03909216916323b872dd91610c7e9133913091600401612722565b6020604051808303816000875af1158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc1919061254e565b610cde576040516312171d8360e31b815260040160405180910390fd5b600088516001811115610cf357610cf36124e6565b03610d0c57610d028633611e17565b610d0c8733611eb9565b610d168782611f92565b60005b88610120015151811015610d5457610d42888a6101200151838151811061040b5761040b612569565b80610d4c8161257f565b915050610d19565b50505050505050919050565b6000610d6a611005565b90506000610d7783611029565b9050610d83838261107a565b8054600160301b90046001600160a01b03163303610db75760405163f6f0bad160e01b8152600481018490526024016101f6565b60018154610100900460ff166001811115610dd457610dd46124e6565b148015610dfd57506000838152600a83016020908152604080832033845290915290205460ff16155b15610e1f57823360405163028a786960e31b81526004016101f69291906124cf565b60036000848152600984016020908152604080832033845290915290205460ff166003811115610e5157610e516124e6565b03610e735782336040516373d4594360e01b81526004016101f69291906124cf565b610e7d8233611e17565b6000815462010000900460ff166001811115610e9b57610e9b6124e6565b148015610eb057506007820154600b82015410155b15610ee557600b810154610ec59060016125a6565b8260070154604051631dd2498560e31b81526004016101f6929190612598565b6000815460ff166001811115610efd57610efd6124e6565b03610fb5578060010154816007016000828254610f1a91906125a6565b9091555050815460018201546040516323b872dd60e01b81526001600160a01b03909216916323b872dd91610f559133913091600401612722565b6020604051808303816000875af1158015610f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f98919061254e565b610fb5576040516312171d8360e31b815260040160405180910390fd5b610fbf8333611291565b610fc98333611412565b610fd38333611eb9565b604051339084907f690ecbabe96222b39728b512682860cc6460002a670ff94954038286bea0ba6990600090a3505050565b7f4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d10090565b600080611034611005565b90508215806110465750806006015483115b1561106757604051635bafafd160e01b8152600481018490526024016101f6565b6000928352600801602052506040902090565b600081546301000000900460ff166004811115611099576110996124e6565b146110ba57604051637d288d4560e01b8152600481018390526024016101f6565b60006110c4611005565b905081600201546110d48261192c565b106110f557604051637d288d4560e01b8152600481018490526024016101f6565b505050565b6000611104611005565b60008481526008820160209081526040808320600b850183528184206001600160a01b0388168552909252822054929350919081900361115b57848460405163c100013360e01b81526004016101f69291906124cf565b6000611168600183612512565b600b84015490915060009061117f90600190612512565b905080821461122d57600084600b01828154811061119f5761119f612569565b600091825260209091200154600b860180546001600160a01b0390921692508291859081106111d0576111d0612569565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556112048360016125a6565b6000898152600b8801602090815260408083206001600160a01b03909516835293905291909120555b83600b0180548061124057611240612746565b60008281526020808220830160001990810180546001600160a01b0319169055909201909255978152600b9095018752505060408084206001600160a01b0395909516845293909452509081205550565b600061129b611005565b60008481526008820160209081526040808320600c850183528184206001600160a01b038816855290925282205492935091908190036112dc575050505050565b60006112e9600183612512565b600c84015490915060009061130090600190612512565b90508082146113ae57600084600c01828154811061132057611320612569565b600091825260209091200154600c860180546001600160a01b03909216925082918590811061135157611351612569565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556113858360016125a6565b6000898152600c8801602090815260408083206001600160a01b03909516835293905291909120555b83600c018054806113c1576113c1612746565b60008281526020808220830160001990810180546001600160a01b0319169055909201909255978152600c9095018752505060408084206001600160a01b0395909516845293909452509081205550565b600061141c611005565b60008481526008820160209081526040808320600d850183528184206001600160a01b0388168552909252822054929350919081900361145d575050505050565b600061146a600183612512565b600d84015490915060009061148190600190612512565b905080821461152f57600084600d0182815481106114a1576114a1612569565b600091825260209091200154600d860180546001600160a01b0390921692508291859081106114d2576114d2612569565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556115068360016125a6565b6000898152600d8801602090815260408083206001600160a01b03909516835293905291909120555b83600d0180548061154257611542612746565b60008281526020808220830160001990810180546001600160a01b0319169055909201909255978152600d9095018752505060408084206001600160a01b0395909516845293909452509081205550565b600061159d611005565b60008481526008820160209081526040808320600d850183528184206001600160a01b038816855290925290912054919250901561161257600084815260098301602090815260408083206001600160a01b0387168452909152902080546002919060ff19166001835b021790555050505050565b600d8181018054600180820183556000838152602080822090930180546001600160a01b0319166001600160a01b038a1690811790915593548982529487018352604080822085835284528082209590955588815260098701835284812093815292909152919020805460029260ff199091169083611607565b6000611696611005565b90506001600160a01b0382166116bf5760405163d92e233d60e01b815260040160405180910390fd5b6000838152600882016020526040902080546001600160a01b03600160301b9091048116908416036116f15750505050565b6003600085815260098401602090815260408083206001600160a01b038816845290915290205460ff16600381111561172c5761172c6124e6565b036117375750505050565b6001600085815260098401602090815260408083206001600160a01b038816845290915290205460ff166003811115611772576117726124e6565b03611794578383604051633525212360e21b81526004016101f69291906124cf565b6000848152600a8301602090815260408083206001600160a01b038716845290915290205460ff166117f0576000848152600a8301602090815260408083206001600160a01b03871684529091529020805460ff191660011790555b6117fa8484611412565b6118048484611840565b6040516001600160a01b0384169085907f9a32db57826ebc3e7487a5b33bf9b4eeec26e87e54fbaa4d09df62f3fb62731490600090a350505050565b600061184a611005565b60008481526008820160209081526040808320600c850183528184206001600160a01b03881685529092529091205491925090156118b757600084815260098301602090815260408083206001600160a01b0387168452909152902080546001919060ff19168280611607565b600c8181018054600180820183556000838152602080822090930180546001600160a01b0319166001600160a01b038a1690811790915593548982529487018352604080822085835284528082209590955588815260098701835284812093815292909152919020805460ff19168280611607565b600281015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa158015611978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199c919061275c565b92915050565b60008080835460ff1660018111156119bc576119bc6124e6565b146119c85760016119cb565b60025b600b9093015460ff939093169092101592915050565b60006119eb611005565b905060005b82518110156110f557600382015483516001600160a01b039091169063607bfb2490859084908110611a2457611a24612569565b60200260200101516040518263ffffffff1660e01b8152600401611a4a91815260200190565b602060405180830381865afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b919061254e565b611ac557828181518110611aa157611aa1612569565b6020026020010151604051636e770b7b60e01b81526004016101f691815260200190565b60005b81811015611b5157838281518110611ae257611ae2612569565b6020026020010151848281518110611afc57611afc612569565b602002602001015103611b3f57838281518110611b1b57611b1b612569565b602002602001015160405163de0927c960e01b81526004016101f691815260200190565b80611b498161257f565b915050611ac8565b5080611b5c8161257f565b9150506119f0565b600081516001811115611b7957611b796124e6565b03611bdc57600181602001516001811115611b9657611b966124e6565b141580611bb95750600081604001516001811115611bb657611bb66124e6565b14155b15611bd7576040516335f4a26b60e01b815260040160405180910390fd5b611c35565b600081602001516001811115611bf457611bf46124e6565b148015611c175750600181604001516001811115611c1457611c146124e6565b14155b15611c35576040516335f4a26b60e01b815260040160405180910390fd5b600081604001516001811115611c4d57611c4d6124e6565b03611c885760c0810151151580611c67575060e081015115155b15611c8557604051636a88293d60e01b815260040160405180910390fd5b50565b60c08101511580611c9b575060e0810151155b15611cb957604051636a88293d60e01b815260040160405180910390fd5b620f42408160c001511115611cec578060c00151620f42406040516313c3d1b160e01b81526004016101f6929190612598565b6000670de0b6b3a76400008260e00151611d069190612775565b90508082606001511015611d4e57606082015160e083015160405163f45cb75360e01b815260048101929092526024820152670de0b6b3a764000060448201526064016101f6565b5050565b610140810151516078811115611d805780607860405163107b8cab60e31b81526004016101f6929190612598565b610160820151516101f4811115611db057806101f46040516371a24cf360e01b81526004016101f6929190612598565b61018083015151610200811115611de05780610200604051636754ccbf60e01b81526004016101f6929190612598565b6101a084015151610200811115611e105780610200604051634af3fa9360e11b81526004016101f6929190612598565b5050505050565b60018201546040516307b9c93d60e11b815260009182916001600160a01b0390911690630f73927a90611e4e9086906004016124bb565b600060405180830381865afa158015611e6b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e9391908101906127b0565b915091508161042a57828160405163411f12c760e01b81526004016101f692919061283a565b6000611ec3611005565b60008481526008820160209081526040808320600b850183528184206001600160a01b0388168552909252909120549192509015611f185783836040516373d4594360e01b81526004016101f69291906124cf565b600b8181018054600180820183556000838152602080822090930180546001600160a01b0319166001600160a01b038a1690811790915593548982529487018352604080822085835284528082209590955588815260098701835284812093815292909152919020805460039260ff199091169083611607565b80600301548160000160069054906101000a90046001600160a01b03166001600160a01b0316837ffacaa812f3ddb00d0d30b86be7240dff1cd3372e8f77a7b421d35125891e30608460000160009054906101000a900460ff168560000160019054906101000a900460ff168660000160029054906101000a900460ff168760010154886002015489600401548a60000160059054906101000a900460ff168b600f018c6010018d6011018e6012018f60130160405161205d9c9b9a99989796959493929190612964565b60405180910390a46001815462010000900460ff166001811115612083576120836124e6565b03611d4e57817f632e7af18aa775a9a28c2f3530920c3dc0924efe616499de9943f6dc93c699a5826005015483600601546040516120c2929190612598565b60405180910390a25050565b6000602082840312156120e057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516101c081016001600160401b0381118282101715612120576121206120e7565b60405290565b604051601f8201601f191681016001600160401b038111828210171561214e5761214e6120e7565b604052919050565b60006001600160401b0382111561216f5761216f6120e7565b5060051b60200190565b600082601f83011261218a57600080fd5b8135602061219f61219a83612156565b612126565b82815260059290921b840181019181810190868411156121be57600080fd5b8286015b848110156121ef5780356001600160a01b03811681146121e25760008081fd5b83529183019183016121c2565b509695505050505050565b6000806040838503121561220d57600080fd5b8235915060208301356001600160401b0381111561222a57600080fd5b61223685828601612179565b9150509250929050565b80356002811061224f57600080fd5b919050565b600082601f83011261226557600080fd5b8135602061227561219a83612156565b82815260059290921b8401810191818101908684111561229457600080fd5b8286015b848110156121ef5780358352918301918301612298565b60006001600160401b038211156122c8576122c86120e7565b50601f01601f191660200190565b600082601f8301126122e757600080fd5b81356122f561219a826122af565b81815284602083860101111561230a57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561233957600080fd5b81356001600160401b038082111561235057600080fd5b908301906101c0828603121561236557600080fd5b61236d6120fd565b61237683612240565b815261238460208401612240565b602082015261239560408401612240565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e082015261010080840135838111156123e057600080fd5b6123ec88828701612254565b828401525050610120808401358381111561240657600080fd5b61241288828701612179565b828401525050610140808401358381111561242c57600080fd5b612438888287016122d6565b828401525050610160808401358381111561245257600080fd5b61245e888287016122d6565b828401525050610180808401358381111561247857600080fd5b612484888287016122d6565b8284015250506101a0808401358381111561249e57600080fd5b6124aa888287016122d6565b918301919091525095945050505050565b6001600160a01b0391909116815260200190565b9182526001600160a01b0316602082015260400190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561199c5761199c6124fc565b6001600160a01b03929092168252602082015260400190565b8051801515811461224f57600080fd5b60006020828403121561256057600080fd5b6107bc8261253e565b634e487b7160e01b600052603260045260246000fd5b600060018201612591576125916124fc565b5060010190565b918252602082015260400190565b8082018082111561199c5761199c6124fc565b600181811c908216806125cd57607f821691505b6020821081036125ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156110f557600081815260208120601f850160051c8101602086101561261a5750805b601f850160051c820191505b8181101561263957828155600101612626565b505050505050565b81516001600160401b0381111561265a5761265a6120e7565b61266e8161266884546125b9565b846125f3565b602080601f8311600181146126a3576000841561268b5750858301515b600019600386901b1c1916600185901b178555612639565b600085815260208120601f198616915b828110156126d2578886015182559484019460019091019084016126b3565b50858210156126f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008261271d57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561276e57600080fd5b5051919050565b808202811582820484141761199c5761199c6124fc565b60005b838110156127a757818101518382015260200161278f565b50506000910152565b600080604083850312156127c357600080fd5b6127cc8361253e565b60208401519092506001600160401b038111156127e857600080fd5b8301601f810185136127f957600080fd5b805161280761219a826122af565b81815286602083850101111561281c57600080fd5b61282d82602083016020860161278c565b8093505050509250929050565b60018060a01b0383168152604060208201526000825180604084015261286781606085016020870161278c565b601f01601f1916919091016060019392505050565b60028110611c8557634e487b7160e01b600052602160045260246000fd5b6128a38161287c565b9052565b6000815480845260208085019450836000528060002060005b838110156128dc578154875295820195600191820191016128c0565b509495945050505050565b600081546128f4816125b9565b808552602060018381168015612911576001811461292b57612959565b60ff1985168884015283151560051b880183019550612959565b866000528260002060005b858110156129515781548a8201860152908301908401612936565b890184019650505b505050505092915050565b60006101806129728f61287c565b8e8352612982602084018f61289a565b61298f604084018e61289a565b8b60608401528a60808401528960a08401526129af60c084018a15159052565b8060e08401526129c1818401896128a7565b90508281036101008401526129d681886128e7565b90508281036101208401526129eb81876128e7565b9050828103610140840152612a0081866128e7565b9050828103610160840152612a1581856128e7565b9f9e50505050505050505050505050505056fea26469706673582212204e82d2c8e93d94c82ab1585b94b8064ade93d7d8483f6348089670081ceb46d264736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x81 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x12462A EQ PUSH2 0x86 JUMPI DUP1 PUSH4 0x262AD80B EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x67FC8C89 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x9ED14864 EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0xA41483E3 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xB30F0584 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xE0E65A54 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0xE448EE26 EQ PUSH2 0x180 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0xA1 CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x1A0 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x21FA JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0xE3 CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x63D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x6E3 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFB PUSH2 0x14D CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0x76D JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x15E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x172 PUSH2 0x16D CALLDATASIZE PUSH1 0x4 PUSH2 0x2327 JUMP JUMPDEST PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x109 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x20CE JUMP JUMPDEST PUSH2 0xD60 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AA PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B7 DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C3 DUP4 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1FF JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x23F JUMPI DUP3 CALLER PUSH1 0x40 MLOAD PUSH4 0x28A7869 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x271 JUMPI PUSH2 0x271 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x34F JUMPI PUSH2 0x280 DUP4 CALLER PUSH2 0x10FA JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x34F JUMPI DUP1 PUSH1 0x1 ADD SLOAD DUP2 PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2B5 SWAP2 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x2EF SWAP2 CALLER SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2525 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x332 SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0x34F JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x359 DUP4 CALLER PUSH2 0x1291 JUMP JUMPDEST PUSH2 0x363 DUP4 CALLER PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x36D DUP4 CALLER PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP5 SWAP1 PUSH32 0x622307417DCA07086BF34AB5F56032AA32328C417E8FD3020AE0394EB9180837 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AA DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0x3B6 DUP4 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3E9 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x42A JUMPI PUSH2 0x418 DUP5 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x40B JUMPI PUSH2 0x40B PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x168C JUMP JUMPDEST DUP1 PUSH2 0x422 DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3EC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43A PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x447 DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0x453 DUP4 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x487 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFC3589B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4B9 JUMPI PUSH2 0x4B9 PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x4DB JUMPI DUP3 CALLER PUSH1 0x40 MLOAD PUSH4 0xC1000133 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH2 0x4E5 DUP4 CALLER PUSH2 0x10FA JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4FD JUMPI PUSH2 0x4FD PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x5B4 JUMPI DUP1 PUSH1 0x1 ADD SLOAD DUP2 PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x51A SWAP2 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x554 SWAP2 CALLER SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2525 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x573 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x597 SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5E7 JUMPI PUSH2 0x5E2 DUP4 CALLER PUSH2 0x1840 JUMP JUMPDEST PUSH2 0x60B JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP5 SWAP1 PUSH32 0xA1132418813654D1519F5C54CBEAA3AEF5C41C01F9FAD4CF6BD730ECA8F43575 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x648 PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x655 DUP5 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x676 JUMPI PUSH2 0x676 PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x6A0 JUMPI DUP1 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x698 JUMPI PUSH2 0x698 PUSH2 0x24E6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 ADD SLOAD PUSH2 0x6AE DUP4 PUSH2 0x192C JUMP JUMPDEST LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x0 PUSH2 0x698 JUMP JUMPDEST PUSH2 0x6C4 DUP2 PUSH2 0x19A2 JUMP JUMPDEST PUSH2 0x6CF JUMPI PUSH1 0x4 PUSH2 0x6D2 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x698 JUMPI PUSH2 0x698 PUSH2 0x24E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6EE DUP3 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0x6FA DUP3 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x72D JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 SWAP1 PUSH2 0x24BB JUMP JUMPDEST DUP1 SLOAD PUSH4 0xFF000000 NOT AND PUSH4 0x3000000 OR DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH32 0x8F468517950218B9C61AC630652209BE7AEDA4DE4F6EDA5E0D4B106D784FA4E9 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x779 DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x79A JUMPI PUSH2 0x79A PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x7C3 JUMPI DUP1 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x7BC JUMPI PUSH2 0x7BC PUSH2 0x24E6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CE DUP5 PUSH2 0x63D JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x7E2 JUMPI PUSH2 0x7E2 PUSH2 0x24E6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI PUSH2 0x7F8 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x80F JUMPI DUP1 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x698 JUMPI PUSH2 0x698 PUSH2 0x24E6 JUMP JUMPDEST DUP2 SLOAD DUP2 SWAP1 DUP4 SWAP1 PUSH4 0xFF000000 NOT AND PUSH4 0x1000000 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x833 JUMPI PUSH2 0x833 PUSH2 0x24E6 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x84C JUMPI PUSH2 0x84C PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x881 JUMPI PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH32 0x15AACF6098564D68B408A7200E71ED0DCDC4B4538F11437B0FE1F3976AFEF914 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH32 0xD483B2246F0BBCFAE793B6618F6DA27D09BC5D458D1ED0CA1C0003C4B696CD1B SWAP1 PUSH1 0x0 SWAP1 LOG2 JUMPDEST DUP1 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x698 JUMPI PUSH2 0x698 PUSH2 0x24E6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8CA PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x8D7 DUP3 PUSH2 0x192C JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x0 SUB PUSH2 0x8FE JUMPI PUSH1 0x40 MLOAD PUSH4 0x162908E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x10 ADD SLOAD DUP5 PUSH1 0x60 ADD MLOAD LT ISZERO PUSH2 0x933 JUMPI DUP4 PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x27AB623F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x80 ADD MLOAD PUSH1 0x0 EQ PUSH2 0x94B JUMPI DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x956 JUMP JUMPDEST PUSH2 0x956 DUP3 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 GT PUSH2 0x97C JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xB986B599 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST DUP1 DUP6 PUSH1 0xA0 ADD MLOAD LT ISZERO PUSH2 0x9A8 JUMPI PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x4D7D3923 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1F6 SWAP2 DUP4 SWAP2 PUSH1 0x4 ADD PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP7 PUSH1 0xA0 ADD MLOAD PUSH2 0x9BA SWAP2 SWAP1 PUSH2 0x2512 JUMP JUMPDEST PUSH2 0x9C5 SWAP1 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x4 ADD SLOAD DUP2 GT ISZERO PUSH2 0x9F4 JUMPI DUP1 DUP5 PUSH1 0x4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7F00747F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0x100 DUP7 ADD MLOAD MLOAD ISZERO DUP1 PUSH2 0xA48 JUMPI DUP5 PUSH1 0x5 ADD SLOAD DUP8 PUSH2 0x100 ADD MLOAD MLOAD GT ISZERO PUSH2 0xA3A JUMPI DUP7 PUSH2 0x100 ADD MLOAD MLOAD DUP6 PUSH1 0x5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x4A923941 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0xA48 DUP8 PUSH2 0x100 ADD MLOAD PUSH2 0x19E1 JUMP JUMPDEST PUSH2 0xA51 DUP8 PUSH2 0x1B64 JUMP JUMPDEST PUSH2 0xA5A DUP8 PUSH2 0x1D52 JUMP JUMPDEST DUP5 PUSH1 0x6 ADD PUSH1 0x0 DUP2 SLOAD PUSH2 0xA6B SWAP1 PUSH2 0x257F JUMP JUMPDEST SWAP2 DUP3 SWAP1 SSTORE POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 DUP8 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP9 MLOAD DUP2 SLOAD SWAP3 SWAP9 POP SWAP1 SWAP2 DUP3 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 DUP2 DUP2 GT ISZERO PUSH2 0xAA2 JUMPI PUSH2 0xAA2 PUSH2 0x24E6 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP9 ADD MLOAD DUP2 SLOAD DUP3 SWAP1 PUSH2 0xFF00 NOT AND PUSH2 0x100 DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xACA JUMPI PUSH2 0xACA PUSH2 0x24E6 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP9 ADD MLOAD DUP2 SLOAD DUP3 SWAP1 PUSH3 0xFF0000 NOT AND PUSH3 0x10000 DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xAF4 JUMPI PUSH2 0xAF4 PUSH2 0x24E6 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 SLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x1 DUP4 ADD DUP2 SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP7 SWAP1 SSTORE PUSH1 0xA0 DUP11 ADD MLOAD PUSH1 0x3 DUP5 ADD SSTORE PUSH1 0xC0 DUP11 ADD MLOAD PUSH1 0x4 DUP5 ADD SSTORE PUSH1 0xE0 DUP11 ADD MLOAD PUSH1 0x5 DUP5 ADD SSTORE PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT SWAP1 SWAP2 AND CALLER PUSH1 0x1 PUSH1 0x30 SHL MUL PUSH1 0xFF PUSH1 0x28 SHL NOT AND OR PUSH1 0x1 PUSH1 0x28 SHL DUP5 ISZERO ISZERO MUL OR DUP3 SSTORE PUSH1 0x7 DUP3 ADD SSTORE PUSH2 0x140 DUP9 ADD MLOAD PUSH1 0x10 DUP3 ADD SWAP1 PUSH2 0xB70 SWAP1 DUP3 PUSH2 0x2641 JUMP JUMPDEST POP PUSH2 0x160 DUP9 ADD MLOAD PUSH1 0x11 DUP3 ADD SWAP1 PUSH2 0xB86 SWAP1 DUP3 PUSH2 0x2641 JUMP JUMPDEST POP PUSH2 0x180 DUP9 ADD MLOAD PUSH1 0x12 DUP3 ADD SWAP1 PUSH2 0xB9C SWAP1 DUP3 PUSH2 0x2641 JUMP JUMPDEST POP PUSH2 0x1A0 DUP9 ADD MLOAD PUSH1 0x13 DUP3 ADD SWAP1 PUSH2 0xBB2 SWAP1 DUP3 PUSH2 0x2641 JUMP JUMPDEST POP PUSH1 0x1 DUP9 PUSH1 0x40 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xBCB JUMPI PUSH2 0xBCB PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0xBEA JUMPI DUP8 PUSH1 0xE0 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0xBE4 SWAP2 SWAP1 PUSH2 0x2700 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SSTORE JUMPDEST PUSH1 0x0 JUMPDEST DUP9 PUSH2 0x100 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0xC47 JUMPI DUP2 PUSH1 0xF ADD DUP10 PUSH2 0x100 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC16 JUMPI PUSH2 0xC16 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 SLOAD PUSH1 0x1 DUP2 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 ADD SSTORE DUP1 PUSH2 0xC3F DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xBED JUMP JUMPDEST POP DUP6 SLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH2 0xC7E SWAP2 CALLER SWAP2 ADDRESS SWAP2 PUSH1 0x4 ADD PUSH2 0x2722 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC9D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCC1 SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0xCDE JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP9 MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xCF3 JUMPI PUSH2 0xCF3 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0xD0C JUMPI PUSH2 0xD02 DUP7 CALLER PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0xD0C DUP8 CALLER PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0xD16 DUP8 DUP3 PUSH2 0x1F92 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP9 PUSH2 0x120 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0xD54 JUMPI PUSH2 0xD42 DUP9 DUP11 PUSH2 0x120 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x40B JUMPI PUSH2 0x40B PUSH2 0x2569 JUMP JUMPDEST DUP1 PUSH2 0xD4C DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD19 JUMP JUMPDEST POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD6A PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xD77 DUP4 PUSH2 0x1029 JUMP JUMPDEST SWAP1 POP PUSH2 0xD83 DUP4 DUP3 PUSH2 0x107A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0xDB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF6F0BAD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xDD4 JUMPI PUSH2 0xDD4 PUSH2 0x24E6 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0xDFD JUMPI POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST ISZERO PUSH2 0xE1F JUMPI DUP3 CALLER PUSH1 0x40 MLOAD PUSH4 0x28A7869 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0xE73 JUMPI DUP3 CALLER PUSH1 0x40 MLOAD PUSH4 0x73D45943 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH2 0xE7D DUP3 CALLER PUSH2 0x1E17 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xE9B JUMPI PUSH2 0xE9B PUSH2 0x24E6 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0xEB0 JUMPI POP PUSH1 0x7 DUP3 ADD SLOAD PUSH1 0xB DUP3 ADD SLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0xEE5 JUMPI PUSH1 0xB DUP2 ADD SLOAD PUSH2 0xEC5 SWAP1 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST DUP3 PUSH1 0x7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x1DD24985 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xEFD JUMPI PUSH2 0xEFD PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0xFB5 JUMPI DUP1 PUSH1 0x1 ADD SLOAD DUP2 PUSH1 0x7 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF1A SWAP2 SWAP1 PUSH2 0x25A6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH2 0xF55 SWAP2 CALLER SWAP2 ADDRESS SWAP2 PUSH1 0x4 ADD PUSH2 0x2722 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF98 SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0xFB5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFBF DUP4 CALLER PUSH2 0x1291 JUMP JUMPDEST PUSH2 0xFC9 DUP4 CALLER PUSH2 0x1412 JUMP JUMPDEST PUSH2 0xFD3 DUP4 CALLER PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP5 SWAP1 PUSH32 0x690ECBABE96222B39728B512682860CC6460002A670FF94954038286BEA0BA69 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH32 0x4602C7A79EAC2C186A5049FA18AA513E24B689A1ED3277F24B1E5B426612D100 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1034 PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP DUP3 ISZERO DUP1 PUSH2 0x1046 JUMPI POP DUP1 PUSH1 0x6 ADD SLOAD DUP4 GT JUMPDEST ISZERO PUSH2 0x1067 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5BAFAFD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x8 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1099 JUMPI PUSH2 0x1099 PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x7D288D45 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10C4 PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x2 ADD SLOAD PUSH2 0x10D4 DUP3 PUSH2 0x192C JUMP JUMPDEST LT PUSH2 0x10F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7D288D45 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1F6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1104 PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xB DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x115B JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH4 0xC1000133 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1168 PUSH1 0x1 DUP4 PUSH2 0x2512 JUMP JUMPDEST PUSH1 0xB DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x117F SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x122D JUMPI PUSH1 0x0 DUP5 PUSH1 0xB ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x119F JUMPI PUSH2 0x119F PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xB DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x11D0 JUMPI PUSH2 0x11D0 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1204 DUP4 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xB DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SSTORE JUMPDEST DUP4 PUSH1 0xB ADD DUP1 SLOAD DUP1 PUSH2 0x1240 JUMPI PUSH2 0x1240 PUSH2 0x2746 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE SWAP8 DUP2 MSTORE PUSH1 0xB SWAP1 SWAP6 ADD DUP8 MSTORE POP POP PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP5 MSTORE SWAP4 SWAP1 SWAP5 MSTORE POP SWAP1 DUP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x129B PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xC DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x12DC JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E9 PUSH1 0x1 DUP4 PUSH2 0x2512 JUMP JUMPDEST PUSH1 0xC DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1300 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x13AE JUMPI PUSH1 0x0 DUP5 PUSH1 0xC ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1320 JUMPI PUSH2 0x1320 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xC DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x1351 JUMPI PUSH2 0x1351 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1385 DUP4 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xC DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SSTORE JUMPDEST DUP4 PUSH1 0xC ADD DUP1 SLOAD DUP1 PUSH2 0x13C1 JUMPI PUSH2 0x13C1 PUSH2 0x2746 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE SWAP8 DUP2 MSTORE PUSH1 0xC SWAP1 SWAP6 ADD DUP8 MSTORE POP POP PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP5 MSTORE SWAP4 SWAP1 SWAP5 MSTORE POP SWAP1 DUP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x141C PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xD DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH2 0x145D JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146A PUSH1 0x1 DUP4 PUSH2 0x2512 JUMP JUMPDEST PUSH1 0xD DUP5 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1481 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x2512 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x152F JUMPI PUSH1 0x0 DUP5 PUSH1 0xD ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14A1 JUMPI PUSH2 0x14A1 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xD DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x14D2 JUMPI PUSH2 0x14D2 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x1506 DUP4 PUSH1 0x1 PUSH2 0x25A6 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0xD DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SSTORE JUMPDEST DUP4 PUSH1 0xD ADD DUP1 SLOAD DUP1 PUSH2 0x1542 JUMPI PUSH2 0x1542 PUSH2 0x2746 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE SWAP8 DUP2 MSTORE PUSH1 0xD SWAP1 SWAP6 ADD DUP8 MSTORE POP POP PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP5 MSTORE SWAP4 SWAP1 SWAP5 MSTORE POP SWAP1 DUP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x159D PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xD DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 ISZERO PUSH2 0x1612 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0xD DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 SLOAD DUP10 DUP3 MSTORE SWAP5 DUP8 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE DUP5 MSTORE DUP1 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP9 DUP2 MSTORE PUSH1 0x9 DUP8 ADD DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP4 DUP2 MSTORE SWAP3 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x2 SWAP3 PUSH1 0xFF NOT SWAP1 SWAP2 AND SWAP1 DUP4 PUSH2 0x1607 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1696 PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x16BF JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND SUB PUSH2 0x16F1 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x172C JUMPI PUSH2 0x172C PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1737 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1772 JUMPI PUSH2 0x1772 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1794 JUMPI DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x35252123 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x17F0 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xA DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH2 0x17FA DUP5 DUP5 PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x1804 DUP5 DUP5 PUSH2 0x1840 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP6 SWAP1 PUSH32 0x9A32DB57826EBC3E7487A5B33BF9B4EEEC26E87E54FBAA4D09DF62F3FB627314 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x184A PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xC DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 ISZERO PUSH2 0x18B7 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xFF NOT AND DUP3 DUP1 PUSH2 0x1607 JUMP JUMPDEST PUSH1 0xC DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 SLOAD DUP10 DUP3 MSTORE SWAP5 DUP8 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE DUP5 MSTORE DUP1 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP9 DUP2 MSTORE PUSH1 0x9 DUP8 ADD DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP4 DUP2 MSTORE SWAP3 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 DUP1 PUSH2 0x1607 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1978 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x199C SWAP2 SWAP1 PUSH2 0x275C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP4 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x19BC JUMPI PUSH2 0x19BC PUSH2 0x24E6 JUMP JUMPDEST EQ PUSH2 0x19C8 JUMPI PUSH1 0x1 PUSH2 0x19CB JUMP JUMPDEST PUSH1 0x2 JUMPDEST PUSH1 0xB SWAP1 SWAP4 ADD SLOAD PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP1 SWAP3 LT ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19EB PUSH2 0x1005 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x10F5 JUMPI PUSH1 0x3 DUP3 ADD SLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x607BFB24 SWAP1 DUP6 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1A24 JUMPI PUSH2 0x1A24 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A4A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A8B SWAP2 SWAP1 PUSH2 0x254E JUMP JUMPDEST PUSH2 0x1AC5 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1AA1 JUMPI PUSH2 0x1AA1 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x6E770B7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1B51 JUMPI DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AE2 JUMPI PUSH2 0x1AE2 PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AFC JUMPI PUSH2 0x1AFC PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB PUSH2 0x1B3F JUMPI DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B1B JUMPI PUSH2 0x1B1B PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xDE0927C9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x1B49 DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1AC8 JUMP JUMPDEST POP DUP1 PUSH2 0x1B5C DUP2 PUSH2 0x257F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x19F0 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1B79 JUMPI PUSH2 0x1B79 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1BDC JUMPI PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1B96 JUMPI PUSH2 0x1B96 PUSH2 0x24E6 JUMP JUMPDEST EQ ISZERO DUP1 PUSH2 0x1BB9 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1BB6 JUMPI PUSH2 0x1BB6 PUSH2 0x24E6 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1BD7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35F4A26B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C35 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1BF4 JUMPI PUSH2 0x1BF4 PUSH2 0x24E6 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x1C17 JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1C14 JUMPI PUSH2 0x1C14 PUSH2 0x24E6 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1C35 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35F4A26B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1C4D JUMPI PUSH2 0x1C4D PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1C88 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x1C67 JUMPI POP PUSH1 0xE0 DUP2 ADD MLOAD ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1C85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6A88293D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD MLOAD ISZERO DUP1 PUSH2 0x1C9B JUMPI POP PUSH1 0xE0 DUP2 ADD MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x1CB9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6A88293D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xF4240 DUP2 PUSH1 0xC0 ADD MLOAD GT ISZERO PUSH2 0x1CEC JUMPI DUP1 PUSH1 0xC0 ADD MLOAD PUSH3 0xF4240 PUSH1 0x40 MLOAD PUSH4 0x13C3D1B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 DUP3 PUSH1 0xE0 ADD MLOAD PUSH2 0x1D06 SWAP2 SWAP1 PUSH2 0x2775 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 PUSH1 0x60 ADD MLOAD LT ISZERO PUSH2 0x1D4E JUMPI PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xF45CB753 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1F6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x140 DUP2 ADD MLOAD MLOAD PUSH1 0x78 DUP2 GT ISZERO PUSH2 0x1D80 JUMPI DUP1 PUSH1 0x78 PUSH1 0x40 MLOAD PUSH4 0x107B8CAB PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MLOAD MLOAD PUSH2 0x1F4 DUP2 GT ISZERO PUSH2 0x1DB0 JUMPI DUP1 PUSH2 0x1F4 PUSH1 0x40 MLOAD PUSH4 0x71A24CF3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0x180 DUP4 ADD MLOAD MLOAD PUSH2 0x200 DUP2 GT ISZERO PUSH2 0x1DE0 JUMPI DUP1 PUSH2 0x200 PUSH1 0x40 MLOAD PUSH4 0x6754CCBF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0x1A0 DUP5 ADD MLOAD MLOAD PUSH2 0x200 DUP2 GT ISZERO PUSH2 0x1E10 JUMPI DUP1 PUSH2 0x200 PUSH1 0x40 MLOAD PUSH4 0x4AF3FA93 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7B9C93D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF73927A SWAP1 PUSH2 0x1E4E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1E93 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x27B0 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x42A JUMPI DUP3 DUP2 PUSH1 0x40 MLOAD PUSH4 0x411F12C7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x283A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EC3 PUSH2 0x1005 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xB DUP6 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 ISZERO PUSH2 0x1F18 JUMPI DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x73D45943 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F6 SWAP3 SWAP2 SWAP1 PUSH2 0x24CF JUMP JUMPDEST PUSH1 0xB DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP4 SLOAD DUP10 DUP3 MSTORE SWAP5 DUP8 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE DUP5 MSTORE DUP1 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP9 DUP2 MSTORE PUSH1 0x9 DUP8 ADD DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP4 DUP2 MSTORE SWAP3 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x3 SWAP3 PUSH1 0xFF NOT SWAP1 SWAP2 AND SWAP1 DUP4 PUSH2 0x1607 JUMP JUMPDEST DUP1 PUSH1 0x3 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0xFACAA812F3DDB00D0D30B86BE7240DFF1CD3372E8F77A7B421D35125891E3060 DUP5 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP6 PUSH1 0x0 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP7 PUSH1 0x0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP8 PUSH1 0x1 ADD SLOAD DUP9 PUSH1 0x2 ADD SLOAD DUP10 PUSH1 0x4 ADD SLOAD DUP11 PUSH1 0x0 ADD PUSH1 0x5 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP12 PUSH1 0xF ADD DUP13 PUSH1 0x10 ADD DUP14 PUSH1 0x11 ADD DUP15 PUSH1 0x12 ADD DUP16 PUSH1 0x13 ADD PUSH1 0x40 MLOAD PUSH2 0x205D SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2964 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2083 JUMPI PUSH2 0x2083 PUSH2 0x24E6 JUMP JUMPDEST SUB PUSH2 0x1D4E JUMPI DUP2 PUSH32 0x632E7AF18AA775A9A28C2F3530920C3DC0924EFE616499DE9943F6DC93C699A5 DUP3 PUSH1 0x5 ADD SLOAD DUP4 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x20C2 SWAP3 SWAP2 SWAP1 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2120 JUMPI PUSH2 0x2120 PUSH2 0x20E7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x214E JUMPI PUSH2 0x214E PUSH2 0x20E7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x216F JUMPI PUSH2 0x216F PUSH2 0x20E7 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x218A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x219F PUSH2 0x219A DUP4 PUSH2 0x2156 JUMP JUMPDEST PUSH2 0x2126 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x21BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x21EF JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x21E2 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x21C2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x220D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x222A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2236 DUP6 DUP3 DUP7 ADD PUSH2 0x2179 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x224F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x2275 PUSH2 0x219A DUP4 PUSH2 0x2156 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x2294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x21EF JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x2298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x22C8 JUMPI PUSH2 0x22C8 PUSH2 0x20E7 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x22E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x22F5 PUSH2 0x219A DUP3 PUSH2 0x22AF JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x230A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH2 0x1C0 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x2365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x236D PUSH2 0x20FD JUMP JUMPDEST PUSH2 0x2376 DUP4 PUSH2 0x2240 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2384 PUSH1 0x20 DUP5 ADD PUSH2 0x2240 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2395 PUSH1 0x40 DUP5 ADD PUSH2 0x2240 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP4 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP4 ADD CALLDATALOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x23E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23EC DUP9 DUP3 DUP8 ADD PUSH2 0x2254 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x120 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2412 DUP9 DUP3 DUP8 ADD PUSH2 0x2179 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x140 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x242C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2438 DUP9 DUP3 DUP8 ADD PUSH2 0x22D6 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x160 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x245E DUP9 DUP3 DUP8 ADD PUSH2 0x22D6 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x180 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2484 DUP9 DUP3 DUP8 ADD PUSH2 0x22D6 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x1A0 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x249E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24AA DUP9 DUP3 DUP8 ADD PUSH2 0x22D6 JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x199C JUMPI PUSH2 0x199C PUSH2 0x24FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x224F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7BC DUP3 PUSH2 0x253E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x2591 JUMPI PUSH2 0x2591 PUSH2 0x24FC JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x199C JUMPI PUSH2 0x199C PUSH2 0x24FC JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x25CD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x25ED JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x10F5 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x261A JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2639 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2626 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x265A JUMPI PUSH2 0x265A PUSH2 0x20E7 JUMP JUMPDEST PUSH2 0x266E DUP2 PUSH2 0x2668 DUP5 SLOAD PUSH2 0x25B9 JUMP JUMPDEST DUP5 PUSH2 0x25F3 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x26A3 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x268B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x2639 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x26D2 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x26B3 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x26F0 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x271D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x276E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x199C JUMPI PUSH2 0x199C PUSH2 0x24FC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x27A7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x278F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27CC DUP4 PUSH2 0x253E JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x27E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x27F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2807 PUSH2 0x219A DUP3 PUSH2 0x22AF JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x281C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x282D DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x278C JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x2867 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x278C JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x1C85 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x28A3 DUP2 PUSH2 0x287C JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP4 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28DC JUMPI DUP2 SLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 PUSH1 0x1 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x28C0 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH2 0x28F4 DUP2 PUSH2 0x25B9 JUMP JUMPDEST DUP1 DUP6 MSTORE PUSH1 0x20 PUSH1 0x1 DUP4 DUP2 AND DUP1 ISZERO PUSH2 0x2911 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x292B JUMPI PUSH2 0x2959 JUMP JUMPDEST PUSH1 0xFF NOT DUP6 AND DUP9 DUP5 ADD MSTORE DUP4 ISZERO ISZERO PUSH1 0x5 SHL DUP9 ADD DUP4 ADD SWAP6 POP PUSH2 0x2959 JUMP JUMPDEST DUP7 PUSH1 0x0 MSTORE DUP3 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2951 JUMPI DUP2 SLOAD DUP11 DUP3 ADD DUP7 ADD MSTORE SWAP1 DUP4 ADD SWAP1 DUP5 ADD PUSH2 0x2936 JUMP JUMPDEST DUP10 ADD DUP5 ADD SWAP7 POP POP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 PUSH2 0x2972 DUP16 PUSH2 0x287C JUMP JUMPDEST DUP15 DUP4 MSTORE PUSH2 0x2982 PUSH1 0x20 DUP5 ADD DUP16 PUSH2 0x289A JUMP JUMPDEST PUSH2 0x298F PUSH1 0x40 DUP5 ADD DUP15 PUSH2 0x289A JUMP JUMPDEST DUP12 PUSH1 0x60 DUP5 ADD MSTORE DUP11 PUSH1 0x80 DUP5 ADD MSTORE DUP10 PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x29AF PUSH1 0xC0 DUP5 ADD DUP11 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST DUP1 PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x29C1 DUP2 DUP5 ADD DUP10 PUSH2 0x28A7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x29D6 DUP2 DUP9 PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x29EB DUP2 DUP8 PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x140 DUP5 ADD MSTORE PUSH2 0x2A00 DUP2 DUP7 PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x160 DUP5 ADD MSTORE PUSH2 0x2A15 DUP2 DUP6 PUSH2 0x28E7 JUMP JUMPDEST SWAP16 SWAP15 POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E DUP3 0xD2 0xC8 0xE9 RETURNDATASIZE SWAP5 0xC8 0x2A 0xB1 PC JUMPDEST SWAP5 0xB8 MOD 0x4A 0xDE SWAP4 0xD7 0xD8 BASEFEE EXTCODEHASH PUSH4 0x48089670 ADDMOD SHR 0xEB CHAINID 0xD2 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"533:24462:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10244:1111;;;;;;;;;;-1:-1:-1;10244:1111:23;;;;;:::i;:::-;;:::i;:::-;;6686:413;;;;;;;;;;-1:-1:-1;6686:413:23;;;;;:::i;:::-;;:::i;9042:1096::-;;;;;;;;;;-1:-1:-1;9042:1096:23;;;;;:::i;:::-;;:::i;13047:623::-;;;;;;:::i;:::-;;:::i;:::-;;;2511:4:46;2499:17;;;2481:36;;2469:2;2454:18;13047:623:23;;;;;;;;11449:401;;;;;;;;;;-1:-1:-1;11449:401:23;;;;;:::i;:::-;;:::i;12041:812::-;;;;;;;;;;-1:-1:-1;12041:812:23;;;;;:::i;:::-;;:::i;3054:3487::-;;;;;;;;;;-1:-1:-1;3054:3487:23;;;;;:::i;:::-;;:::i;:::-;;;6342:25:46;;;6330:2;6315:18;3054:3487:23;6188:185:46;7191:1730:23;;;;;;;;;;-1:-1:-1;7191:1730:23;;;;;:::i;:::-;;:::i;10244:1111::-;10306:49;10358:44;:42;:44::i;:::-;10306:96;;10408:42;10453:26;10467:11;10453:13;:26::i;:::-;10408:71;;10486:47;10510:11;10523:9;10486:23;:47::i;:::-;10558:17;;-1:-1:-1;;;10558:17:23;;-1:-1:-1;;;;;10558:17:23;10544:10;:31;10540:94;;10623:10;10584:50;;-1:-1:-1;;;10584:50:23;;;;;;;;:::i;:::-;;;;;;;;10540:94;10645:33;;;;:20;;;:33;;;;;;;;10679:10;10645:45;;;;;;;;;;10640:106;;10722:11;10735:10;10699:47;;-1:-1:-1;;;10699:47:23;;;;;;;;;:::i;10640:106::-;10805:39;10757:32;;;;:19;;;:32;;;;;;;;10790:10;10757:44;;;;;;;;;;:87;;;;;;;;:::i;:::-;;10753:383;;10854:43;10873:11;10886:10;10854:18;:43::i;:::-;10928:34;10910:14;;;;;:52;;;;;;;:::i;:::-;;10906:224;;10998:9;:21;;;10974:9;:20;;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;11034:6:23;;;11062:21;;;11034:50;;-1:-1:-1;;;11034:50:23;;-1:-1:-1;;;;;11034:6:23;;;;:15;;:50;;11050:10;;11062:21;11034:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11029:92;;11093:28;;-1:-1:-1;;;11093:28:23;;;;;;;;;;;11029:92;11142:52;11170:11;11183:10;11142:27;:52::i;:::-;11200:53;11229:11;11242:10;11200:28;:53::i;:::-;11259:37;11272:11;11285:10;11259:12;:37::i;:::-;11308:42;;11339:10;;11326:11;;11308:42;;;;;10300:1055;;10244:1111;:::o;6686:413::-;6769:42;6814:26;6828:11;6814:13;:26::i;:::-;6769:71;;6847:47;6871:11;6884:9;6847:23;:47::i;:::-;6919:17;;-1:-1:-1;;;6919:17:23;;-1:-1:-1;;;;;6919:17:23;6905:10;:31;6901:94;;6984:10;6945:50;;-1:-1:-1;;;6945:50:23;;;;;;;;:::i;6901:94::-;7007:9;7002:93;7022:8;:15;7018:1;:19;7002:93;;;7052:36;7063:11;7076:8;7085:1;7076:11;;;;;;;;:::i;:::-;;;;;;;7052:10;:36::i;:::-;7039:3;;;;:::i;:::-;;;;7002:93;;;;6763:336;6686:413;;:::o;9042:1096::-;9102:49;9154:44;:42;:44::i;:::-;9102:96;;9204:42;9249:26;9263:11;9249:13;:26::i;:::-;9204:71;;9282:47;9306:11;9319:9;9282:23;:47::i;:::-;9354:17;;-1:-1:-1;;;9354:17:23;;-1:-1:-1;;;;;9354:17:23;9340:10;:31;9336:87;;9380:43;;-1:-1:-1;;;9380:43:23;;;;;6342:25:46;;;6315:18;;9380:43:23;6188:185:46;9336:87:23;9481:39;9433:32;;;;:19;;;:32;;;;;;;;9466:10;9433:44;;;;;;;;;;:87;;;;;;;;:::i;:::-;;9429:168;;9566:11;9579:10;9537:53;;-1:-1:-1;;;9537:53:23;;;;;;;;;:::i;9429:168::-;9603:43;9622:11;9635:10;9603:18;:43::i;:::-;9675:34;9657:14;;;;;:52;;;;;;;:::i;:::-;;9653:218;;9743:9;:21;;;9719:9;:20;;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;9777:6:23;;;9805:21;;;9777:50;;-1:-1:-1;;;9777:50:23;;-1:-1:-1;;;;;9777:6:23;;;;:15;;:50;;9793:10;;9805:21;9777:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9772:92;;9836:28;;-1:-1:-1;;;9836:28:23;;;;;;;;;;;9772:92;9881:33;;;;:20;;;:33;;;;;;;;9915:10;9881:45;;;;;;;;;;9877:207;;;9936:36;9948:11;9961:10;9936:11;:36::i;:::-;9877:207;;;10040:37;9993:32;;;:19;;;:32;;;;;;;;10026:10;9993:44;;;;;;;:84;;-1:-1:-1;;9993:84:23;;;9877:207;10095:38;;10122:10;;10109:11;;10095:38;;;;;9096:1042;;9042:1096;:::o;13047:623::-;13116:5;13129:49;13181:44;:42;:44::i;:::-;13129:96;;13231:42;13276:26;13290:11;13276:13;:26::i;:::-;13231:71;-1:-1:-1;13333:38:23;13313:16;;;;;;;:58;;;;;;;;:::i;:::-;;13309:109;;13394:16;;;;;;;13388:23;;;;;;;;:::i;:::-;13381:30;13047:623;-1:-1:-1;;;;13047:623:23:o;13309:109::-;13447:9;:20;;;13428:16;13442:1;13428:13;:16::i;:::-;:39;13424:112;;;13490:38;13484:45;;13424:112;13555:28;13573:9;13555:17;:28::i;:::-;:109;;13626:38;13555:109;;;13586:37;13555:109;13549:116;;;;;;;;:::i;11449:401::-;11510:42;11555:26;11569:11;11555:13;:26::i;:::-;11510:71;;11588:47;11612:11;11625:9;11588:23;:47::i;:::-;11660:17;;-1:-1:-1;;;11660:17:23;;-1:-1:-1;;;;;11660:17:23;11646:10;:31;11642:94;;11725:10;11686:50;;-1:-1:-1;;;11686:50:23;;;;;;;;:::i;11642:94::-;11743:59;;-1:-1:-1;;11743:59:23;;;;;11814:31;;11833:11;;11814:31;;-1:-1:-1;;11814:31:23;11504:346;11449:401;:::o;12041:812::-;12103:5;12116:42;12161:26;12175:11;12161:13;:26::i;:::-;12116:71;-1:-1:-1;12218:38:23;12198:16;;;;;;;:58;;;;;;;;:::i;:::-;;12194:109;;12279:16;;;;;;;12273:23;;;;;;;;:::i;:::-;12266:30;12041:812;-1:-1:-1;;;12041:812:23:o;12194:109::-;12412:39;12485:30;12503:11;12485:17;:30::i;:::-;12454:62;;;;;;;;;;:::i;:::-;12412:104;-1:-1:-1;12538:38:23;12526:8;:50;;;;;;;;:::i;:::-;;12522:93;;12599:8;12593:15;;;;;;;;:::i;12522:93::-;12621:27;;12640:8;;12621:9;;-1:-1:-1;;12621:27:23;;12640:8;12621:27;;;;;;;;:::i;:::-;;;;;-1:-1:-1;12671:37:23;12659:8;:49;;;;;;;;:::i;:::-;;12655:165;;12723:31;;12742:11;;12723:31;;;;;12655:165;;;12780:33;;12801:11;;12780:33;;;;;12655:165;12839:8;12833:15;;;;;;;;:::i;3054:3487::-;3149:19;3176:49;3228:44;:42;:44::i;:::-;3176:96;;3278:20;3301:16;3315:1;3301:13;:16::i;:::-;3278:39;;3328:6;:18;;;3350:1;3328:23;3324:63;;3360:27;;-1:-1:-1;;;3360:27:23;;;;;;;;;;;3324:63;3418:1;:14;;;3397:6;:18;;;:35;3393:132;;;3483:6;:18;;;3503:1;:14;;;3449:69;;-1:-1:-1;;;3449:69:23;;;;;;;;;:::i;3393:132::-;3637:18;3658:6;:17;;;3679:1;3658:22;:61;;3702:6;:17;;;3658:61;;;3683:16;:12;3698:1;3683:16;:::i;:::-;3637:82;;3743:12;3729:10;:26;3725:94;;3794:10;3806:12;3764:55;;-1:-1:-1;;;3764:55:23;;;;;;;;;:::i;3725:94::-;3847:10;3829:6;:15;;;:28;3825:97;;;3906:15;;;;3866:56;;-1:-1:-1;;;3866:56:23;;;;3894:10;;3866:56;;;:::i;3825:97::-;3929:16;3966:10;3948:6;:15;;;:28;;;;:::i;:::-;:32;;3979:1;3948:32;:::i;:::-;3929:51;;4001:1;:22;;;3990:8;:33;3986:135;;;4081:8;4091:1;:22;;;4040:74;;-1:-1:-1;;;4040:74:23;;;;;;;;;:::i;3986:135::-;4229:13;;;;:20;:25;;4260:212;;4309:1;:17;;;4286:6;:13;;;:20;:40;4282:148;;;4381:6;:13;;;:20;4403:1;:17;;;4345:76;;-1:-1:-1;;;4345:76:23;;;;;;;;;:::i;4282:148::-;4437:28;4451:6;:13;;;4437;:28::i;:::-;4478:34;4505:6;4478:26;:34::i;:::-;4518:32;4543:6;4518:24;:32::i;:::-;4573:1;:16;;;4571:18;;;;;:::i;:::-;;;;;-1:-1:-1;4595:42:23;4640:25;;;:12;;;:25;;;;;4689:11;;4672:28;;4571:18;;-1:-1:-1;4640:25:23;;;;-1:-1:-1;;4672:28:23;;4689:11;4672:28;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4729:17:23;;;;4706:40;;:9;;-1:-1:-1;;4706:40:23;;4729:17;4706:20;:40;;;;;;;:::i;:::-;;;;;-1:-1:-1;4778:20:23;;;;4752:46;;:9;;-1:-1:-1;;4752:46:23;;4778:20;4752:46;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4804:57:23;;4994:18;;;;-1:-1:-1;4970:21:23;;:42;;;5018:20;;;:33;;;5078:15;;;;5057:18;;;:36;5121:16;;;;5099:19;;;:38;5166:17;;;;5143:20;;;:40;-1:-1:-1;;;;;;5189:27:23;;;4954:10;-1:-1:-1;;;4934:30:23;-1:-1:-1;;;;5189:27:23;;-1:-1:-1;;;5189:27:23;;;;;;;5222:20;;;:41;5287:12;;;;5269:15;;;;:30;;:15;:30;:::i;:::-;-1:-1:-1;5329:18:23;;;;5305:21;;;;:42;;:21;:42;:::i;:::-;-1:-1:-1;5374:15:23;;;;5353:18;;;;:36;;:18;:36;:::i;:::-;-1:-1:-1;5419:18:23;;;;5395:21;;;;:42;;:21;:42;:::i;:::-;-1:-1:-1;5659:37:23;5635:6;:20;;;:61;;;;;;;;:::i;:::-;;5631:147;;5754:6;:17;;;5733:6;:18;;;:38;;;;:::i;:::-;5706:24;;;:65;5631:147;5789:9;5784:101;5804:6;:13;;;:20;5800:1;:24;5784:101;;;5839:9;:16;;5861:6;:13;;;5875:1;5861:16;;;;;;;;:::i;:::-;;;;;;;;;;;;5839:39;;;;;;;-1:-1:-1;5839:39:23;;;;;;;;;5826:3;;;;:::i;:::-;;;;5784:101;;;-1:-1:-1;5896:6:23;;5943:18;;;;5896:66;;-1:-1:-1;;;5896:66:23;;-1:-1:-1;;;;;5896:6:23;;;;:19;;:66;;5916:10;;5936:4;;5896:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5891:108;;5971:28;;-1:-1:-1;;;5971:28:23;;;;;;;;;;;5891:108;6244:34;6229:11;;:49;;;;;;;;:::i;:::-;;6225:147;;6288:29;6303:1;6306:10;6288:14;:29::i;:::-;6325:40;6341:11;6354:10;6325:15;:40::i;:::-;6378:45;6400:11;6413:9;6378:21;:45::i;:::-;6435:9;6430:107;6450:6;:15;;;:22;6446:1;:26;6430:107;;;6487:43;6498:11;6511:6;:15;;;6527:1;6511:18;;;;;;;;:::i;6487:43::-;6474:3;;;;:::i;:::-;;;;6430:107;;;;3170:3371;;;;;;3054:3487;;;:::o;7191:1730::-;7250:49;7302:44;:42;:44::i;:::-;7250:96;;7352:42;7397:26;7411:11;7397:13;:26::i;:::-;7352:71;;7430:47;7454:11;7467:9;7430:23;:47::i;:::-;7502:17;;-1:-1:-1;;;7502:17:23;;-1:-1:-1;;;;;7502:17:23;7488:10;:31;7484:86;;7528:42;;-1:-1:-1;;;7528:42:23;;;;;6342:25:46;;;6315:18;;7528:42:23;6188:185:46;7484:86:23;7605:42;7581:20;;;;;;;;:66;;;;;;;:::i;:::-;;:116;;;;-1:-1:-1;7652:33:23;;;;:20;;;:33;;;;;;;;7686:10;7652:45;;;;;;;;;;7651:46;7581:116;7577:191;;;7737:11;7750:10;7714:47;;-1:-1:-1;;;7714:47:23;;;;;;;;;:::i;7577:191::-;7826:39;7778:32;;;;:19;;;:32;;;;;;;;7811:10;7778:44;;;;;;;;;;:87;;;;;;;;:::i;:::-;;7774:172;;7915:11;7928:10;7882:57;;-1:-1:-1;;;7882:57:23;;;;;;;;;:::i;7774:172::-;8065:29;8080:1;8083:10;8065:14;:29::i;:::-;8241:39;8214:23;;;;;;;:66;;;;;;;;:::i;:::-;;:126;;;;-1:-1:-1;8323:17:23;;;;8290:22;;;:29;:50;;8214:126;8203:255;;;8398:22;;;:29;:33;;8430:1;8398:33;:::i;:::-;8433:1;:17;;;8362:89;;-1:-1:-1;;;8362:89:23;;;;;;;;;:::i;8203:255::-;8486:34;8468:14;;;;;:52;;;;;;;:::i;:::-;;8464:237;;8554:9;:21;;;8530:9;:20;;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;8588:6:23;;;8635:21;;;8588:69;;-1:-1:-1;;;8588:69:23;;-1:-1:-1;;;;;8588:6:23;;;;:19;;:69;;8608:10;;8628:4;;8588:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8583:111;;8666:28;;-1:-1:-1;;;8666:28:23;;;;;;;;;;;8583:111;8707:52;8735:11;8748:10;8707:27;:52::i;:::-;8765:53;8794:11;8807:10;8765:28;:53::i;:::-;8824:40;8840:11;8853:10;8824:15;:40::i;:::-;8876;;8905:10;;8892:11;;8876:40;;;;;7244:1677;;7191:1730;:::o;2977:152:25:-;3094:25;;2977:152::o;24616:377:23:-;24682:42;24732:49;24784:44;:42;:44::i;:::-;24732:96;-1:-1:-1;24839:16:23;;;:50;;;24873:1;:16;;;24859:11;:30;24839:50;24835:109;;;24898:46;;-1:-1:-1;;;24898:46:23;;;;;6342:25:46;;;6315:18;;24898:46:23;6188:185:46;24835:109:23;24963:25;;;;:12;;:25;;-1:-1:-1;24963:25:23;;;;24616:377::o;17069:471::-;17210:38;17190:16;;;;;;;:58;;;;;;;;:::i;:::-;;17186:130;;17265:44;;-1:-1:-1;;;17265:44:23;;;;;6342:25:46;;;6315:18;;17265:44:23;6188:185:46;17186:130:23;17322:49;17374:44;:42;:44::i;:::-;17322:96;;17448:9;:20;;;17428:16;17442:1;17428:13;:16::i;:::-;:40;17424:112;;17485:44;;-1:-1:-1;;;17485:44:23;;;;;6342:25:46;;;6315:18;;17485:44:23;6188:185:46;17424:112:23;17180:360;17069:471;;:::o;19827:951::-;19911:49;19963:44;:42;:44::i;:::-;20013:42;20058:25;;;:12;;;:25;;;;;;;;20112;;;:38;;;;;-1:-1:-1;;;;;20112:51:23;;;;;;;;;;19911:96;;-1:-1:-1;20058:25:23;20112:51;20174:17;;;20170:84;;20229:11;20242;20200:54;;-1:-1:-1;;;20200:54:23;;;;;;;;;:::i;20170:84::-;20261:13;20277:16;20292:1;20277:12;:16;:::i;:::-;20319:22;;;:29;20261:32;;-1:-1:-1;20299:17:23;;20319:33;;20351:1;;20319:33;:::i;:::-;20299:53;;20484:9;20475:5;:18;20471:204;;20503:15;20521:9;:22;;20544:9;20521:33;;;;;;;;:::i;:::-;;;;;;;;;;;20562:22;;;:29;;-1:-1:-1;;;;;20521:33:23;;;;-1:-1:-1;20521:33:23;;20585:5;;20562:29;;;;;;:::i;:::-;;;;;;;;;;:39;;-1:-1:-1;;;;;;20562:39:23;-1:-1:-1;;;;;20562:39:23;;;;;;;;;;20659:9;:5;-1:-1:-1;20659:9:23;:::i;:::-;20609:38;;;;:25;;;:38;;;;;;;;-1:-1:-1;;;;;20609:47:23;;;;;;;;;;;;:59;20471:204;20681:9;:22;;:28;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;20681:28:23;;;;;-1:-1:-1;;;;;;20681:28:23;;;;;;;;;20722:38;;;:25;;;;:38;;-1:-1:-1;;20722:38:23;;;;-1:-1:-1;;;;;20722:51:23;;;;;;;;;;-1:-1:-1;20722:51:23;;;20715:58;-1:-1:-1;19827:951:23:o;22051:763::-;22140:49;22192:44;:42;:44::i;:::-;22242:42;22287:25;;;:12;;;:25;;;;;;;;22341:21;;;:34;;;;;-1:-1:-1;;;;;22341:43:23;;;;;;;;;;22140:96;;-1:-1:-1;22287:25:23;22341:43;22395:17;;;22391:44;;22422:7;;;22051:763;;:::o;22391:44::-;22441:13;22457:16;22472:1;22457:12;:16;:::i;:::-;22499:17;;;:24;22441:32;;-1:-1:-1;22479:17:23;;22499:28;;22526:1;;22499:28;:::i;:::-;22479:48;;22547:9;22538:5;:18;22534:190;;22566:15;22584:9;:17;;22602:9;22584:28;;;;;;;;:::i;:::-;;;;;;;;;;;22620:17;;;:24;;-1:-1:-1;;;;;22584:28:23;;;;-1:-1:-1;22584:28:23;;22638:5;;22620:24;;;;;;:::i;:::-;;;;;;;;;;:34;;-1:-1:-1;;;;;;22620:34:23;-1:-1:-1;;;;;22620:34:23;;;;;;;;;;22708:9;:5;-1:-1:-1;22708:9:23;:::i;:::-;22662:34;;;;:21;;;:34;;;;;;;;-1:-1:-1;;;;;22662:43:23;;;;;;;;;;;;:55;22534:190;22730:9;:17;;:23;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;22730:23:23;;;;;-1:-1:-1;;;;;;22730:23:23;;;;;;;;;22766:34;;;:21;;;;:34;;-1:-1:-1;;22766:34:23;;;;-1:-1:-1;;;;;22766:43:23;;;;;;;;;;-1:-1:-1;22766:43:23;;;22759:50;-1:-1:-1;22051:763:23:o;22818:771::-;22908:49;22960:44;:42;:44::i;:::-;23010:42;23055:25;;;:12;;;:25;;;;;;;;23109:22;;;:35;;;;;-1:-1:-1;;;;;23109:44:23;;;;;;;;;;22908:96;;-1:-1:-1;23055:25:23;23109:44;23164:17;;;23160:44;;23191:7;;;22818:771;;:::o;23160:44::-;23210:13;23226:16;23241:1;23226:12;:16;:::i;:::-;23268:18;;;:25;23210:32;;-1:-1:-1;23248:17:23;;23268:29;;23296:1;;23268:29;:::i;:::-;23248:49;;23317:9;23308:5;:18;23304:193;;23336:15;23354:9;:18;;23373:9;23354:29;;;;;;;;:::i;:::-;;;;;;;;;;;23391:18;;;:25;;-1:-1:-1;;;;;23354:29:23;;;;-1:-1:-1;23354:29:23;;23410:5;;23391:25;;;;;;:::i;:::-;;;;;;;;;;:35;;-1:-1:-1;;;;;;23391:35:23;-1:-1:-1;;;;;23391:35:23;;;;;;;;;;23481:9;:5;-1:-1:-1;23481:9:23;:::i;:::-;23434:35;;;;:22;;;:35;;;;;;;;-1:-1:-1;;;;;23434:44:23;;;;;;;;;;;;:56;23304:193;23503:9;:18;;:24;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;23503:24:23;;;;;-1:-1:-1;;;;;;23503:24:23;;;;;;;;;23540:35;;;:22;;;;:35;;-1:-1:-1;;23540:35:23;;;;-1:-1:-1;;;;;23540:44:23;;;;;;;;;;-1:-1:-1;23540:44:23;;;23533:51;-1:-1:-1;22818:771:23:o;21413:634::-;21487:49;21539:44;:42;:44::i;:::-;21589:42;21634:25;;;:12;;;:25;;;;;;;;21670:22;;;:35;;;;;-1:-1:-1;;;;;21670:44:23;;;;;;;;;;;21487:96;;-1:-1:-1;21634:25:23;21670:49;21666:169;;21729:32;;;;:19;;;:32;;;;;;;;-1:-1:-1;;;;;21729:41:23;;;;;;;;;:85;;21773:41;;21729;-1:-1:-1;;21729:85:23;;21773:41;21729:85;;;;;;21822:7;;21413:634;;:::o;21666:169::-;21841:18;;;;:32;;;;;;;;-1:-1:-1;21841:32:23;;;;;;;;;;;;-1:-1:-1;;;;;;21841:32:23;-1:-1:-1;;;;;21841:32:23;;;;;;;;21926:25;;21879:35;;;:22;;;:35;;;;;;:44;;;;;;;;:72;;;;21957:32;;;:19;;;:32;;;;;:41;;;;;;;;;;:85;;22001:41;;-1:-1:-1;;21957:85:23;;;;22001:41;21957:85;;18256:928;18328:49;18380:44;:42;:44::i;:::-;18328:96;-1:-1:-1;;;;;;18435:21:23;;18431:59;;18465:25;;-1:-1:-1;;;18465:25:23;;;;;;;;;;;18431:59;18497:42;18542:25;;;:12;;;:25;;;;;18588:17;;-1:-1:-1;;;;;;;;18588:17:23;;;;;18577:28;;;;18573:55;;18615:7;;18256:928;;:::o;18573:55::-;18683:39;18638:32;;;;:19;;;:32;;;;;;;;-1:-1:-1;;;;;18638:41:23;;;;;;;;;;;;:84;;;;;;;;:::i;:::-;;18634:111;;18732:7;;18256:928;;:::o;18634:111::-;18800:40;18755:32;;;;:19;;;:32;;;;;;;;-1:-1:-1;;;;;18755:41:23;;;;;;;;;;;;:85;;;;;;;;:::i;:::-;;18751:161;;18884:11;18897:7;18857:48;;-1:-1:-1;;;18857:48:23;;;;;;;;;:::i;18751:161::-;18923:33;;;;:20;;;:33;;;;;;;;-1:-1:-1;;;;;18923:42:23;;;;;;;;;;;;18918:113;;18975:33;;;;:20;;;:33;;;;;;;;-1:-1:-1;;;;;18975:42:23;;;;;;;;;:49;;-1:-1:-1;;18975:49:23;19020:4;18975:49;;;18918:113;19037:50;19066:11;19079:7;19037:28;:50::i;:::-;19093:33;19105:11;19118:7;19093:11;:33::i;:::-;19137:42;;-1:-1:-1;;;;;19137:42:23;;;19158:11;;19137:42;;;;;18322:862;;18256:928;;:::o;20782:627::-;20855:49;20907:44;:42;:44::i;:::-;20957:42;21002:25;;;:12;;;:25;;;;;;;;21038:21;;;:34;;;;;-1:-1:-1;;;;;21038:43:23;;;;;;;;;;;20855:96;;-1:-1:-1;21002:25:23;21038:48;21034:167;;21096:32;;;;:19;;;:32;;;;;;;;-1:-1:-1;;;;;21096:41:23;;;;;;;;;:84;;21140:40;;21096:41;-1:-1:-1;;21096:84:23;21140:40;;21096:84;;21034:167;21207:17;;;;:31;;;;;;;;-1:-1:-1;21207:31:23;;;;;;;;;;;;-1:-1:-1;;;;;;21207:31:23;-1:-1:-1;;;;;21207:31:23;;;;;;;;21290:24;;21244:34;;;:21;;;:34;;;;;;:43;;;;;;;;:70;;;;21320:32;;;:19;;;:32;;;;;:41;;;;;;;;;;:84;;-1:-1:-1;;21320:84:23;21207:31;;21320:84;;24453:159;24571:19;;;;:36;;;-1:-1:-1;;;24571:36:23;;;;24549:7;;-1:-1:-1;;;;;24571:19:23;;:34;;:36;;;;;;;;;;;;;;:19;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24564:43;24453:159;-1:-1:-1;;24453:159:23:o;24068:381::-;24161:4;;;24319:14;;;;;:52;;;;;;;:::i;:::-;;:60;;24378:1;24319:60;;;24374:1;24319:60;24392:22;;;;:29;24289:90;;;;;24392:52;;;;;24068:381;-1:-1:-1;;24068:381:23:o;16622:443::-;16689:49;16741:44;:42;:44::i;:::-;16689:96;;16797:9;16792:269;16812:6;:13;16808:1;:17;16792:269;;;16845:12;;;;16868:9;;-1:-1:-1;;;;;16845:12:23;;;;:22;;16868:6;;16875:1;;16868:9;;;;;;:::i;:::-;;;;;;;16845:33;;;;;;;;;;;;;6342:25:46;;6330:2;6315:18;;6188:185;16845:33:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16840:89;;16919:6;16926:1;16919:9;;;;;;;;:::i;:::-;;;;;;;16887:42;;-1:-1:-1;;;16887:42:23;;;;;;6342:25:46;;6330:2;6315:18;;6188:185;16840:89:23;16943:9;16938:117;16958:1;16954;:5;16938:117;;;16993:6;17000:1;16993:9;;;;;;;;:::i;:::-;;;;;;;16980:6;16987:1;16980:9;;;;;;;;:::i;:::-;;;;;;;:22;16976:70;;17036:6;17043:1;17036:9;;;;;;;;:::i;:::-;;;;;;;17011:35;;-1:-1:-1;;;17011:35:23;;;;;;6342:25:46;;6330:2;6315:18;;6188:185;16976:70:23;16961:3;;;;:::i;:::-;;;;16938:117;;;-1:-1:-1;16827:3:23;;;;:::i;:::-;;;;16792:269;;14194:1538;14320:34;14305:11;;:49;;;;;;;;:::i;:::-;;14301:724;;14487:42;14466:6;:17;;;:63;;;;;;;;:::i;:::-;;;:138;;;-1:-1:-1;14565:39:23;14541:6;:20;;;:63;;;;;;;;:::i;:::-;;;14466:138;14453:228;;;14630:42;;-1:-1:-1;;;14630:42:23;;;;;;;;;;;14453:228;14301:724;;;14828:41;14807:6;:17;;;:62;;;;;;;;:::i;:::-;;:135;;;;-1:-1:-1;14905:37:23;14881:6;:20;;;:61;;;;;;;;:::i;:::-;;;14807:135;14794:225;;;14968:42;;-1:-1:-1;;;14968:42:23;;;;;;;;;;;14794:225;15059:39;15035:6;:20;;;:63;;;;;;;;:::i;:::-;;15031:196;;15112:16;;;;:21;;;:47;;-1:-1:-1;15137:17:23;;;;:22;;15112:47;15108:98;;;15168:38;;-1:-1:-1;;;15168:38:23;;;;;;;;;;;15108:98;14194:1538;:::o;15031:196::-;15280:16;;;;:21;;:47;;-1:-1:-1;15305:17:23;;;;:22;15280:47;15276:98;;;15336:38;;-1:-1:-1;;;15336:38:23;;;;;;;;;;;15276:98;881:9;15384:6;:16;;;:32;15380:121;;;15462:6;:16;;;881:9;15433:61;;-1:-1:-1;;;15433:61:23;;;;;;;;;:::i;15380:121::-;15507:16;829:7;15526:6;:17;;;:40;;;;:::i;:::-;15507:59;;15597:8;15576:6;:18;;;:29;15572:156;;;15661:18;;;;15681:17;;;;15622:99;;-1:-1:-1;;;15622:99:23;;;;;12823:25:46;;;;12864:18;;;12857:34;829:7:23;12907:18:46;;;12900:34;12796:18;;15622:99:23;12621:319:46;15572:156:23;14295:1437;14194:1538;:::o;15736:882::-;15869:12;;;;15863:26;607:3;15899:29;;15895:96;;;15962:11;607:3;15937:54;;-1:-1:-1;;;15937:54:23;;;;;;;;;:::i;15895:96::-;16032:18;;;;16026:32;663:3;16068:41;;16064:141;;;16157:17;663:3;16126:72;;-1:-1:-1;;;16126:72:23;;;;;;;;;:::i;16064:141::-;16242:15;;;;16236:29;717:3;16275:36;;16271:128;;;16356:14;717:3;16328:64;;-1:-1:-1;;;16328:64:23;;;;;;;;;:::i;16271:128::-;16439:18;;;;16433:32;774:3;16475:42;;16471:143;;;16565:17;774:3;16534:73;;-1:-1:-1;;;16534:73:23;;;;;;;;;:::i;16471:143::-;15835:783;;;;15736:882;:::o;23798:266::-;23949:18;;;;:36;;-1:-1:-1;;;23949:36:23;;23910:13;;;;-1:-1:-1;;;;;23949:18:23;;;;:27;;:36;;23977:7;;23949:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23949:36:23;;;;;;;;;;;;:::i;:::-;23909:76;;;;23996:8;23991:68;;24043:7;24052:6;24013:46;;-1:-1:-1;;;24013:46:23;;;;;;;;;:::i;19188:635::-;19269:49;19321:44;:42;:44::i;:::-;19371:42;19416:25;;;:12;;;:25;;;;;;;;19452;;;:38;;;;;-1:-1:-1;;;;;19452:51:23;;;;;;;;;;;19269:96;;-1:-1:-1;19416:25:23;19452:56;19448:142;;19558:11;19571;19525:58;;-1:-1:-1;;;19525:58:23;;;;;;;;;:::i;19448:142::-;19596:22;;;;:40;;;;;;;;-1:-1:-1;19596:40:23;;;;;;;;;;;;-1:-1:-1;;;;;;19596:40:23;-1:-1:-1;;;;;19596:40:23;;;;;;;;19696:29;;19642:38;;;:25;;;:38;;;;;;:51;;;;;;;;:83;;;;19731:32;;;:19;;;:32;;;;;:45;;;;;;;;;;:87;;19779:39;;-1:-1:-1;;19731:87:23;;;;19779:39;19731:87;;17544:708;17727:9;:18;;;17702:9;:17;;;;;;;;;;-1:-1:-1;;;;;17702:17:23;-1:-1:-1;;;;;17659:413:23;17683:11;17659:413;17753:9;:14;;;;;;;;;;;;17775:9;:20;;;;;;;;;;;;17803:9;:23;;;;;;;;;;;;17834:9;:21;;;17863:9;:20;;;17891:9;:19;;;17918:9;:17;;;;;;;;;;;;17943:9;:16;;17967:9;:15;;17990:9;:21;;18019:9;:18;;18045:9;:21;;17659:413;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;18110:37;18083:23;;;;;;;:64;;;;;;;;:::i;:::-;;18079:169;;18181:11;18162:79;18194:9;:20;;;18216:9;:24;;;18162:79;;;;;;;:::i;:::-;;;;;;;;17544:708;;:::o;14:180:46:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:46;;14:180;-1:-1:-1;14:180:46:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:255;403:2;397:9;445:6;433:19;;-1:-1:-1;;;;;467:34:46;;503:22;;;464:62;461:88;;;529:18;;:::i;:::-;565:2;558:22;331:255;:::o;591:275::-;662:2;656:9;727:2;708:13;;-1:-1:-1;;704:27:46;692:40;;-1:-1:-1;;;;;747:34:46;;783:22;;;744:62;741:88;;;809:18;;:::i;:::-;845:2;838:22;591:275;;-1:-1:-1;591:275:46:o;871:183::-;931:4;-1:-1:-1;;;;;953:30:46;;950:56;;;986:18;;:::i;:::-;-1:-1:-1;1031:1:46;1027:14;1043:4;1023:25;;871:183::o;1059:846::-;1113:5;1166:3;1159:4;1151:6;1147:17;1143:27;1133:55;;1184:1;1181;1174:12;1133:55;1220:6;1207:20;1246:4;1270:60;1286:43;1326:2;1286:43;:::i;:::-;1270:60;:::i;:::-;1364:15;;;1450:1;1446:10;;;;1434:23;;1430:32;;;1395:12;;;;1474:15;;;1471:35;;;1502:1;1499;1492:12;1471:35;1538:2;1530:6;1526:15;1550:326;1566:6;1561:3;1558:15;1550:326;;;1633:17;;-1:-1:-1;;;;;1683:31:46;;1673:42;;1663:140;;1757:1;1786:2;1782;1775:14;1663:140;1816:18;;1854:12;;;;1583;;1550:326;;;-1:-1:-1;1894:5:46;1059:846;-1:-1:-1;;;;;;1059:846:46:o;1910:416::-;2003:6;2011;2064:2;2052:9;2043:7;2039:23;2035:32;2032:52;;;2080:1;2077;2070:12;2032:52;2103:23;;;-1:-1:-1;2177:2:46;2162:18;;2149:32;-1:-1:-1;;;;;2193:30:46;;2190:50;;;2236:1;2233;2226:12;2190:50;2259:61;2312:7;2303:6;2292:9;2288:22;2259:61;:::i;:::-;2249:71;;;1910:416;;;;;:::o;2528:154::-;2607:20;;2656:1;2646:12;;2636:40;;2672:1;2669;2662:12;2636:40;2528:154;;;:::o;2687:662::-;2741:5;2794:3;2787:4;2779:6;2775:17;2771:27;2761:55;;2812:1;2809;2802:12;2761:55;2848:6;2835:20;2874:4;2898:60;2914:43;2954:2;2914:43;:::i;2898:60::-;2992:15;;;3078:1;3074:10;;;;3062:23;;3058:32;;;3023:12;;;;3102:15;;;3099:35;;;3130:1;3127;3120:12;3099:35;3166:2;3158:6;3154:15;3178:142;3194:6;3189:3;3186:15;3178:142;;;3260:17;;3248:30;;3298:12;;;;3211;;3178:142;;3354:187;3403:4;-1:-1:-1;;;;;3425:30:46;;3422:56;;;3458:18;;:::i;:::-;-1:-1:-1;3524:2:46;3503:15;-1:-1:-1;;3499:29:46;3530:4;3495:40;;3354:187::o;3546:464::-;3589:5;3642:3;3635:4;3627:6;3623:17;3619:27;3609:55;;3660:1;3657;3650:12;3609:55;3696:6;3683:20;3727:49;3743:32;3772:2;3743:32;:::i;3727:49::-;3801:2;3792:7;3785:19;3847:3;3840:4;3835:2;3827:6;3823:15;3819:26;3816:35;3813:55;;;3864:1;3861;3854:12;3813:55;3929:2;3922:4;3914:6;3910:17;3903:4;3894:7;3890:18;3877:55;3977:1;3952:16;;;3970:4;3948:27;3941:38;;;;3956:7;3546:464;-1:-1:-1;;;3546:464:46:o;4015:2168::-;4114:6;4167:2;4155:9;4146:7;4142:23;4138:32;4135:52;;;4183:1;4180;4173:12;4135:52;4210:23;;-1:-1:-1;;;;;4282:14:46;;;4279:34;;;4309:1;4306;4299:12;4279:34;4332:22;;;;4388:6;4370:16;;;4366:29;4363:49;;;4408:1;4405;4398:12;4363:49;4434:22;;:::i;:::-;4479:33;4509:2;4479:33;:::i;:::-;4472:5;4465:48;4545:42;4583:2;4579;4575:11;4545:42;:::i;:::-;4540:2;4533:5;4529:14;4522:66;4620:42;4658:2;4654;4650:11;4620:42;:::i;:::-;4615:2;4608:5;4604:14;4597:66;4716:2;4712;4708:11;4695:25;4690:2;4683:5;4679:14;4672:49;4775:3;4771:2;4767:12;4754:26;4748:3;4741:5;4737:15;4730:51;4835:3;4831:2;4827:12;4814:26;4808:3;4801:5;4797:15;4790:51;4895:3;4891:2;4887:12;4874:26;4868:3;4861:5;4857:15;4850:51;4955:3;4951:2;4947:12;4934:26;4928:3;4921:5;4917:15;4910:51;4980:3;5029:2;5025;5021:11;5008:25;5058:2;5048:8;5045:16;5042:36;;;5074:1;5071;5064:12;5042:36;5110:56;5158:7;5147:8;5143:2;5139:17;5110:56;:::i;:::-;5105:2;5098:5;5094:14;5087:80;;;5186:3;5235:2;5231;5227:11;5214:25;5264:2;5254:8;5251:16;5248:36;;;5280:1;5277;5270:12;5248:36;5316:56;5364:7;5353:8;5349:2;5345:17;5316:56;:::i;:::-;5311:2;5304:5;5300:14;5293:80;;;5392:3;5441:2;5437;5433:11;5420:25;5470:2;5460:8;5457:16;5454:36;;;5486:1;5483;5476:12;5454:36;5522:45;5559:7;5548:8;5544:2;5540:17;5522:45;:::i;:::-;5517:2;5510:5;5506:14;5499:69;;;5587:3;5636:2;5632;5628:11;5615:25;5665:2;5655:8;5652:16;5649:36;;;5681:1;5678;5671:12;5649:36;5717:45;5754:7;5743:8;5739:2;5735:17;5717:45;:::i;:::-;5712:2;5705:5;5701:14;5694:69;;;5782:3;5831:2;5827;5823:11;5810:25;5860:2;5850:8;5847:16;5844:36;;;5876:1;5873;5866:12;5844:36;5912:45;5949:7;5938:8;5934:2;5930:17;5912:45;:::i;:::-;5907:2;5900:5;5896:14;5889:69;;;5977:3;6026:2;6022;6018:11;6005:25;6055:2;6045:8;6042:16;6039:36;;;6071:1;6068;6061:12;6039:36;6107:45;6144:7;6133:8;6129:2;6125:17;6107:45;:::i;:::-;6091:14;;;6084:69;;;;-1:-1:-1;6095:5:46;4015:2168;-1:-1:-1;;;;;4015:2168:46:o;6378:203::-;-1:-1:-1;;;;;6542:32:46;;;;6524:51;;6512:2;6497:18;;6378:203::o;6586:274::-;6760:25;;;-1:-1:-1;;;;;6821:32:46;6816:2;6801:18;;6794:60;6748:2;6733:18;;6586:274::o;6865:127::-;6926:10;6921:3;6917:20;6914:1;6907:31;6957:4;6954:1;6947:15;6981:4;6978:1;6971:15;6997:127;7058:10;7053:3;7049:20;7046:1;7039:31;7089:4;7086:1;7079:15;7113:4;7110:1;7103:15;7129:128;7196:9;;;7217:11;;;7214:37;;;7231:18;;:::i;7262:274::-;-1:-1:-1;;;;;7454:32:46;;;;7436:51;;7518:2;7503:18;;7496:34;7424:2;7409:18;;7262:274::o;7541:164::-;7617:13;;7666;;7659:21;7649:32;;7639:60;;7695:1;7692;7685:12;7710:202;7777:6;7830:2;7818:9;7809:7;7805:23;7801:32;7798:52;;;7846:1;7843;7836:12;7798:52;7869:37;7896:9;7869:37;:::i;7917:127::-;7978:10;7973:3;7969:20;7966:1;7959:31;8009:4;8006:1;7999:15;8033:4;8030:1;8023:15;8049:135;8088:3;8109:17;;;8106:43;;8129:18;;:::i;:::-;-1:-1:-1;8176:1:46;8165:13;;8049:135::o;8371:248::-;8545:25;;;8601:2;8586:18;;8579:34;8533:2;8518:18;;8371:248::o;8624:125::-;8689:9;;;8710:10;;;8707:36;;;8723:18;;:::i;8754:380::-;8833:1;8829:12;;;;8876;;;8897:61;;8951:4;8943:6;8939:17;8929:27;;8897:61;9004:2;8996:6;8993:14;8973:18;8970:38;8967:161;;9050:10;9045:3;9041:20;9038:1;9031:31;9085:4;9082:1;9075:15;9113:4;9110:1;9103:15;8967:161;;8754:380;;;:::o;9265:545::-;9367:2;9362:3;9359:11;9356:448;;;9403:1;9428:5;9424:2;9417:17;9473:4;9469:2;9459:19;9543:2;9531:10;9527:19;9524:1;9520:27;9514:4;9510:38;9579:4;9567:10;9564:20;9561:47;;;-1:-1:-1;9602:4:46;9561:47;9657:2;9652:3;9648:12;9645:1;9641:20;9635:4;9631:31;9621:41;;9712:82;9730:2;9723:5;9720:13;9712:82;;;9775:17;;;9756:1;9745:13;9712:82;;;9716:3;;;9265:545;;;:::o;9986:1352::-;10106:10;;-1:-1:-1;;;;;10128:30:46;;10125:56;;;10161:18;;:::i;:::-;10190:97;10280:6;10240:38;10272:4;10266:11;10240:38;:::i;:::-;10234:4;10190:97;:::i;:::-;10342:4;;10406:2;10395:14;;10423:1;10418:663;;;;11125:1;11142:6;11139:89;;;-1:-1:-1;11194:19:46;;;11188:26;11139:89;-1:-1:-1;;9943:1:46;9939:11;;;9935:24;9931:29;9921:40;9967:1;9963:11;;;9918:57;11241:81;;10388:944;;10418:663;9212:1;9205:14;;;9249:4;9236:18;;-1:-1:-1;;10454:20:46;;;10572:236;10586:7;10583:1;10580:14;10572:236;;;10675:19;;;10669:26;10654:42;;10767:27;;;;10735:1;10723:14;;;;10602:19;;10572:236;;;10576:3;10836:6;10827:7;10824:19;10821:201;;;10897:19;;;10891:26;-1:-1:-1;;10980:1:46;10976:14;;;10992:3;10972:24;10968:37;10964:42;10949:58;10934:74;;10821:201;-1:-1:-1;;;;;11068:1:46;11052:14;;;11048:22;11035:36;;-1:-1:-1;9986:1352:46:o;11343:217::-;11383:1;11409;11399:132;;11453:10;11448:3;11444:20;11441:1;11434:31;11488:4;11485:1;11478:15;11516:4;11513:1;11506:15;11399:132;-1:-1:-1;11545:9:46;;11343:217::o;11565:375::-;-1:-1:-1;;;;;11823:15:46;;;11805:34;;11875:15;;;;11870:2;11855:18;;11848:43;11922:2;11907:18;;11900:34;;;;11755:2;11740:18;;11565:375::o;11945:127::-;12006:10;12001:3;11997:20;11994:1;11987:31;12037:4;12034:1;12027:15;12061:4;12058:1;12051:15;12077:184;12147:6;12200:2;12188:9;12179:7;12175:23;12171:32;12168:52;;;12216:1;12213;12206:12;12168:52;-1:-1:-1;12239:16:46;;12077:184;-1:-1:-1;12077:184:46:o;12448:168::-;12521:9;;;12552;;12569:15;;;12563:22;;12549:37;12539:71;;12590:18;;:::i;12945:250::-;13030:1;13040:113;13054:6;13051:1;13048:13;13040:113;;;13130:11;;;13124:18;13111:11;;;13104:39;13076:2;13069:10;13040:113;;;-1:-1:-1;;13187:1:46;13169:16;;13162:27;12945:250::o;13200:728::-;13286:6;13294;13347:2;13335:9;13326:7;13322:23;13318:32;13315:52;;;13363:1;13360;13353:12;13315:52;13386:37;13413:9;13386:37;:::i;:::-;13467:2;13452:18;;13446:25;13376:47;;-1:-1:-1;;;;;;13483:30:46;;13480:50;;;13526:1;13523;13516:12;13480:50;13549:22;;13602:4;13594:13;;13590:27;-1:-1:-1;13580:55:46;;13631:1;13628;13621:12;13580:55;13660:2;13654:9;13685:49;13701:32;13730:2;13701:32;:::i;13685:49::-;13757:2;13750:5;13743:17;13797:7;13792:2;13787;13783;13779:11;13775:20;13772:33;13769:53;;;13818:1;13815;13808:12;13769:53;13831:67;13895:2;13890;13883:5;13879:14;13874:2;13870;13866:11;13831:67;:::i;:::-;13917:5;13907:15;;;;;13200:728;;;;;:::o;13933:493::-;14139:1;14135;14130:3;14126:11;14122:19;14114:6;14110:32;14099:9;14092:51;14179:2;14174;14163:9;14159:18;14152:30;14073:4;14211:6;14205:13;14254:6;14249:2;14238:9;14234:18;14227:34;14270:79;14342:6;14337:2;14326:9;14322:18;14317:2;14309:6;14305:15;14270:79;:::i;:::-;14410:2;14389:15;-1:-1:-1;;14385:29:46;14370:45;;;;14417:2;14366:54;;13933:493;-1:-1:-1;;;13933:493:46:o;14431:215::-;14517:1;14510:5;14507:12;14497:143;;14562:10;14557:3;14553:20;14550:1;14543:31;14597:4;14594:1;14587:15;14625:4;14622:1;14615:15;14651:140;14716:42;14752:5;14716:42;:::i;:::-;14767:18;;14651:140::o;14892:469::-;14953:3;14991:5;14985:12;15018:6;15013:3;15006:19;15044:4;15073:2;15068:3;15064:12;15057:19;;15095:5;15092:1;15085:16;15137:2;15134:1;15124:16;15158:1;15168:168;15182:6;15179:1;15176:13;15168:168;;;15243:13;;15231:26;;15277:12;;;;15324:1;15312:14;;;;15197:9;15168:168;;;-1:-1:-1;15352:3:46;;14892:469;-1:-1:-1;;;;;14892:469:46:o;15366:772::-;15416:3;15457:5;15451:12;15486:36;15512:9;15486:36;:::i;:::-;15531:19;;;15569:4;15592:1;15609:18;;;15636:146;;;;15796:1;15791:341;;;;15602:530;;15636:146;-1:-1:-1;;15678:24:46;;15664:12;;;15657:46;15750:14;;15743:22;15740:1;15736:30;15727:40;;15723:49;;;-1:-1:-1;15636:146:46;;15791:341;15822:5;15819:1;15812:16;15869:2;15866:1;15856:16;15894:1;15908:174;15922:6;15919:1;15916:13;15908:174;;;16009:14;;15991:11;;;15987:20;;15980:44;16052:16;;;;15937:10;;15908:174;;;16106:11;;16102:20;;;-1:-1:-1;;15602:530:46;;;;;;15366:772;;;;:::o;16143:1627::-;16711:4;16740:3;16752:43;16788:6;16752:43;:::i;:::-;16822:6;16811:9;16804:25;16838:57;16891:2;16880:9;16876:18;16868:6;16838:57;:::i;:::-;16904;16957:2;16946:9;16942:18;16934:6;16904:57;:::i;:::-;16997:6;16992:2;16981:9;16977:18;16970:34;17041:6;17035:3;17024:9;17020:19;17013:35;17085:6;17079:3;17068:9;17064:19;17057:35;17101:44;17140:3;17129:9;17125:19;17117:6;14866:13;14859:21;14847:34;;14796:91;17101:44;17182:2;17176:3;17165:9;17161:19;17154:31;17208:64;17268:2;17257:9;17253:18;17245:6;17208:64;:::i;:::-;17194:78;;17321:9;17313:6;17309:22;17303:3;17292:9;17288:19;17281:51;17355:41;17389:6;17381;17355:41;:::i;:::-;17341:55;;17445:9;17437:6;17433:22;17427:3;17416:9;17412:19;17405:51;17479:41;17513:6;17505;17479:41;:::i;:::-;17465:55;;17569:9;17561:6;17557:22;17551:3;17540:9;17536:19;17529:51;17603:42;17638:6;17629:7;17603:42;:::i;:::-;17589:56;;17694:9;17686:6;17682:22;17676:3;17665:9;17661:19;17654:51;17722:42;17757:6;17748:7;17722:42;:::i;:::-;17714:50;16143:1627;-1:-1:-1;;;;;;;;;;;;;;;16143:1627:46:o"},"methodIdentifiers":{"addInvites(uint256,address[])":"262ad80b","cancelChallenge(uint256)":"a41483e3","createChallenge(ChallengeTypes.CreateChallengeParams)":"e0e65a54","declineChallenge(uint256)":"0012462a","getComputedStatus(uint256)":"9ed14864","joinChallenge(uint256)":"e448ee26","leaveChallenge(uint256)":"67fc8c89","syncChallenge(uint256)":"b30f0584"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"}],\"name\":\"AlreadyInvited\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"AlreadyParticipating\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"}],\"name\":\"BetAmountBelowMinimum\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"ChallengeUnknownApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ChallengesUnauthorizedUser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"CreatorCannotJoin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"CreatorCannotLeave\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"DescriptionTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"ImageURITooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minPrizePerWinner\",\"type\":\"uint256\"}],\"name\":\"InsufficientPrizePerWinner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidChallengeTypeForCombo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"}],\"name\":\"InvalidEndRound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentRound\",\"type\":\"uint256\"}],\"name\":\"InvalidStartRound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTypeConfiguration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MaxChallengeDurationExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MaxParticipantsExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MaxSelectedAppsExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MetadataURITooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"NotInvited\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"NotParticipating\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotVerifiedPerson\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"ThresholdTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"TitleTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.ChallengeKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.ChallengeVisibility\",\"name\":\"visibility\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.ChallengeType\",\"name\":\"challengeType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"allApps\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"selectedApps\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"imageURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"ChallengeCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"ChallengeDeclined\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeInvalidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"}],\"name\":\"ChallengeInviteAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"ChallengeJoined\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"ChallengeLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prizePerWinner\",\"type\":\"uint256\"}],\"name\":\"SplitWinConfigured\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getComputedStatus\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Participant, invite, and decline arrays are paired with index-plus-one mappings so membership updates stay O(1) via swap-and-pop removals.\",\"errors\":{\"NotVerifiedPerson(address,string)\":[{\"params\":{\"account\":\"Address that failed the personhood check.\",\"reason\":\"Reason returned by VeBetterPassport (e.g. \\\"User is blacklisted\\\").\"}}]},\"events\":{\"ChallengeCreated(uint256,address,uint256,uint8,uint8,uint8,uint256,uint256,uint256,bool,bytes32[],string,string,string,string)\":{\"details\":\"Split Win-specific configuration (numWinners, prizePerWinner) is emitted right after via `SplitWinConfigured` to keep this event signature within Solidity stack limits.\"}},\"kind\":\"dev\",\"methods\":{\"addInvites(uint256,address[])\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"invitees\":\"Accounts to invite.\"}},\"cancelChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"createChallenge(ChallengeTypes.CreateChallengeParams)\":{\"details\":\"An empty app list means actions from all apps are counted.\",\"params\":{\"params\":\"Challenge creation payload.\"},\"returns\":{\"challengeId\":\"Newly created challenge identifier.\"}},\"declineChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"getComputedStatus(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Computed challenge status encoded as `uint8`.\"}},\"joinChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"leaveChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"syncChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Current persisted status after syncing.\"}}},\"title\":\"ChallengeCoreLogic Library\",\"version\":1},\"userdoc\":{\"errors\":{\"NotVerifiedPerson(address,string)\":[{\"notice\":\"Thrown when an account fails the VeBetterPassport personhood check on a participation or claim path.\"}]},\"events\":{\"ChallengeActivated(uint256)\":{\"notice\":\"Emitted when a pending challenge becomes active.\"},\"ChallengeCancelled(uint256)\":{\"notice\":\"Emitted when a pending challenge is cancelled by its creator.\"},\"ChallengeCreated(uint256,address,uint256,uint8,uint8,uint8,uint256,uint256,uint256,bool,bytes32[],string,string,string,string)\":{\"notice\":\"Emitted when a challenge is created and initially funded.\"},\"ChallengeDeclined(uint256,address)\":{\"notice\":\"Emitted when an invitee declines a challenge.\"},\"ChallengeInvalidated(uint256)\":{\"notice\":\"Emitted when a pending challenge becomes invalid at start time.\"},\"ChallengeInviteAdded(uint256,address)\":{\"notice\":\"Emitted when a new invitee is added to a challenge.\"},\"ChallengeJoined(uint256,address)\":{\"notice\":\"Emitted when a participant joins a challenge.\"},\"ChallengeLeft(uint256,address)\":{\"notice\":\"Emitted when a participant leaves a challenge before it starts.\"},\"SplitWinConfigured(uint256,uint256,uint256)\":{\"notice\":\"Emitted immediately after `ChallengeCreated` for Split Win challenges only.\"}},\"kind\":\"user\",\"methods\":{\"addInvites(uint256,address[])\":{\"notice\":\"Adds invitees to a pending challenge.\"},\"cancelChallenge(uint256)\":{\"notice\":\"Cancels a pending challenge.\"},\"createChallenge(ChallengeTypes.CreateChallengeParams)\":{\"notice\":\"Creates a new challenge and escrows the initial funds.\"},\"declineChallenge(uint256)\":{\"notice\":\"Declines a pending challenge invitation.\"},\"getComputedStatus(uint256)\":{\"notice\":\"Computes the latest status for a challenge without mutating storage.\"},\"joinChallenge(uint256)\":{\"notice\":\"Joins a pending challenge.\"},\"leaveChallenge(uint256)\":{\"notice\":\"Leaves a pending challenge before the challenge starts.\"},\"syncChallenge(uint256)\":{\"notice\":\"Syncs a pending challenge with the current round and participant state.\"}},\"notice\":\"Handles challenge creation, invitations, participation, and lazy status transitions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/challenges/libraries/ChallengeCoreLogic.sol\":\"ChallengeCoreLogic\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/challenges/libraries/ChallengeCoreLogic.sol\":{\"keccak256\":\"0xa8b36faba4fad9cb0608d35c25b2cff0cb523e3a74774f32b8b188ab3b09cfad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c51347b202390262e45321f847f9d76290768f1d1509acb13bdaecef13ebda3e\",\"dweb:/ipfs/QmYGfSd4ZmTuyKPJmBCbQZS144WPgefFJX2FovR8Adudb3\"]},\"contracts/challenges/libraries/ChallengeStorageTypes.sol\":{\"keccak256\":\"0x1a3adb8916b01bb810f7f3a038defba464839c0fa62c33b66dccedbbfc354f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e5c7eb48cf0b47d9e50e5fae367dd0e55870eed76cea3b0772c5893091875b7\",\"dweb:/ipfs/QmVhXYingpgmkWEumVzwaRBRGUpudBEyHheHmTUsrH1kXg\"]},\"contracts/challenges/libraries/ChallengeTypes.sol\":{\"keccak256\":\"0xe06bbeff932f2d2dfa150a44e4115fabf11eb8bb98b5564c4eb1d8976216f795\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ff27c89e0fb1d73ea0ac59e507d0445c4d56f8d2be7a015289498da55f8a556\",\"dweb:/ipfs/QmaJppVA1LfAQ5gXQ2C8o51MjAnRMQx47vRSCPpe4SvkWK\"]},\"contracts/interfaces/IB3TR.sol\":{\"keccak256\":\"0x84072a0b3340a0972192bd7d9491f00b2676aff7a6c58461b836147a39e31bd2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca091823fbc799175caa96e5fbaf5f449acd78c728e92950845fa347c33d9ea5\",\"dweb:/ipfs/QmYLDKyKjssZPcWjtgRR3Fbmo3JKdWQaKpFj5GUxPWvvc4\"]},\"contracts/interfaces/IChallenges.sol\":{\"keccak256\":\"0xfe61f023db7a7caf543a27d480458e8f08ad8d9852f8e398b63640cd4bbf278a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37b02c8754732a8e16be7d8fcb322bd82ca388815b0d2dce35b380fcbb6b0fe9\",\"dweb:/ipfs/QmbzRdqpLhK13R4SaqxrHCetUzrZCTfSqBvJ9rteSYVRPm\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]},\"contracts/interfaces/IVeBetterPassport.sol\":{\"keccak256\":\"0x1094bcf1a7f61ad26e5d49a6efd7302419a1d2475fa0723f62f24757c7a1655c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a25e330da50daf45f56fe4c496da2ea6695fb4de491c112980deb385f0f3ac\",\"dweb:/ipfs/QmaPE4T6UR91WxnGkqGp85d6YB9UGQceGGtSTCres1Y2Ut\"]},\"contracts/interfaces/IX2EarnApps.sol\":{\"keccak256\":\"0xf476e628b4037c16d44c833c9f0f4db9a3abc48f60ad4654574bce31ca9c759c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8c183bbd394bb708a637dca7626f6beb7a78e5111674e3ccea6f98140580172\",\"dweb:/ipfs/Qmar8Za1an3ZGP6B5wcCZSmY6g6MKzPcGeVYetRhiPFm7e\"]},\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]},\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]},\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]},\"contracts/ve-better-passport/libraries/PassportTypes.sol\":{\"keccak256\":\"0x0250b067d550cd85bd77278c705bd8d28db1bce6829e084cbe65b74353483ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://176022bfb06a2c03efe880a13a97cea66e25e9b31fe164936b5845a57a299be8\",\"dweb:/ipfs/QmS2kQnhxdjkrnNGfFyBdtThpmvyT2B7tF1owW2vF2hmbz\"]},\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":{\"keccak256\":\"0x1830b8438f0b6b516cc22ebbfcc7cff9db478c9a2a44fedf5926e63bd77d5aa7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aad5b08dbb03f727b8b74b10d1d00e796ece111f3aa23ef48ad27f54dd3f7b58\",\"dweb:/ipfs/QmfZZoP44EZ3Ts81BgvRuG9AXuTAxCqCbFqHoKEspFsPSa\"]},\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":{\"keccak256\":\"0x8a44d64c1e998dad0d21b928c499b7b624623cb26a30df541c493641191f6091\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751749980251dd9cda3e77654fafa229dab8a9bc74992dee9e8b3adee9595b72\",\"dweb:/ipfs/QmSHViJSMCbr25KBPap8VB38SjrLojRTnC3JUDCvf3rRBB\"]}},\"version\":1}"}},"contracts/challenges/libraries/ChallengeSettlementLogic.sol":{"ChallengeSettlementLogic":{"abi":[{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"AlreadyClaimed","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"AlreadyRefunded","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeAlreadyCompleted","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeDoesNotExist","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"currentRound","type":"uint256"}],"name":"ChallengeEnded","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"enum ChallengeTypes.ChallengeStatus","name":"status","type":"uint8"}],"name":"ChallengeInvalidStatus","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"currentRound","type":"uint256"}],"name":"ChallengeNotEnded","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"ChallengesUnauthorizedUser","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"NotASplitWinChallenge","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"actions","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"NotEligibleForSplitWin","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"NotParticipating","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"name":"NotVerifiedPerson","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"NothingToClaim","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"NothingToRefund","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"SplitWinCannotComplete","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"SplitWinSlotsExhausted","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":false,"internalType":"enum ChallengeTypes.SettlementMode","name":"settlementMode","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"bestScore","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bestCount","type":"uint256"}],"name":"ChallengeCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChallengePayoutClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChallengeRefundClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SplitWinCreatorRefunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"prize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"actions","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"winnersClaimed","type":"uint256"}],"name":"SplitWinPrizeClaimed","type":"event"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"getParticipantActions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{"contracts/challenges/libraries/ChallengeCoreLogic.sol":{"ChallengeCoreLogic":[{"length":20,"start":573},{"length":20,"start":1305},{"length":20,"start":2637},{"length":20,"start":3806},{"length":20,"start":4580}]}},"object":"611e4261003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c806314cf90771461007157806387d6e21314610096578063a0427700146100b6578063a7817bbc146100d6578063b58bd356146100f8578063cb3e0d2b14610118575b600080fd5b61008461007f366004611a84565b610138565b60405190815260200160405180910390f35b8180156100a257600080fd5b506100846100b1366004611ac0565b61015a565b8180156100c257600080fd5b506100846100d1366004611ac0565b61044c565b8180156100e257600080fd5b506100f66100f1366004611ac0565b610903565b005b81801561010457600080fd5b50610084610113366004611ac0565b610e50565b81801561012457600080fd5b50610084610133366004611ac0565b6110e4565b60008061014484611532565b90506101508184611583565b9150505b92915050565b60008061016561159b565b9050600061017284611532565b90506001815462010000900460ff16600181111561019257610192611ad9565b036101c95780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b60405180910390fd5b600081546301000000900460ff1660048111156101e8576101e8611ad9565b0361026357604051632cc3c16160e21b81526004810185905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af415801561023d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102619190611b13565b505b600281546301000000900460ff16600481111561028257610282611ad9565b146102b05780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b6000848152600e83016020908152604080832033845290915290205460ff16156102f15783336040516302a4851560e61b81526004016101c0929190611b36565b6102fc8482336115bf565b61031d57833360405163b361b5fb60e01b81526004016101c0929190611b36565b6000610329858361163e565b905061033e82600701548284600a015461168e565b6000868152600e8501602090815260408083203384529091528120805460ff19166001179055600a840180549296509061037783611b63565b9091555050825460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906103ad9033908890600401611b7c565b6020604051808303816000875af11580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f09190611baa565b61040d576040516312171d8360e31b815260040160405180910390fd5b604051848152339086907f88f0c55826d9ef2f514f933a99edb543a1514ee7211d8bfa04e66e29954fe6b49060200160405180910390a3505050919050565b60008061045761159b565b9050600061046484611532565b90506001815462010000900460ff16600181111561048457610484611ad9565b146104a557604051637c412df960e11b8152600481018590526024016101c0565b600081546301000000900460ff1660048111156104c4576104c4611ad9565b0361053f57604051632cc3c16160e21b81526004810185905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015610519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053d9190611b13565b505b600181546301000000900460ff16600481111561055e5761055e611ad9565b1461058c5780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b600282015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190611bc5565b905081600201548110156106335781546040516366fc878160e01b81526101c0918791630100000090910460ff1690600401611aef565b8160030154811115610661576003820154604051637b05ab9b60e01b81526101c09187918490600401611bde565b60036000868152600985016020908152604080832033845290915290205460ff16600381111561069357610693611ad9565b146106b557843360405163c100013360e01b81526004016101c0929190611b36565b6000858152601184016020908152604080832033845290915290205460ff16156106f65784336040516302a4851560e61b81526004016101c0929190611b36565b6005820154600e830154106107215760405163387c43a960e21b8152600481018690526024016101c0565b61072b83336116dd565b6000610738833384611785565b905082600401548110156107795760048381015460405163431170f560e11b81529182018890523360248301526044820183905260648201526084016101c0565b6006830154600e84018054600181810183556000928352602080842090920180546001600160a01b031916339081179091558a8452601189018352604080852082865290935292829020805460ff191690911790558654905163a9059cbb60e01b81529297506001600160a01b03169163a9059cbb916107fd918990600401611b7c565b6020604051808303816000875af115801561081c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108409190611baa565b61085d576040516312171d8360e31b815260040160405180910390fd5b600e830154604051339188917f4dcac657463253f9668a0d5c9a2f7c00a7d7ac72a1afe05e65034691fdd911c391610898918a918791611bde565b60405180910390a36005830154600e840154036108fa57825464ffff0000001916640302000000178084556040518791600080516020611ded833981519152916108f191600160201b900460ff16906000908190611c08565b60405180910390a25b50505050919050565b600061090d61159b565b9050600061091a83611532565b90506001815462010000900460ff16600181111561093a5761093a611ad9565b0361095b5760405163180ebb8f60e21b8152600481018490526024016101c0565b600282015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611bc5565b9050816003015481116109fa5760038201546040516357684ca560e01b81526101c09186918490600401611bde565b604051632cc3c16160e21b81526004810185905260009073__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015610a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a719190611b13565b60ff166004811115610a8557610a85611ad9565b90506004816004811115610a9b57610a9b611ad9565b1480610ab857506003816004811115610ab657610ab6611ad9565b145b15610ada5784816040516366fc878160e01b81526004016101c0929190611aef565b6002816004811115610aee57610aee611ad9565b03610b0f57604051633c6fa5d760e21b8152600481018690526024016101c0565b600b8301546000816001600160401b03811115610b2e57610b2e611c27565b604051908082528060200260200182016040528015610b57578160200160208202803683370190505b5090506000826001600160401b03811115610b7457610b74611c27565b604051908082528060200260200182016040528015610b9d578160200160208202803683370190505b50905060005b83811015610cc857600087600b018281548110610bc257610bc2611c3d565b600091825260208220015460018b01546040516307b9c93d60e11b81526001600160a01b039283169450911690630f73927a90610c03908590600401611c53565b600060405180830381865afa158015610c20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c489190810190611c8b565b50905080610c57575050610cb6565b6001848481518110610c6b57610c6b611c3d565b911515602092830291909101909101526000610c878a84611583565b905080868581518110610c9c57610c9c611c3d565b602002602001018181525050610cb28a82611987565b5050505b80610cc081611b63565b915050610ba3565b50600986015415610dba5760088601546000805b85811015610da657838181518110610cf657610cf6611c3d565b60200260200101518015610d22575082858281518110610d1857610d18611c3d565b6020026020010151145b15610d945760008b815260128b0160205260408120600b8b018054600193919085908110610d5257610d52611c3d565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905581610d9081611b63565b9250505b80610d9e81611b63565b915050610cdc565b5060008a815260138a016020526040902055505b600986015415610dcb576001610dce565b60025b8654879060ff60201b1916600160201b836003811115610df057610df0611ad9565b0217905550855463ff0000001916630200000017808755600887015460098801546040518b93600080516020611ded83398151915293610e3e93600160201b90920460ff1692909190611c08565b60405180910390a25050505050505050565b600080610e5b61159b565b90506000610e6884611532565b9050600081546301000000900460ff166004811115610e8957610e89611ad9565b03610f0457604051632cc3c16160e21b81526004810185905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f029190611b13565b505b600381546301000000900460ff166004811115610f2357610f23611ad9565b14158015610f4e5750600481546301000000900460ff166004811115610f4b57610f4b611ad9565b14155b15610f7c5780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b6000848152600f83016020908152604080832033845290915290205460ff1615610fbd578333604051636101359d60e01b81526004016101c0929190611b36565b610fc88482336119d6565b925082600003610fef578333604051632decd07b60e11b81526004016101c0929190611b36565b6000848152600f83016020908152604080832033808552925291829020805460ff191660011790558354915163a9059cbb60e01b81526001600160a01b03929092169163a9059cbb91611046918790600401611b7c565b6020604051808303816000875af1158015611065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110899190611baa565b6110a6576040516312171d8360e31b815260040160405180910390fd5b604051838152339085907ffb13634c7c32bbfbc28f461ca4b0c850887c9cfbde7d6c97f24bfcff25c7be369060200160405180910390a35050919050565b6000806110ef61159b565b905060006110fc84611532565b90506001815462010000900460ff16600181111561111c5761111c611ad9565b1461113d57604051637c412df960e11b8152600481018590526024016101c0565b8054600160301b90046001600160a01b0316331461117057336040516309edd0f760e11b81526004016101c09190611c53565b600081546301000000900460ff16600481111561118f5761118f611ad9565b0361120a57604051632cc3c16160e21b81526004810185905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af41580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112089190611b13565b505b600181546301000000900460ff16600481111561122957611229611ad9565b141580156112545750600281546301000000900460ff16600481111561125157611251611ad9565b14155b156112825780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b600282015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa1580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f29190611bc5565b9050816003015481116113215760038201546040516357684ca560e01b81526101c09187918490600401611bde565b6000858152600f84016020908152604080832033845290915290205460ff1615611362578433604051636101359d60e01b81526004016101c0929190611b36565b600e820154600583015460009161137891611d4b565b90508060000361139f578533604051632decd07b60e11b81526004016101c0929190611b36565b600e83015460068401546000916113b591611d5e565b90508084600701546113c79190611d4b565b6000888152600f8701602090815260408083203384529091529020805460ff1916600190811790915590965084546301000000900460ff16600481111561141057611410611ad9565b0361146057835464ffff0000001916640302000000178085556040518891600080516020611ded8339815191529161145791600160201b900460ff16906000908190611c08565b60405180910390a25b845460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906114919033908a90600401611b7c565b6020604051808303816000875af11580156114b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d49190611baa565b6114f1576040516312171d8360e31b815260040160405180910390fd5b604051868152339088907f24c3cd6e13a29307bab455491e4cd5b29f6a457854a08f27f319ab4f8fec51389060200160405180910390a35050505050919050565b60008061153d61159b565b905082158061154f5750806006015483115b1561157057604051635bafafd160e01b8152600481018490526024016101c0565b6000928352600801602052506040902090565b600061159483838560030154611785565b9392505050565b7f4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d10090565b6000806115ca61159b565b905060028454600160201b900460ff1660038111156115eb576115eb611ad9565b0361160e57505081546001600160a01b03828116600160301b9092041614611594565b6000948552601201602090815260408086206001600160a01b03949094168652929052509091205460ff16919050565b600060028254600160201b900460ff16600381111561165f5761165f611ad9565b0361166c57506001610154565b600061167661159b565b60009485526013016020525050604090912054919050565b60008061169b8486611d75565b9050836116a9846001611d97565b036116d5576116b9600185611d4b565b6116c39082611d5e565b6116cd9086611d4b565b915050611594565b949350505050565b60018201546040516307b9c93d60e11b815260009182916001600160a01b0390911690630f73927a90611714908690600401611c53565b600060405180830381865afa158015611731573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117599190810190611c8b565b915091508161177f57828160405163411f12c760e01b81526004016101c0929190611daa565b50505050565b60008061179061159b565b90506000856003015484116117a557836117ab565b85600301545b905085600201548110156117c457600092505050611594565b8554600160281b900460ff161561187d5760028601545b8181116118755760018301546040516344368ae960e11b81526001600160a01b039091169063886d15d2906118169089908590600401611b7c565b602060405180830381865afa158015611833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118579190611bc5565b6118619085611d97565b93508061186d81611b63565b9150506117db565b505050611594565b60028601545b81811161197d5760005b600f88015481101561196a576001840154600f890180546001600160a01b0390921691639352d272918a91869190869081106118cb576118cb611c3d565b6000918252602090912001546040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401602060405180830381865afa158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c9190611bc5565b6119569086611d97565b94508061196281611b63565b91505061188d565b508061197581611b63565b915050611883565b5050509392505050565b6009820154158061199b5750816008015481115b156119af5760088201556001600990910155565b816008015481036119d2576009820180549060006119cc83611b63565b91905055505b5050565b6000806119e161159b565b90506000845460ff1660018111156119fb576119fb611ad9565b03611a53576003600086815260098301602090815260408083206001600160a01b038816845290915290205460ff166003811115611a3b57611a3b611ad9565b14611a475760006116cd565b50506001820154611594565b83546001600160a01b03848116600160301b9092041614611a75576000611a7b565b83600701545b95945050505050565b60008060408385031215611a9757600080fd5b8235915060208301356001600160a01b0381168114611ab557600080fd5b809150509250929050565b600060208284031215611ad257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160058310611b0657611b06611ad9565b8260208301529392505050565b600060208284031215611b2557600080fd5b815160ff8116811461159457600080fd5b9182526001600160a01b0316602082015260400190565b634e487b7160e01b600052601160045260246000fd5b600060018201611b7557611b75611b4d565b5060010190565b6001600160a01b03929092168252602082015260400190565b80518015158114611ba557600080fd5b919050565b600060208284031215611bbc57600080fd5b61159482611b95565b600060208284031215611bd757600080fd5b5051919050565b9283526020830191909152604082015260600190565b60048110611c0457611c04611ad9565b9052565b60608101611c168286611bf4565b602082019390935260400152919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0391909116815260200190565b60005b83811015611c82578181015183820152602001611c6a565b50506000910152565b60008060408385031215611c9e57600080fd5b611ca783611b95565b60208401519092506001600160401b0380821115611cc457600080fd5b818501915085601f830112611cd857600080fd5b815181811115611cea57611cea611c27565b604051601f8201601f19908116603f01168101908382118183101715611d1257611d12611c27565b81604052828152886020848701011115611d2b57600080fd5b611d3c836020830160208801611c67565b80955050505050509250929050565b8181038181111561015457610154611b4d565b808202811582820484141761015457610154611b4d565b600082611d9257634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561015457610154611b4d565b60018060a01b03831681526040602082015260008251806040840152611dd7816060850160208701611c67565b601f01601f191691909101606001939250505056fefe3d640dfe4a822948e2e15da6bbca1b630a18d21e825edeb5816d60f4e5703ba26469706673582212201dc276dad8d0af16cbcd83b7025a72bd02bac41e5beb00954e0b3f31252111eb64736f6c63430008140033","opcodes":"PUSH2 0x1E42 PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x14CF9077 EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x87D6E213 EQ PUSH2 0x96 JUMPI DUP1 PUSH4 0xA0427700 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xA7817BBC EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xB58BD356 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0xCB3E0D2B EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH2 0x7F CALLDATASIZE PUSH1 0x4 PUSH2 0x1A84 JUMP JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0x15A JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0x44C JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0x903 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0xE50 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0x10E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x144 DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH2 0x150 DUP2 DUP5 PUSH2 0x1583 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x165 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x172 DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x192 JUMPI PUSH2 0x192 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x1C9 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E8 JUMPI PUSH2 0x1E8 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x23D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x261 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST POP JUMPDEST PUSH1 0x2 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x282 JUMPI PUSH2 0x282 PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x2B0 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xE DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2F1 JUMPI DUP4 CALLER PUSH1 0x40 MLOAD PUSH4 0x2A48515 PUSH1 0xE6 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH2 0x2FC DUP5 DUP3 CALLER PUSH2 0x15BF JUMP JUMPDEST PUSH2 0x31D JUMPI DUP4 CALLER PUSH1 0x40 MLOAD PUSH4 0xB361B5FB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x329 DUP6 DUP4 PUSH2 0x163E JUMP JUMPDEST SWAP1 POP PUSH2 0x33E DUP3 PUSH1 0x7 ADD SLOAD DUP3 DUP5 PUSH1 0xA ADD SLOAD PUSH2 0x168E JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0xE DUP6 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0xA DUP5 ADD DUP1 SLOAD SWAP3 SWAP7 POP SWAP1 PUSH2 0x377 DUP4 PUSH2 0x1B63 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP3 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x3AD SWAP1 CALLER SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3F0 SWAP2 SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH2 0x40D JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 DUP2 MSTORE CALLER SWAP1 DUP7 SWAP1 PUSH32 0x88F0C55826D9EF2F514F933A99EDB543A1514EE7211D8BFA04E66E29954FE6B4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x457 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x464 DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x484 JUMPI PUSH2 0x484 PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x4A5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7C412DF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH2 0x4C4 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x53F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x53D SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x55E JUMPI PUSH2 0x55E PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x58C JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5FC SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x2 ADD SLOAD DUP2 LT ISZERO PUSH2 0x633 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP8 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST DUP2 PUSH1 0x3 ADD SLOAD DUP2 GT ISZERO PUSH2 0x661 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7B05AB9B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP8 SWAP2 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x9 DUP6 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x693 JUMPI PUSH2 0x693 PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x6B5 JUMPI DUP5 CALLER PUSH1 0x40 MLOAD PUSH4 0xC1000133 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x11 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x6F6 JUMPI DUP5 CALLER PUSH1 0x40 MLOAD PUSH4 0x2A48515 PUSH1 0xE6 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0xE DUP4 ADD SLOAD LT PUSH2 0x721 JUMPI PUSH1 0x40 MLOAD PUSH4 0x387C43A9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH2 0x72B DUP4 CALLER PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x738 DUP4 CALLER DUP5 PUSH2 0x1785 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x4 DUP4 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x431170F5 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP3 ADD DUP9 SWAP1 MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x6 DUP4 ADD SLOAD PUSH1 0xE DUP5 ADD DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP11 DUP5 MSTORE PUSH1 0x11 DUP10 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 DUP7 MSTORE SWAP1 SWAP4 MSTORE SWAP3 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE DUP7 SLOAD SWAP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x7FD SWAP2 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x840 SWAP2 SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH2 0x85D JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xE DUP4 ADD SLOAD PUSH1 0x40 MLOAD CALLER SWAP2 DUP9 SWAP2 PUSH32 0x4DCAC657463253F9668A0D5C9A2F7C00A7D7AC72A1AFE05E65034691FDD911C3 SWAP2 PUSH2 0x898 SWAP2 DUP11 SWAP2 DUP8 SWAP2 PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0xE DUP5 ADD SLOAD SUB PUSH2 0x8FA JUMPI DUP3 SLOAD PUSH5 0xFFFF000000 NOT AND PUSH5 0x302000000 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD DUP8 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DED DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 PUSH2 0x8F1 SWAP2 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90D PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x91A DUP4 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x93A JUMPI PUSH2 0x93A PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x95B JUMPI PUSH1 0x40 MLOAD PUSH4 0x180EBB8F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9CB SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x3 ADD SLOAD DUP2 GT PUSH2 0x9FA JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x57684CA5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xA4D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA71 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xA85 JUMPI PUSH2 0xA85 PUSH2 0x1AD9 JUMP JUMPDEST SWAP1 POP PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xA9B JUMPI PUSH2 0xA9B PUSH2 0x1AD9 JUMP JUMPDEST EQ DUP1 PUSH2 0xAB8 JUMPI POP PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xAB6 JUMPI PUSH2 0xAB6 PUSH2 0x1AD9 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0xADA JUMPI DUP5 DUP2 PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xAEE JUMPI PUSH2 0xAEE PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0xB0F JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C6FA5D7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0xB DUP4 ADD SLOAD PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xB2E JUMPI PUSH2 0xB2E PUSH2 0x1C27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB57 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xB74 JUMPI PUSH2 0xB74 PUSH2 0x1C27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB9D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCC8 JUMPI PUSH1 0x0 DUP8 PUSH1 0xB ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBC2 JUMPI PUSH2 0xBC2 PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x1 DUP12 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7B9C93D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP5 POP SWAP2 AND SWAP1 PUSH4 0xF73927A SWAP1 PUSH2 0xC03 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C53 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C8B JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0xC57 JUMPI POP POP PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC6B JUMPI PUSH2 0xC6B PUSH2 0x1C3D JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x0 PUSH2 0xC87 DUP11 DUP5 PUSH2 0x1583 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xC9C JUMPI PUSH2 0xC9C PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xCB2 DUP11 DUP3 PUSH2 0x1987 JUMP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH2 0xCC0 DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xBA3 JUMP JUMPDEST POP PUSH1 0x9 DUP7 ADD SLOAD ISZERO PUSH2 0xDBA JUMPI PUSH1 0x8 DUP7 ADD SLOAD PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xDA6 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xCF6 JUMPI PUSH2 0xCF6 PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP1 ISZERO PUSH2 0xD22 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD18 JUMPI PUSH2 0xD18 PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ JUMPDEST ISZERO PUSH2 0xD94 JUMPI PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x12 DUP12 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0xB DUP12 ADD DUP1 SLOAD PUSH1 0x1 SWAP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0xD52 JUMPI PUSH2 0xD52 PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP2 PUSH2 0xD90 DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xD9E DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCDC JUMP JUMPDEST POP PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x13 DUP11 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP JUMPDEST PUSH1 0x9 DUP7 ADD SLOAD ISZERO PUSH2 0xDCB JUMPI PUSH1 0x1 PUSH2 0xDCE JUMP JUMPDEST PUSH1 0x2 JUMPDEST DUP7 SLOAD DUP8 SWAP1 PUSH1 0xFF PUSH1 0x20 SHL NOT AND PUSH1 0x1 PUSH1 0x20 SHL DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xDF0 JUMPI PUSH2 0xDF0 PUSH2 0x1AD9 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP DUP6 SLOAD PUSH4 0xFF000000 NOT AND PUSH4 0x2000000 OR DUP1 DUP8 SSTORE PUSH1 0x8 DUP8 ADD SLOAD PUSH1 0x9 DUP9 ADD SLOAD PUSH1 0x40 MLOAD DUP12 SWAP4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DED DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP4 PUSH2 0xE3E SWAP4 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE5B PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE68 DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xE89 JUMPI PUSH2 0xE89 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0xF04 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xEDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF02 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST POP JUMPDEST PUSH1 0x3 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xF23 JUMPI PUSH2 0xF23 PUSH2 0x1AD9 JUMP JUMPDEST EQ ISZERO DUP1 ISZERO PUSH2 0xF4E JUMPI POP PUSH1 0x4 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xF4B JUMPI PUSH2 0xF4B PUSH2 0x1AD9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xF7C JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xF DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFBD JUMPI DUP4 CALLER PUSH1 0x40 MLOAD PUSH4 0x6101359D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH2 0xFC8 DUP5 DUP3 CALLER PUSH2 0x19D6 JUMP JUMPDEST SWAP3 POP DUP3 PUSH1 0x0 SUB PUSH2 0xFEF JUMPI DUP4 CALLER PUSH1 0x40 MLOAD PUSH4 0x2DECD07B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xF DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP4 SLOAD SWAP2 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x1046 SWAP2 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1065 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1089 SWAP2 SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH2 0x10A6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE CALLER SWAP1 DUP6 SWAP1 PUSH32 0xFB13634C7C32BBFBC28F461CA4B0C850887C9CFBDE7D6C97F24BFCFF25C7BE36 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10EF PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x10FC DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x111C JUMPI PUSH2 0x111C PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x113D JUMPI PUSH1 0x40 MLOAD PUSH4 0x7C412DF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1170 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP2 SWAP1 PUSH2 0x1C53 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x118F JUMPI PUSH2 0x118F PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x120A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x11E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1208 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1229 JUMPI PUSH2 0x1229 PUSH2 0x1AD9 JUMP JUMPDEST EQ ISZERO DUP1 ISZERO PUSH2 0x1254 JUMPI POP PUSH1 0x2 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1251 JUMPI PUSH2 0x1251 PUSH2 0x1AD9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1282 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12F2 SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x3 ADD SLOAD DUP2 GT PUSH2 0x1321 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x57684CA5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP8 SWAP2 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0xF DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1362 JUMPI DUP5 CALLER PUSH1 0x40 MLOAD PUSH4 0x6101359D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0xE DUP3 ADD SLOAD PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x0 SWAP2 PUSH2 0x1378 SWAP2 PUSH2 0x1D4B JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 SUB PUSH2 0x139F JUMPI DUP6 CALLER PUSH1 0x40 MLOAD PUSH4 0x2DECD07B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0xE DUP4 ADD SLOAD PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x0 SWAP2 PUSH2 0x13B5 SWAP2 PUSH2 0x1D5E JUMP JUMPDEST SWAP1 POP DUP1 DUP5 PUSH1 0x7 ADD SLOAD PUSH2 0x13C7 SWAP2 SWAP1 PUSH2 0x1D4B JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0xF DUP8 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 SWAP7 POP DUP5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1410 JUMPI PUSH2 0x1410 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x1460 JUMPI DUP4 SLOAD PUSH5 0xFFFF000000 NOT AND PUSH5 0x302000000 OR DUP1 DUP6 SSTORE PUSH1 0x40 MLOAD DUP9 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DED DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 PUSH2 0x1457 SWAP2 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST DUP5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x1491 SWAP1 CALLER SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14D4 SWAP2 SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH2 0x14F1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP7 DUP2 MSTORE CALLER SWAP1 DUP9 SWAP1 PUSH32 0x24C3CD6E13A29307BAB455491E4CD5B29F6A457854A08F27F319AB4F8FEC5138 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x153D PUSH2 0x159B JUMP JUMPDEST SWAP1 POP DUP3 ISZERO DUP1 PUSH2 0x154F JUMPI POP DUP1 PUSH1 0x6 ADD SLOAD DUP4 GT JUMPDEST ISZERO PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5BAFAFD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x8 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1594 DUP4 DUP4 DUP6 PUSH1 0x3 ADD SLOAD PUSH2 0x1785 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4602C7A79EAC2C186A5049FA18AA513E24B689A1ED3277F24B1E5B426612D100 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x15CA PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x2 DUP5 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15EB JUMPI PUSH2 0x15EB PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x160E JUMPI POP POP DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP3 DIV AND EQ PUSH2 0x1594 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x12 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP7 MSTORE SWAP3 SWAP1 MSTORE POP SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x165F JUMPI PUSH2 0x165F PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x166C JUMPI POP PUSH1 0x1 PUSH2 0x154 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1676 PUSH2 0x159B JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x13 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x169B DUP5 DUP7 PUSH2 0x1D75 JUMP JUMPDEST SWAP1 POP DUP4 PUSH2 0x16A9 DUP5 PUSH1 0x1 PUSH2 0x1D97 JUMP JUMPDEST SUB PUSH2 0x16D5 JUMPI PUSH2 0x16B9 PUSH1 0x1 DUP6 PUSH2 0x1D4B JUMP JUMPDEST PUSH2 0x16C3 SWAP1 DUP3 PUSH2 0x1D5E JUMP JUMPDEST PUSH2 0x16CD SWAP1 DUP7 PUSH2 0x1D4B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1594 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7B9C93D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF73927A SWAP1 PUSH2 0x1714 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C53 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1731 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1759 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C8B JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x177F JUMPI DUP3 DUP2 PUSH1 0x40 MLOAD PUSH4 0x411F12C7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1DAA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1790 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x3 ADD SLOAD DUP5 GT PUSH2 0x17A5 JUMPI DUP4 PUSH2 0x17AB JUMP JUMPDEST DUP6 PUSH1 0x3 ADD SLOAD JUMPDEST SWAP1 POP DUP6 PUSH1 0x2 ADD SLOAD DUP2 LT ISZERO PUSH2 0x17C4 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1594 JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x28 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x187D JUMPI PUSH1 0x2 DUP7 ADD SLOAD JUMPDEST DUP2 DUP2 GT PUSH2 0x1875 JUMPI PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x44368AE9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x886D15D2 SWAP1 PUSH2 0x1816 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1833 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1857 SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST PUSH2 0x1861 SWAP1 DUP6 PUSH2 0x1D97 JUMP JUMPDEST SWAP4 POP DUP1 PUSH2 0x186D DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x17DB JUMP JUMPDEST POP POP POP PUSH2 0x1594 JUMP JUMPDEST PUSH1 0x2 DUP7 ADD SLOAD JUMPDEST DUP2 DUP2 GT PUSH2 0x197D JUMPI PUSH1 0x0 JUMPDEST PUSH1 0xF DUP9 ADD SLOAD DUP2 LT ISZERO PUSH2 0x196A JUMPI PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0xF DUP10 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x9352D272 SWAP2 DUP11 SWAP2 DUP7 SWAP2 SWAP1 DUP7 SWAP1 DUP2 LT PUSH2 0x18CB JUMPI PUSH2 0x18CB PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1928 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x194C SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST PUSH2 0x1956 SWAP1 DUP7 PUSH2 0x1D97 JUMP JUMPDEST SWAP5 POP DUP1 PUSH2 0x1962 DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x188D JUMP JUMPDEST POP DUP1 PUSH2 0x1975 DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1883 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x9 DUP3 ADD SLOAD ISZERO DUP1 PUSH2 0x199B JUMPI POP DUP2 PUSH1 0x8 ADD SLOAD DUP2 GT JUMPDEST ISZERO PUSH2 0x19AF JUMPI PUSH1 0x8 DUP3 ADD SSTORE PUSH1 0x1 PUSH1 0x9 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST DUP2 PUSH1 0x8 ADD SLOAD DUP2 SUB PUSH2 0x19D2 JUMPI PUSH1 0x9 DUP3 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x19CC DUP4 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19E1 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x19FB JUMPI PUSH2 0x19FB PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x1A53 JUMPI PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x9 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A3B JUMPI PUSH2 0x1A3B PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x1A47 JUMPI PUSH1 0x0 PUSH2 0x16CD JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH2 0x1594 JUMP JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP3 DIV AND EQ PUSH2 0x1A75 JUMPI PUSH1 0x0 PUSH2 0x1A7B JUMP JUMPDEST DUP4 PUSH1 0x7 ADD SLOAD JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1AB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 DUP2 ADD PUSH1 0x5 DUP4 LT PUSH2 0x1B06 JUMPI PUSH2 0x1B06 PUSH2 0x1AD9 JUMP JUMPDEST DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1B75 JUMPI PUSH2 0x1B75 PUSH2 0x1B4D JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1BA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1594 DUP3 PUSH2 0x1B95 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x1C04 JUMPI PUSH2 0x1C04 PUSH2 0x1AD9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1C16 DUP3 DUP7 PUSH2 0x1BF4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C82 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C6A JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CA7 DUP4 PUSH2 0x1B95 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x1CC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1CD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1CEA JUMPI PUSH2 0x1CEA PUSH2 0x1C27 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1D12 JUMPI PUSH2 0x1D12 PUSH2 0x1C27 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1D2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D3C DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x1C67 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x154 JUMPI PUSH2 0x154 PUSH2 0x1B4D JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x154 JUMPI PUSH2 0x154 PUSH2 0x1B4D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1D92 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x154 JUMPI PUSH2 0x154 PUSH2 0x1B4D JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x1DD7 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1C67 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID INVALID RETURNDATASIZE PUSH5 0xDFE4A8229 BASEFEE 0xE2 0xE1 0x5D 0xA6 0xBB 0xCA SHL PUSH4 0xA18D21E DUP3 0x5E 0xDE 0xB5 DUP2 PUSH14 0x60F4E5703BA26469706673582212 KECCAK256 SAR 0xC2 PUSH23 0xDAD8D0AF16CBCD83B7025A72BD02BAC41E5BEB00954E0B EXTCODEHASH BALANCE 0x25 0x21 GT 0xEB PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"919:18716:24:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;919:18716:24;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getChallenge_12542":{"entryPoint":5426,"id":12542,"parameterSlots":1,"returnSlots":1},"@_getParticipantActionsUpTo_12502":{"entryPoint":6021,"id":12502,"parameterSlots":3,"returnSlots":1},"@_getParticipantActions_12394":{"entryPoint":5507,"id":12394,"parameterSlots":2,"returnSlots":1},"@_isEligibleForPayout_12250":{"entryPoint":5567,"id":12250,"parameterSlots":3,"returnSlots":1},"@_payoutAmount_12376":{"entryPoint":5774,"id":12376,"parameterSlots":3,"returnSlots":1},"@_payoutRecipientCount_12339":{"entryPoint":5694,"id":12339,"parameterSlots":2,"returnSlots":1},"@_refundAmount_12304":{"entryPoint":6614,"id":12304,"parameterSlots":3,"returnSlots":1},"@_requirePerson_12164":{"entryPoint":5853,"id":12164,"parameterSlots":2,"returnSlots":0},"@_updateBestScore_12208":{"entryPoint":6535,"id":12208,"parameterSlots":2,"returnSlots":0},"@claimChallengePayout_11474":{"entryPoint":346,"id":11474,"parameterSlots":1,"returnSlots":1},"@claimChallengeRefund_12109":{"entryPoint":3664,"id":12109,"parameterSlots":1,"returnSlots":1},"@claimCreatorSplitWinRefund_11976":{"entryPoint":4324,"id":11976,"parameterSlots":1,"returnSlots":1},"@claimSplitWinPrize_11746":{"entryPoint":1100,"id":11746,"parameterSlots":1,"returnSlots":1},"@completeChallenge_11314":{"entryPoint":2307,"id":11314,"parameterSlots":1,"returnSlots":0},"@getChallengesStorage_12654":{"entryPoint":5531,"id":12654,"parameterSlots":0,"returnSlots":1},"@getParticipantActions_12134":{"entryPoint":312,"id":12134,"parameterSlots":2,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":7061,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":7082,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_boolt_string_memory_ptr_fromMemory":{"entryPoint":7307,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":6848,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":7109,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":6788,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":6931,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_enum_SettlementMode":{"entryPoint":7156,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":7251,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7594,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":7036,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_enum$_SettlementMode_$12678_t_rational_0_by_1_t_rational_0_by_1__to_t_uint8_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":7176,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_enum$_SettlementMode_$12678_t_uint256_t_uint256__to_t_uint8_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed":{"entryPoint":6966,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address_t_uint256_t_uint256__to_t_uint256_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_uint256_t_enum$_ChallengeStatus_$12673__to_t_uint256_t_uint8__fromStack_reversed":{"entryPoint":6895,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":7134,"id":null,"parameterSlots":4,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":7575,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":7541,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":7518,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":7499,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":7271,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint256":{"entryPoint":7011,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":6989,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":6873,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":7229,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":7207,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7918:46","statements":[{"nodeType":"YulBlock","src":"6:3:46","statements":[]},{"body":{"nodeType":"YulBlock","src":"101:267:46","statements":[{"body":{"nodeType":"YulBlock","src":"147:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"156:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"149:6:46"},"nodeType":"YulFunctionCall","src":"149:12:46"},"nodeType":"YulExpressionStatement","src":"149:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"122:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"131:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"118:3:46"},"nodeType":"YulFunctionCall","src":"118:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"143:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"114:3:46"},"nodeType":"YulFunctionCall","src":"114:32:46"},"nodeType":"YulIf","src":"111:52:46"},{"nodeType":"YulAssignment","src":"172:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"195:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"182:12:46"},"nodeType":"YulFunctionCall","src":"182:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"172:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"214:45:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"244:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"240:3:46"},"nodeType":"YulFunctionCall","src":"240:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"227:12:46"},"nodeType":"YulFunctionCall","src":"227:32:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"218:5:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"322:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"331:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"334:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"324:6:46"},"nodeType":"YulFunctionCall","src":"324:12:46"},"nodeType":"YulExpressionStatement","src":"324:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"281:5:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"292:5:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"307:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"312:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"303:3:46"},"nodeType":"YulFunctionCall","src":"303:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"316:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"299:3:46"},"nodeType":"YulFunctionCall","src":"299:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"288:3:46"},"nodeType":"YulFunctionCall","src":"288:31:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"278:2:46"},"nodeType":"YulFunctionCall","src":"278:42:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"271:6:46"},"nodeType":"YulFunctionCall","src":"271:50:46"},"nodeType":"YulIf","src":"268:70:46"},{"nodeType":"YulAssignment","src":"347:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"357:5:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"347:6:46"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"59:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"70:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"82:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"90:6:46","type":""}],"src":"14:354:46"},{"body":{"nodeType":"YulBlock","src":"482:76:46","statements":[{"nodeType":"YulAssignment","src":"492:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"504:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"515:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"500:3:46"},"nodeType":"YulFunctionCall","src":"500:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"492:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"534:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"545:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"527:6:46"},"nodeType":"YulFunctionCall","src":"527:25:46"},"nodeType":"YulExpressionStatement","src":"527:25:46"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"451:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"462:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"473:4:46","type":""}],"src":"373:185:46"},{"body":{"nodeType":"YulBlock","src":"633:110:46","statements":[{"body":{"nodeType":"YulBlock","src":"679:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"688:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"691:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"681:6:46"},"nodeType":"YulFunctionCall","src":"681:12:46"},"nodeType":"YulExpressionStatement","src":"681:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"654:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"663:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"650:3:46"},"nodeType":"YulFunctionCall","src":"650:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"675:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"646:3:46"},"nodeType":"YulFunctionCall","src":"646:32:46"},"nodeType":"YulIf","src":"643:52:46"},{"nodeType":"YulAssignment","src":"704:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"727:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"714:12:46"},"nodeType":"YulFunctionCall","src":"714:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"704:6:46"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"599:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"610:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"622:6:46","type":""}],"src":"563:180:46"},{"body":{"nodeType":"YulBlock","src":"780:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"797:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"804:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"809:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"800:3:46"},"nodeType":"YulFunctionCall","src":"800:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"790:6:46"},"nodeType":"YulFunctionCall","src":"790:31:46"},"nodeType":"YulExpressionStatement","src":"790:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"837:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"840:4:46","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"830:6:46"},"nodeType":"YulFunctionCall","src":"830:15:46"},"nodeType":"YulExpressionStatement","src":"830:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"861:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"864:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"854:6:46"},"nodeType":"YulFunctionCall","src":"854:15:46"},"nodeType":"YulExpressionStatement","src":"854:15:46"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"748:127:46"},{"body":{"nodeType":"YulBlock","src":"1028:175:46","statements":[{"nodeType":"YulAssignment","src":"1038:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1050:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"1061:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1046:3:46"},"nodeType":"YulFunctionCall","src":"1046:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1038:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1080:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"1091:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1073:6:46"},"nodeType":"YulFunctionCall","src":"1073:25:46"},"nodeType":"YulExpressionStatement","src":"1073:25:46"},{"body":{"nodeType":"YulBlock","src":"1132:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"1134:16:46"},"nodeType":"YulFunctionCall","src":"1134:18:46"},"nodeType":"YulExpressionStatement","src":"1134:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1120:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"1128:1:46","type":"","value":"5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1117:2:46"},"nodeType":"YulFunctionCall","src":"1117:13:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1110:6:46"},"nodeType":"YulFunctionCall","src":"1110:21:46"},"nodeType":"YulIf","src":"1107:47:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1174:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"1185:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1170:3:46"},"nodeType":"YulFunctionCall","src":"1170:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"1190:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:46"},"nodeType":"YulFunctionCall","src":"1163:34:46"},"nodeType":"YulExpressionStatement","src":"1163:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_enum$_ChallengeStatus_$12673__to_t_uint256_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"989:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1000:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1008:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1019:4:46","type":""}],"src":"880:323:46"},{"body":{"nodeType":"YulBlock","src":"1287:194:46","statements":[{"body":{"nodeType":"YulBlock","src":"1333:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1342:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1345:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1335:6:46"},"nodeType":"YulFunctionCall","src":"1335:12:46"},"nodeType":"YulExpressionStatement","src":"1335:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1308:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"1317:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1304:3:46"},"nodeType":"YulFunctionCall","src":"1304:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"1329:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1300:3:46"},"nodeType":"YulFunctionCall","src":"1300:32:46"},"nodeType":"YulIf","src":"1297:52:46"},{"nodeType":"YulVariableDeclaration","src":"1358:29:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1377:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1371:5:46"},"nodeType":"YulFunctionCall","src":"1371:16:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1362:5:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"1435:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1444:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1447:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1437:6:46"},"nodeType":"YulFunctionCall","src":"1437:12:46"},"nodeType":"YulExpressionStatement","src":"1437:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1409:5:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1420:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"1427:4:46","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1416:3:46"},"nodeType":"YulFunctionCall","src":"1416:16:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1406:2:46"},"nodeType":"YulFunctionCall","src":"1406:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1399:6:46"},"nodeType":"YulFunctionCall","src":"1399:35:46"},"nodeType":"YulIf","src":"1396:55:46"},{"nodeType":"YulAssignment","src":"1460:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"1470:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1460:6:46"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1253:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1264:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1276:6:46","type":""}],"src":"1208:273:46"},{"body":{"nodeType":"YulBlock","src":"1615:145:46","statements":[{"nodeType":"YulAssignment","src":"1625:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1637:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"1648:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1633:3:46"},"nodeType":"YulFunctionCall","src":"1633:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1625:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1667:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"1678:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1660:6:46"},"nodeType":"YulFunctionCall","src":"1660:25:46"},"nodeType":"YulExpressionStatement","src":"1660:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1705:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"1716:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1701:3:46"},"nodeType":"YulFunctionCall","src":"1701:18:46"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1725:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1741:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1746:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1737:3:46"},"nodeType":"YulFunctionCall","src":"1737:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"1750:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1733:3:46"},"nodeType":"YulFunctionCall","src":"1733:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1721:3:46"},"nodeType":"YulFunctionCall","src":"1721:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1694:6:46"},"nodeType":"YulFunctionCall","src":"1694:60:46"},"nodeType":"YulExpressionStatement","src":"1694:60:46"}]},"name":"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1576:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1587:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1595:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1606:4:46","type":""}],"src":"1486:274:46"},{"body":{"nodeType":"YulBlock","src":"1797:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1814:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1821:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1826:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1817:3:46"},"nodeType":"YulFunctionCall","src":"1817:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1807:6:46"},"nodeType":"YulFunctionCall","src":"1807:31:46"},"nodeType":"YulExpressionStatement","src":"1807:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1854:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1857:4:46","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1847:6:46"},"nodeType":"YulFunctionCall","src":"1847:15:46"},"nodeType":"YulExpressionStatement","src":"1847:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1878:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1881:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1871:6:46"},"nodeType":"YulFunctionCall","src":"1871:15:46"},"nodeType":"YulExpressionStatement","src":"1871:15:46"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"1765:127:46"},{"body":{"nodeType":"YulBlock","src":"1944:88:46","statements":[{"body":{"nodeType":"YulBlock","src":"1975:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"1977:16:46"},"nodeType":"YulFunctionCall","src":"1977:18:46"},"nodeType":"YulExpressionStatement","src":"1977:18:46"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1960:5:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1971:1:46","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1967:3:46"},"nodeType":"YulFunctionCall","src":"1967:6:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1957:2:46"},"nodeType":"YulFunctionCall","src":"1957:17:46"},"nodeType":"YulIf","src":"1954:43:46"},{"nodeType":"YulAssignment","src":"2006:20:46","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2017:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"2024:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2013:3:46"},"nodeType":"YulFunctionCall","src":"2013:13:46"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"2006:3:46"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1926:5:46","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"1936:3:46","type":""}],"src":"1897:135:46"},{"body":{"nodeType":"YulBlock","src":"2166:145:46","statements":[{"nodeType":"YulAssignment","src":"2176:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2188:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"2199:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:46"},"nodeType":"YulFunctionCall","src":"2184:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2176:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2218:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2233:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2249:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"2254:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2245:3:46"},"nodeType":"YulFunctionCall","src":"2245:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"2258:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2241:3:46"},"nodeType":"YulFunctionCall","src":"2241:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2229:3:46"},"nodeType":"YulFunctionCall","src":"2229:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2211:6:46"},"nodeType":"YulFunctionCall","src":"2211:51:46"},"nodeType":"YulExpressionStatement","src":"2211:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2282:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"2293:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2278:3:46"},"nodeType":"YulFunctionCall","src":"2278:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"2298:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2271:6:46"},"nodeType":"YulFunctionCall","src":"2271:34:46"},"nodeType":"YulExpressionStatement","src":"2271:34:46"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2127:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2138:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2146:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2157:4:46","type":""}],"src":"2037:274:46"},{"body":{"nodeType":"YulBlock","src":"2373:107:46","statements":[{"nodeType":"YulAssignment","src":"2383:22:46","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2398:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2392:5:46"},"nodeType":"YulFunctionCall","src":"2392:13:46"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2383:5:46"}]},{"body":{"nodeType":"YulBlock","src":"2458:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2467:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2470:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2460:6:46"},"nodeType":"YulFunctionCall","src":"2460:12:46"},"nodeType":"YulExpressionStatement","src":"2460:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2427:5:46"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2448:5:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2441:6:46"},"nodeType":"YulFunctionCall","src":"2441:13:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2434:6:46"},"nodeType":"YulFunctionCall","src":"2434:21:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2424:2:46"},"nodeType":"YulFunctionCall","src":"2424:32:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2417:6:46"},"nodeType":"YulFunctionCall","src":"2417:40:46"},"nodeType":"YulIf","src":"2414:60:46"}]},"name":"abi_decode_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2352:6:46","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2363:5:46","type":""}],"src":"2316:164:46"},{"body":{"nodeType":"YulBlock","src":"2563:124:46","statements":[{"body":{"nodeType":"YulBlock","src":"2609:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2618:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2621:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2611:6:46"},"nodeType":"YulFunctionCall","src":"2611:12:46"},"nodeType":"YulExpressionStatement","src":"2611:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2584:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"2593:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2580:3:46"},"nodeType":"YulFunctionCall","src":"2580:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"2605:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2576:3:46"},"nodeType":"YulFunctionCall","src":"2576:32:46"},"nodeType":"YulIf","src":"2573:52:46"},{"nodeType":"YulAssignment","src":"2634:47:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2671:9:46"}],"functionName":{"name":"abi_decode_bool_fromMemory","nodeType":"YulIdentifier","src":"2644:26:46"},"nodeType":"YulFunctionCall","src":"2644:37:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2634:6:46"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2529:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2540:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2552:6:46","type":""}],"src":"2485:202:46"},{"body":{"nodeType":"YulBlock","src":"2793:76:46","statements":[{"nodeType":"YulAssignment","src":"2803:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2815:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"2826:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:46"},"nodeType":"YulFunctionCall","src":"2811:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2803:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2845:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"2856:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2838:6:46"},"nodeType":"YulFunctionCall","src":"2838:25:46"},"nodeType":"YulExpressionStatement","src":"2838:25:46"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2762:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2773:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2784:4:46","type":""}],"src":"2692:177:46"},{"body":{"nodeType":"YulBlock","src":"2955:103:46","statements":[{"body":{"nodeType":"YulBlock","src":"3001:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3010:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3013:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3003:6:46"},"nodeType":"YulFunctionCall","src":"3003:12:46"},"nodeType":"YulExpressionStatement","src":"3003:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2976:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"2985:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2972:3:46"},"nodeType":"YulFunctionCall","src":"2972:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"2997:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2968:3:46"},"nodeType":"YulFunctionCall","src":"2968:32:46"},"nodeType":"YulIf","src":"2965:52:46"},{"nodeType":"YulAssignment","src":"3026:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3042:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3036:5:46"},"nodeType":"YulFunctionCall","src":"3036:16:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3026:6:46"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2921:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2932:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2944:6:46","type":""}],"src":"2874:184:46"},{"body":{"nodeType":"YulBlock","src":"3220:162:46","statements":[{"nodeType":"YulAssignment","src":"3230:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3242:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3253:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3238:3:46"},"nodeType":"YulFunctionCall","src":"3238:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3230:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3272:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"3283:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3265:6:46"},"nodeType":"YulFunctionCall","src":"3265:25:46"},"nodeType":"YulExpressionStatement","src":"3265:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3310:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3321:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3306:3:46"},"nodeType":"YulFunctionCall","src":"3306:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"3326:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3299:6:46"},"nodeType":"YulFunctionCall","src":"3299:34:46"},"nodeType":"YulExpressionStatement","src":"3299:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3353:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3364:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3349:3:46"},"nodeType":"YulFunctionCall","src":"3349:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"3369:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3342:6:46"},"nodeType":"YulFunctionCall","src":"3342:34:46"},"nodeType":"YulExpressionStatement","src":"3342:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3173:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3184:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3192:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3200:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3211:4:46","type":""}],"src":"3063:319:46"},{"body":{"nodeType":"YulBlock","src":"3572:232:46","statements":[{"nodeType":"YulAssignment","src":"3582:27:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3594:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3605:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3590:3:46"},"nodeType":"YulFunctionCall","src":"3590:19:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3582:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3625:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"3636:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3618:6:46"},"nodeType":"YulFunctionCall","src":"3618:25:46"},"nodeType":"YulExpressionStatement","src":"3618:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3663:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3674:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3659:3:46"},"nodeType":"YulFunctionCall","src":"3659:18:46"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3683:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3699:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"3704:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3695:3:46"},"nodeType":"YulFunctionCall","src":"3695:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"3708:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3691:3:46"},"nodeType":"YulFunctionCall","src":"3691:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3679:3:46"},"nodeType":"YulFunctionCall","src":"3679:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3652:6:46"},"nodeType":"YulFunctionCall","src":"3652:60:46"},"nodeType":"YulExpressionStatement","src":"3652:60:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3732:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3743:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3728:3:46"},"nodeType":"YulFunctionCall","src":"3728:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"3748:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3721:6:46"},"nodeType":"YulFunctionCall","src":"3721:34:46"},"nodeType":"YulExpressionStatement","src":"3721:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3775:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3786:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3771:3:46"},"nodeType":"YulFunctionCall","src":"3771:18:46"},{"name":"value3","nodeType":"YulIdentifier","src":"3791:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3764:6:46"},"nodeType":"YulFunctionCall","src":"3764:34:46"},"nodeType":"YulExpressionStatement","src":"3764:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256_t_uint256__to_t_uint256_t_address_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3517:9:46","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3528:6:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3536:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3544:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3552:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3563:4:46","type":""}],"src":"3387:417:46"},{"body":{"nodeType":"YulBlock","src":"3865:89:46","statements":[{"body":{"nodeType":"YulBlock","src":"3899:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"3901:16:46"},"nodeType":"YulFunctionCall","src":"3901:18:46"},"nodeType":"YulExpressionStatement","src":"3901:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3888:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"3895:1:46","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3885:2:46"},"nodeType":"YulFunctionCall","src":"3885:12:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3878:6:46"},"nodeType":"YulFunctionCall","src":"3878:20:46"},"nodeType":"YulIf","src":"3875:46:46"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3937:3:46"},{"name":"value","nodeType":"YulIdentifier","src":"3942:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3930:6:46"},"nodeType":"YulFunctionCall","src":"3930:18:46"},"nodeType":"YulExpressionStatement","src":"3930:18:46"}]},"name":"abi_encode_enum_SettlementMode","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3849:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3856:3:46","type":""}],"src":"3809:145:46"},{"body":{"nodeType":"YulBlock","src":"4150:186:46","statements":[{"nodeType":"YulAssignment","src":"4160:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4172:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4183:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4168:3:46"},"nodeType":"YulFunctionCall","src":"4168:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4160:4:46"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4226:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"4234:9:46"}],"functionName":{"name":"abi_encode_enum_SettlementMode","nodeType":"YulIdentifier","src":"4195:30:46"},"nodeType":"YulFunctionCall","src":"4195:49:46"},"nodeType":"YulExpressionStatement","src":"4195:49:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4264:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4275:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4260:3:46"},"nodeType":"YulFunctionCall","src":"4260:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"4280:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4253:6:46"},"nodeType":"YulFunctionCall","src":"4253:34:46"},"nodeType":"YulExpressionStatement","src":"4253:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4307:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4318:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4303:3:46"},"nodeType":"YulFunctionCall","src":"4303:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"4323:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4296:6:46"},"nodeType":"YulFunctionCall","src":"4296:34:46"},"nodeType":"YulExpressionStatement","src":"4296:34:46"}]},"name":"abi_encode_tuple_t_enum$_SettlementMode_$12678_t_rational_0_by_1_t_rational_0_by_1__to_t_uint8_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4103:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4114:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4122:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4130:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4141:4:46","type":""}],"src":"3959:377:46"},{"body":{"nodeType":"YulBlock","src":"4373:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4390:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4397:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"4402:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4393:3:46"},"nodeType":"YulFunctionCall","src":"4393:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4383:6:46"},"nodeType":"YulFunctionCall","src":"4383:31:46"},"nodeType":"YulExpressionStatement","src":"4383:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4430:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4433:4:46","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4423:6:46"},"nodeType":"YulFunctionCall","src":"4423:15:46"},"nodeType":"YulExpressionStatement","src":"4423:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4454:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4457:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4447:6:46"},"nodeType":"YulFunctionCall","src":"4447:15:46"},"nodeType":"YulExpressionStatement","src":"4447:15:46"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"4341:127:46"},{"body":{"nodeType":"YulBlock","src":"4505:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4522:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4529:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"4534:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4525:3:46"},"nodeType":"YulFunctionCall","src":"4525:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4515:6:46"},"nodeType":"YulFunctionCall","src":"4515:31:46"},"nodeType":"YulExpressionStatement","src":"4515:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4562:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4565:4:46","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4555:6:46"},"nodeType":"YulFunctionCall","src":"4555:15:46"},"nodeType":"YulExpressionStatement","src":"4555:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4586:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4589:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4579:6:46"},"nodeType":"YulFunctionCall","src":"4579:15:46"},"nodeType":"YulExpressionStatement","src":"4579:15:46"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"4473:127:46"},{"body":{"nodeType":"YulBlock","src":"4706:102:46","statements":[{"nodeType":"YulAssignment","src":"4716:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4728:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4739:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4724:3:46"},"nodeType":"YulFunctionCall","src":"4724:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4716:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4758:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4773:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4789:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4794:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4785:3:46"},"nodeType":"YulFunctionCall","src":"4785:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"4798:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4781:3:46"},"nodeType":"YulFunctionCall","src":"4781:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4769:3:46"},"nodeType":"YulFunctionCall","src":"4769:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4751:6:46"},"nodeType":"YulFunctionCall","src":"4751:51:46"},"nodeType":"YulExpressionStatement","src":"4751:51:46"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4675:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4686:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4697:4:46","type":""}],"src":"4605:203:46"},{"body":{"nodeType":"YulBlock","src":"4879:184:46","statements":[{"nodeType":"YulVariableDeclaration","src":"4889:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4898:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4893:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"4958:63:46","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4983:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"4988:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4979:3:46"},"nodeType":"YulFunctionCall","src":"4979:11:46"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5002:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"5007:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4998:3:46"},"nodeType":"YulFunctionCall","src":"4998:11:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4992:5:46"},"nodeType":"YulFunctionCall","src":"4992:18:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4972:6:46"},"nodeType":"YulFunctionCall","src":"4972:39:46"},"nodeType":"YulExpressionStatement","src":"4972:39:46"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4919:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"4922:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4916:2:46"},"nodeType":"YulFunctionCall","src":"4916:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4930:19:46","statements":[{"nodeType":"YulAssignment","src":"4932:15:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4941:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"4944:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4937:3:46"},"nodeType":"YulFunctionCall","src":"4937:10:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4932:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"4912:3:46","statements":[]},"src":"4908:113:46"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5041:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"5046:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5037:3:46"},"nodeType":"YulFunctionCall","src":"5037:16:46"},{"kind":"number","nodeType":"YulLiteral","src":"5055:1:46","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5030:6:46"},"nodeType":"YulFunctionCall","src":"5030:27:46"},"nodeType":"YulExpressionStatement","src":"5030:27:46"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4857:3:46","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4862:3:46","type":""},{"name":"length","nodeType":"YulTypedName","src":"4867:6:46","type":""}],"src":"4813:250:46"},{"body":{"nodeType":"YulBlock","src":"5173:871:46","statements":[{"body":{"nodeType":"YulBlock","src":"5219:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5228:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5231:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5221:6:46"},"nodeType":"YulFunctionCall","src":"5221:12:46"},"nodeType":"YulExpressionStatement","src":"5221:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5194:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"5203:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5190:3:46"},"nodeType":"YulFunctionCall","src":"5190:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"5215:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5186:3:46"},"nodeType":"YulFunctionCall","src":"5186:32:46"},"nodeType":"YulIf","src":"5183:52:46"},{"nodeType":"YulAssignment","src":"5244:47:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5281:9:46"}],"functionName":{"name":"abi_decode_bool_fromMemory","nodeType":"YulIdentifier","src":"5254:26:46"},"nodeType":"YulFunctionCall","src":"5254:37:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5244:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"5300:39:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5324:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"5335:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5320:3:46"},"nodeType":"YulFunctionCall","src":"5320:18:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5314:5:46"},"nodeType":"YulFunctionCall","src":"5314:25:46"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5304:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5348:28:46","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5366:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"5370:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5362:3:46"},"nodeType":"YulFunctionCall","src":"5362:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"5374:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5358:3:46"},"nodeType":"YulFunctionCall","src":"5358:18:46"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5352:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"5403:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5412:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5415:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5405:6:46"},"nodeType":"YulFunctionCall","src":"5405:12:46"},"nodeType":"YulExpressionStatement","src":"5405:12:46"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5391:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"5399:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5388:2:46"},"nodeType":"YulFunctionCall","src":"5388:14:46"},"nodeType":"YulIf","src":"5385:34:46"},{"nodeType":"YulVariableDeclaration","src":"5428:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5442:9:46"},{"name":"offset","nodeType":"YulIdentifier","src":"5453:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5438:3:46"},"nodeType":"YulFunctionCall","src":"5438:22:46"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5432:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"5508:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5517:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5520:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5510:6:46"},"nodeType":"YulFunctionCall","src":"5510:12:46"},"nodeType":"YulExpressionStatement","src":"5510:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5487:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"5491:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5483:3:46"},"nodeType":"YulFunctionCall","src":"5483:13:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5498:7:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5479:3:46"},"nodeType":"YulFunctionCall","src":"5479:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5472:6:46"},"nodeType":"YulFunctionCall","src":"5472:35:46"},"nodeType":"YulIf","src":"5469:55:46"},{"nodeType":"YulVariableDeclaration","src":"5533:19:46","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5549:2:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5543:5:46"},"nodeType":"YulFunctionCall","src":"5543:9:46"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"5537:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"5575:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5577:16:46"},"nodeType":"YulFunctionCall","src":"5577:18:46"},"nodeType":"YulExpressionStatement","src":"5577:18:46"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"5567:2:46"},{"name":"_1","nodeType":"YulIdentifier","src":"5571:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5564:2:46"},"nodeType":"YulFunctionCall","src":"5564:10:46"},"nodeType":"YulIf","src":"5561:36:46"},{"nodeType":"YulVariableDeclaration","src":"5606:17:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5620:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5616:3:46"},"nodeType":"YulFunctionCall","src":"5616:7:46"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"5610:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5632:23:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5652:2:46","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5646:5:46"},"nodeType":"YulFunctionCall","src":"5646:9:46"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5636:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5664:71:46","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5686:6:46"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"5710:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"5714:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5706:3:46"},"nodeType":"YulFunctionCall","src":"5706:13:46"},{"name":"_4","nodeType":"YulIdentifier","src":"5721:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5702:3:46"},"nodeType":"YulFunctionCall","src":"5702:22:46"},{"kind":"number","nodeType":"YulLiteral","src":"5726:2:46","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5698:3:46"},"nodeType":"YulFunctionCall","src":"5698:31:46"},{"name":"_4","nodeType":"YulIdentifier","src":"5731:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5694:3:46"},"nodeType":"YulFunctionCall","src":"5694:40:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5682:3:46"},"nodeType":"YulFunctionCall","src":"5682:53:46"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5668:10:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"5794:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5796:16:46"},"nodeType":"YulFunctionCall","src":"5796:18:46"},"nodeType":"YulExpressionStatement","src":"5796:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5753:10:46"},{"name":"_1","nodeType":"YulIdentifier","src":"5765:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5750:2:46"},"nodeType":"YulFunctionCall","src":"5750:18:46"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5773:10:46"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5785:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5770:2:46"},"nodeType":"YulFunctionCall","src":"5770:22:46"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5747:2:46"},"nodeType":"YulFunctionCall","src":"5747:46:46"},"nodeType":"YulIf","src":"5744:72:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5832:2:46","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5836:10:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5825:6:46"},"nodeType":"YulFunctionCall","src":"5825:22:46"},"nodeType":"YulExpressionStatement","src":"5825:22:46"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5863:6:46"},{"name":"_3","nodeType":"YulIdentifier","src":"5871:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5856:6:46"},"nodeType":"YulFunctionCall","src":"5856:18:46"},"nodeType":"YulExpressionStatement","src":"5856:18:46"},{"body":{"nodeType":"YulBlock","src":"5920:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5929:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5932:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5922:6:46"},"nodeType":"YulFunctionCall","src":"5922:12:46"},"nodeType":"YulExpressionStatement","src":"5922:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5897:2:46"},{"name":"_3","nodeType":"YulIdentifier","src":"5901:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5893:3:46"},"nodeType":"YulFunctionCall","src":"5893:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"5906:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5889:3:46"},"nodeType":"YulFunctionCall","src":"5889:20:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5911:7:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5886:2:46"},"nodeType":"YulFunctionCall","src":"5886:33:46"},"nodeType":"YulIf","src":"5883:53:46"},{"expression":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5984:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"5988:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5980:3:46"},"nodeType":"YulFunctionCall","src":"5980:11:46"},{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5997:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"6005:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5993:3:46"},"nodeType":"YulFunctionCall","src":"5993:15:46"},{"name":"_3","nodeType":"YulIdentifier","src":"6010:2:46"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"5945:34:46"},"nodeType":"YulFunctionCall","src":"5945:68:46"},"nodeType":"YulExpressionStatement","src":"5945:68:46"},{"nodeType":"YulAssignment","src":"6022:16:46","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"6032:6:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6022:6:46"}]}]},"name":"abi_decode_tuple_t_boolt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5131:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5142:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5154:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5162:6:46","type":""}],"src":"5068:976:46"},{"body":{"nodeType":"YulBlock","src":"6224:186:46","statements":[{"nodeType":"YulAssignment","src":"6234:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6246:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6257:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6242:3:46"},"nodeType":"YulFunctionCall","src":"6242:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6234:4:46"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6300:6:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"6308:9:46"}],"functionName":{"name":"abi_encode_enum_SettlementMode","nodeType":"YulIdentifier","src":"6269:30:46"},"nodeType":"YulFunctionCall","src":"6269:49:46"},"nodeType":"YulExpressionStatement","src":"6269:49:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6338:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6349:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6334:3:46"},"nodeType":"YulFunctionCall","src":"6334:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"6354:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6327:6:46"},"nodeType":"YulFunctionCall","src":"6327:34:46"},"nodeType":"YulExpressionStatement","src":"6327:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6381:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6392:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6377:3:46"},"nodeType":"YulFunctionCall","src":"6377:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"6397:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6370:6:46"},"nodeType":"YulFunctionCall","src":"6370:34:46"},"nodeType":"YulExpressionStatement","src":"6370:34:46"}]},"name":"abi_encode_tuple_t_enum$_SettlementMode_$12678_t_uint256_t_uint256__to_t_uint8_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6177:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6188:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6196:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6204:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6215:4:46","type":""}],"src":"6049:361:46"},{"body":{"nodeType":"YulBlock","src":"6464:79:46","statements":[{"nodeType":"YulAssignment","src":"6474:17:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6486:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"6489:1:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6482:3:46"},"nodeType":"YulFunctionCall","src":"6482:9:46"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"6474:4:46"}]},{"body":{"nodeType":"YulBlock","src":"6515:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"6517:16:46"},"nodeType":"YulFunctionCall","src":"6517:18:46"},"nodeType":"YulExpressionStatement","src":"6517:18:46"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"6506:4:46"},{"name":"x","nodeType":"YulIdentifier","src":"6512:1:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6503:2:46"},"nodeType":"YulFunctionCall","src":"6503:11:46"},"nodeType":"YulIf","src":"6500:37:46"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"6446:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"6449:1:46","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"6455:4:46","type":""}],"src":"6415:128:46"},{"body":{"nodeType":"YulBlock","src":"6600:116:46","statements":[{"nodeType":"YulAssignment","src":"6610:20:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6625:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"6628:1:46"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6621:3:46"},"nodeType":"YulFunctionCall","src":"6621:9:46"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"6610:7:46"}]},{"body":{"nodeType":"YulBlock","src":"6688:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"6690:16:46"},"nodeType":"YulFunctionCall","src":"6690:18:46"},"nodeType":"YulExpressionStatement","src":"6690:18:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6659:1:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6652:6:46"},"nodeType":"YulFunctionCall","src":"6652:9:46"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"6666:1:46"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"6673:7:46"},{"name":"x","nodeType":"YulIdentifier","src":"6682:1:46"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6669:3:46"},"nodeType":"YulFunctionCall","src":"6669:15:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6663:2:46"},"nodeType":"YulFunctionCall","src":"6663:22:46"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6649:2:46"},"nodeType":"YulFunctionCall","src":"6649:37:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6642:6:46"},"nodeType":"YulFunctionCall","src":"6642:45:46"},"nodeType":"YulIf","src":"6639:71:46"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"6579:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"6582:1:46","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"6588:7:46","type":""}],"src":"6548:168:46"},{"body":{"nodeType":"YulBlock","src":"6767:171:46","statements":[{"body":{"nodeType":"YulBlock","src":"6798:111:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6819:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6826:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6831:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6822:3:46"},"nodeType":"YulFunctionCall","src":"6822:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6812:6:46"},"nodeType":"YulFunctionCall","src":"6812:31:46"},"nodeType":"YulExpressionStatement","src":"6812:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6863:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6866:4:46","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6856:6:46"},"nodeType":"YulFunctionCall","src":"6856:15:46"},"nodeType":"YulExpressionStatement","src":"6856:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6891:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6894:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6884:6:46"},"nodeType":"YulFunctionCall","src":"6884:15:46"},"nodeType":"YulExpressionStatement","src":"6884:15:46"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"6787:1:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6780:6:46"},"nodeType":"YulFunctionCall","src":"6780:9:46"},"nodeType":"YulIf","src":"6777:132:46"},{"nodeType":"YulAssignment","src":"6918:14:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6927:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"6930:1:46"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6923:3:46"},"nodeType":"YulFunctionCall","src":"6923:9:46"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"6918:1:46"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"6752:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"6755:1:46","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"6761:1:46","type":""}],"src":"6721:217:46"},{"body":{"nodeType":"YulBlock","src":"6991:77:46","statements":[{"nodeType":"YulAssignment","src":"7001:16:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7012:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"7015:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7008:3:46"},"nodeType":"YulFunctionCall","src":"7008:9:46"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"7001:3:46"}]},{"body":{"nodeType":"YulBlock","src":"7040:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7042:16:46"},"nodeType":"YulFunctionCall","src":"7042:18:46"},"nodeType":"YulExpressionStatement","src":"7042:18:46"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7032:1:46"},{"name":"sum","nodeType":"YulIdentifier","src":"7035:3:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7029:2:46"},"nodeType":"YulFunctionCall","src":"7029:10:46"},"nodeType":"YulIf","src":"7026:36:46"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"6974:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"6977:1:46","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"6983:3:46","type":""}],"src":"6943:125:46"},{"body":{"nodeType":"YulBlock","src":"7222:344:46","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7239:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7254:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7270:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"7275:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7266:3:46"},"nodeType":"YulFunctionCall","src":"7266:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"7279:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7262:3:46"},"nodeType":"YulFunctionCall","src":"7262:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7250:3:46"},"nodeType":"YulFunctionCall","src":"7250:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7232:6:46"},"nodeType":"YulFunctionCall","src":"7232:51:46"},"nodeType":"YulExpressionStatement","src":"7232:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7303:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7314:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7299:3:46"},"nodeType":"YulFunctionCall","src":"7299:18:46"},{"kind":"number","nodeType":"YulLiteral","src":"7319:2:46","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7292:6:46"},"nodeType":"YulFunctionCall","src":"7292:30:46"},"nodeType":"YulExpressionStatement","src":"7292:30:46"},{"nodeType":"YulVariableDeclaration","src":"7331:27:46","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7351:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7345:5:46"},"nodeType":"YulFunctionCall","src":"7345:13:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7335:6:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7378:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7389:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7374:3:46"},"nodeType":"YulFunctionCall","src":"7374:18:46"},{"name":"length","nodeType":"YulIdentifier","src":"7394:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7367:6:46"},"nodeType":"YulFunctionCall","src":"7367:34:46"},"nodeType":"YulExpressionStatement","src":"7367:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7449:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"7457:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7445:3:46"},"nodeType":"YulFunctionCall","src":"7445:15:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7466:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7477:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7462:3:46"},"nodeType":"YulFunctionCall","src":"7462:18:46"},{"name":"length","nodeType":"YulIdentifier","src":"7482:6:46"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7410:34:46"},"nodeType":"YulFunctionCall","src":"7410:79:46"},"nodeType":"YulExpressionStatement","src":"7410:79:46"},{"nodeType":"YulAssignment","src":"7498:62:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7514:9:46"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7533:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"7541:2:46","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7529:3:46"},"nodeType":"YulFunctionCall","src":"7529:15:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7550:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7546:3:46"},"nodeType":"YulFunctionCall","src":"7546:7:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7525:3:46"},"nodeType":"YulFunctionCall","src":"7525:29:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7510:3:46"},"nodeType":"YulFunctionCall","src":"7510:45:46"},{"kind":"number","nodeType":"YulLiteral","src":"7557:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7506:3:46"},"nodeType":"YulFunctionCall","src":"7506:54:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7498:4:46"}]}]},"name":"abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7183:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7194:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7202:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7213:4:46","type":""}],"src":"7073:493:46"},{"body":{"nodeType":"YulBlock","src":"7728:188:46","statements":[{"nodeType":"YulAssignment","src":"7738:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7750:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7761:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7746:3:46"},"nodeType":"YulFunctionCall","src":"7746:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7738:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7780:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7795:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7811:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"7816:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7807:3:46"},"nodeType":"YulFunctionCall","src":"7807:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"7820:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7803:3:46"},"nodeType":"YulFunctionCall","src":"7803:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7791:3:46"},"nodeType":"YulFunctionCall","src":"7791:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7773:6:46"},"nodeType":"YulFunctionCall","src":"7773:51:46"},"nodeType":"YulExpressionStatement","src":"7773:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7844:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7855:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7840:3:46"},"nodeType":"YulFunctionCall","src":"7840:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"7860:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7833:6:46"},"nodeType":"YulFunctionCall","src":"7833:34:46"},"nodeType":"YulExpressionStatement","src":"7833:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7887:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"7898:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7883:3:46"},"nodeType":"YulFunctionCall","src":"7883:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"7903:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7876:6:46"},"nodeType":"YulFunctionCall","src":"7876:34:46"},"nodeType":"YulExpressionStatement","src":"7876:34:46"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7681:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7692:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7700:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7708:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7719:4:46","type":""}],"src":"7571:345:46"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_uint256_t_enum$_ChallengeStatus_$12673__to_t_uint256_t_uint8__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        if iszero(lt(value1, 5)) { panic_error_0x21() }\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_bool_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_bool_fromMemory(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint256_t_address_t_uint256_t_uint256__to_t_uint256_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_enum_SettlementMode(value, pos)\n    {\n        if iszero(lt(value, 4)) { panic_error_0x21() }\n        mstore(pos, value)\n    }\n    function abi_encode_tuple_t_enum$_SettlementMode_$12678_t_rational_0_by_1_t_rational_0_by_1__to_t_uint8_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        abi_encode_enum_SettlementMode(value0, headStart)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_decode_tuple_t_boolt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_bool_fromMemory(headStart)\n        let offset := mload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_2, 32), add(memPtr, 32), _3)\n        value1 := memPtr\n    }\n    function abi_encode_tuple_t_enum$_SettlementMode_$12678_t_uint256_t_uint256__to_t_uint8_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        abi_encode_enum_SettlementMode(value0, headStart)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        copy_memory_to_memory_with_cleanup(add(value1, 32), add(headStart, 96), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n}","id":46,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{"contracts/challenges/libraries/ChallengeCoreLogic.sol":{"ChallengeCoreLogic":[{"length":20,"start":515},{"length":20,"start":1247},{"length":20,"start":2579},{"length":20,"start":3748},{"length":20,"start":4522}]}},"object":"730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c806314cf90771461007157806387d6e21314610096578063a0427700146100b6578063a7817bbc146100d6578063b58bd356146100f8578063cb3e0d2b14610118575b600080fd5b61008461007f366004611a84565b610138565b60405190815260200160405180910390f35b8180156100a257600080fd5b506100846100b1366004611ac0565b61015a565b8180156100c257600080fd5b506100846100d1366004611ac0565b61044c565b8180156100e257600080fd5b506100f66100f1366004611ac0565b610903565b005b81801561010457600080fd5b50610084610113366004611ac0565b610e50565b81801561012457600080fd5b50610084610133366004611ac0565b6110e4565b60008061014484611532565b90506101508184611583565b9150505b92915050565b60008061016561159b565b9050600061017284611532565b90506001815462010000900460ff16600181111561019257610192611ad9565b036101c95780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b60405180910390fd5b600081546301000000900460ff1660048111156101e8576101e8611ad9565b0361026357604051632cc3c16160e21b81526004810185905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af415801561023d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102619190611b13565b505b600281546301000000900460ff16600481111561028257610282611ad9565b146102b05780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b6000848152600e83016020908152604080832033845290915290205460ff16156102f15783336040516302a4851560e61b81526004016101c0929190611b36565b6102fc8482336115bf565b61031d57833360405163b361b5fb60e01b81526004016101c0929190611b36565b6000610329858361163e565b905061033e82600701548284600a015461168e565b6000868152600e8501602090815260408083203384529091528120805460ff19166001179055600a840180549296509061037783611b63565b9091555050825460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906103ad9033908890600401611b7c565b6020604051808303816000875af11580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f09190611baa565b61040d576040516312171d8360e31b815260040160405180910390fd5b604051848152339086907f88f0c55826d9ef2f514f933a99edb543a1514ee7211d8bfa04e66e29954fe6b49060200160405180910390a3505050919050565b60008061045761159b565b9050600061046484611532565b90506001815462010000900460ff16600181111561048457610484611ad9565b146104a557604051637c412df960e11b8152600481018590526024016101c0565b600081546301000000900460ff1660048111156104c4576104c4611ad9565b0361053f57604051632cc3c16160e21b81526004810185905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015610519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053d9190611b13565b505b600181546301000000900460ff16600481111561055e5761055e611ad9565b1461058c5780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b600282015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190611bc5565b905081600201548110156106335781546040516366fc878160e01b81526101c0918791630100000090910460ff1690600401611aef565b8160030154811115610661576003820154604051637b05ab9b60e01b81526101c09187918490600401611bde565b60036000868152600985016020908152604080832033845290915290205460ff16600381111561069357610693611ad9565b146106b557843360405163c100013360e01b81526004016101c0929190611b36565b6000858152601184016020908152604080832033845290915290205460ff16156106f65784336040516302a4851560e61b81526004016101c0929190611b36565b6005820154600e830154106107215760405163387c43a960e21b8152600481018690526024016101c0565b61072b83336116dd565b6000610738833384611785565b905082600401548110156107795760048381015460405163431170f560e11b81529182018890523360248301526044820183905260648201526084016101c0565b6006830154600e84018054600181810183556000928352602080842090920180546001600160a01b031916339081179091558a8452601189018352604080852082865290935292829020805460ff191690911790558654905163a9059cbb60e01b81529297506001600160a01b03169163a9059cbb916107fd918990600401611b7c565b6020604051808303816000875af115801561081c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108409190611baa565b61085d576040516312171d8360e31b815260040160405180910390fd5b600e830154604051339188917f4dcac657463253f9668a0d5c9a2f7c00a7d7ac72a1afe05e65034691fdd911c391610898918a918791611bde565b60405180910390a36005830154600e840154036108fa57825464ffff0000001916640302000000178084556040518791600080516020611ded833981519152916108f191600160201b900460ff16906000908190611c08565b60405180910390a25b50505050919050565b600061090d61159b565b9050600061091a83611532565b90506001815462010000900460ff16600181111561093a5761093a611ad9565b0361095b5760405163180ebb8f60e21b8152600481018490526024016101c0565b600282015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa1580156109a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611bc5565b9050816003015481116109fa5760038201546040516357684ca560e01b81526101c09186918490600401611bde565b604051632cc3c16160e21b81526004810185905260009073__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015610a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a719190611b13565b60ff166004811115610a8557610a85611ad9565b90506004816004811115610a9b57610a9b611ad9565b1480610ab857506003816004811115610ab657610ab6611ad9565b145b15610ada5784816040516366fc878160e01b81526004016101c0929190611aef565b6002816004811115610aee57610aee611ad9565b03610b0f57604051633c6fa5d760e21b8152600481018690526024016101c0565b600b8301546000816001600160401b03811115610b2e57610b2e611c27565b604051908082528060200260200182016040528015610b57578160200160208202803683370190505b5090506000826001600160401b03811115610b7457610b74611c27565b604051908082528060200260200182016040528015610b9d578160200160208202803683370190505b50905060005b83811015610cc857600087600b018281548110610bc257610bc2611c3d565b600091825260208220015460018b01546040516307b9c93d60e11b81526001600160a01b039283169450911690630f73927a90610c03908590600401611c53565b600060405180830381865afa158015610c20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c489190810190611c8b565b50905080610c57575050610cb6565b6001848481518110610c6b57610c6b611c3d565b911515602092830291909101909101526000610c878a84611583565b905080868581518110610c9c57610c9c611c3d565b602002602001018181525050610cb28a82611987565b5050505b80610cc081611b63565b915050610ba3565b50600986015415610dba5760088601546000805b85811015610da657838181518110610cf657610cf6611c3d565b60200260200101518015610d22575082858281518110610d1857610d18611c3d565b6020026020010151145b15610d945760008b815260128b0160205260408120600b8b018054600193919085908110610d5257610d52611c3d565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905581610d9081611b63565b9250505b80610d9e81611b63565b915050610cdc565b5060008a815260138a016020526040902055505b600986015415610dcb576001610dce565b60025b8654879060ff60201b1916600160201b836003811115610df057610df0611ad9565b0217905550855463ff0000001916630200000017808755600887015460098801546040518b93600080516020611ded83398151915293610e3e93600160201b90920460ff1692909190611c08565b60405180910390a25050505050505050565b600080610e5b61159b565b90506000610e6884611532565b9050600081546301000000900460ff166004811115610e8957610e89611ad9565b03610f0457604051632cc3c16160e21b81526004810185905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af4158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f029190611b13565b505b600381546301000000900460ff166004811115610f2357610f23611ad9565b14158015610f4e5750600481546301000000900460ff166004811115610f4b57610f4b611ad9565b14155b15610f7c5780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b6000848152600f83016020908152604080832033845290915290205460ff1615610fbd578333604051636101359d60e01b81526004016101c0929190611b36565b610fc88482336119d6565b925082600003610fef578333604051632decd07b60e11b81526004016101c0929190611b36565b6000848152600f83016020908152604080832033808552925291829020805460ff191660011790558354915163a9059cbb60e01b81526001600160a01b03929092169163a9059cbb91611046918790600401611b7c565b6020604051808303816000875af1158015611065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110899190611baa565b6110a6576040516312171d8360e31b815260040160405180910390fd5b604051838152339085907ffb13634c7c32bbfbc28f461ca4b0c850887c9cfbde7d6c97f24bfcff25c7be369060200160405180910390a35050919050565b6000806110ef61159b565b905060006110fc84611532565b90506001815462010000900460ff16600181111561111c5761111c611ad9565b1461113d57604051637c412df960e11b8152600481018590526024016101c0565b8054600160301b90046001600160a01b0316331461117057336040516309edd0f760e11b81526004016101c09190611c53565b600081546301000000900460ff16600481111561118f5761118f611ad9565b0361120a57604051632cc3c16160e21b81526004810185905273__$e5c34f23aa37ff925bd96f5e6125be3c79$__9063b30f058490602401602060405180830381865af41580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112089190611b13565b505b600181546301000000900460ff16600481111561122957611229611ad9565b141580156112545750600281546301000000900460ff16600481111561125157611251611ad9565b14155b156112825780546040516366fc878160e01b81526101c0918691630100000090910460ff1690600401611aef565b600282015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa1580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f29190611bc5565b9050816003015481116113215760038201546040516357684ca560e01b81526101c09187918490600401611bde565b6000858152600f84016020908152604080832033845290915290205460ff1615611362578433604051636101359d60e01b81526004016101c0929190611b36565b600e820154600583015460009161137891611d4b565b90508060000361139f578533604051632decd07b60e11b81526004016101c0929190611b36565b600e83015460068401546000916113b591611d5e565b90508084600701546113c79190611d4b565b6000888152600f8701602090815260408083203384529091529020805460ff1916600190811790915590965084546301000000900460ff16600481111561141057611410611ad9565b0361146057835464ffff0000001916640302000000178085556040518891600080516020611ded8339815191529161145791600160201b900460ff16906000908190611c08565b60405180910390a25b845460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906114919033908a90600401611b7c565b6020604051808303816000875af11580156114b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d49190611baa565b6114f1576040516312171d8360e31b815260040160405180910390fd5b604051868152339088907f24c3cd6e13a29307bab455491e4cd5b29f6a457854a08f27f319ab4f8fec51389060200160405180910390a35050505050919050565b60008061153d61159b565b905082158061154f5750806006015483115b1561157057604051635bafafd160e01b8152600481018490526024016101c0565b6000928352600801602052506040902090565b600061159483838560030154611785565b9392505050565b7f4602c7a79eac2c186a5049fa18aa513e24b689a1ed3277f24b1e5b426612d10090565b6000806115ca61159b565b905060028454600160201b900460ff1660038111156115eb576115eb611ad9565b0361160e57505081546001600160a01b03828116600160301b9092041614611594565b6000948552601201602090815260408086206001600160a01b03949094168652929052509091205460ff16919050565b600060028254600160201b900460ff16600381111561165f5761165f611ad9565b0361166c57506001610154565b600061167661159b565b60009485526013016020525050604090912054919050565b60008061169b8486611d75565b9050836116a9846001611d97565b036116d5576116b9600185611d4b565b6116c39082611d5e565b6116cd9086611d4b565b915050611594565b949350505050565b60018201546040516307b9c93d60e11b815260009182916001600160a01b0390911690630f73927a90611714908690600401611c53565b600060405180830381865afa158015611731573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117599190810190611c8b565b915091508161177f57828160405163411f12c760e01b81526004016101c0929190611daa565b50505050565b60008061179061159b565b90506000856003015484116117a557836117ab565b85600301545b905085600201548110156117c457600092505050611594565b8554600160281b900460ff161561187d5760028601545b8181116118755760018301546040516344368ae960e11b81526001600160a01b039091169063886d15d2906118169089908590600401611b7c565b602060405180830381865afa158015611833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118579190611bc5565b6118619085611d97565b93508061186d81611b63565b9150506117db565b505050611594565b60028601545b81811161197d5760005b600f88015481101561196a576001840154600f890180546001600160a01b0390921691639352d272918a91869190869081106118cb576118cb611c3d565b6000918252602090912001546040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401602060405180830381865afa158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c9190611bc5565b6119569086611d97565b94508061196281611b63565b91505061188d565b508061197581611b63565b915050611883565b5050509392505050565b6009820154158061199b5750816008015481115b156119af5760088201556001600990910155565b816008015481036119d2576009820180549060006119cc83611b63565b91905055505b5050565b6000806119e161159b565b90506000845460ff1660018111156119fb576119fb611ad9565b03611a53576003600086815260098301602090815260408083206001600160a01b038816845290915290205460ff166003811115611a3b57611a3b611ad9565b14611a475760006116cd565b50506001820154611594565b83546001600160a01b03848116600160301b9092041614611a75576000611a7b565b83600701545b95945050505050565b60008060408385031215611a9757600080fd5b8235915060208301356001600160a01b0381168114611ab557600080fd5b809150509250929050565b600060208284031215611ad257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160058310611b0657611b06611ad9565b8260208301529392505050565b600060208284031215611b2557600080fd5b815160ff8116811461159457600080fd5b9182526001600160a01b0316602082015260400190565b634e487b7160e01b600052601160045260246000fd5b600060018201611b7557611b75611b4d565b5060010190565b6001600160a01b03929092168252602082015260400190565b80518015158114611ba557600080fd5b919050565b600060208284031215611bbc57600080fd5b61159482611b95565b600060208284031215611bd757600080fd5b5051919050565b9283526020830191909152604082015260600190565b60048110611c0457611c04611ad9565b9052565b60608101611c168286611bf4565b602082019390935260400152919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0391909116815260200190565b60005b83811015611c82578181015183820152602001611c6a565b50506000910152565b60008060408385031215611c9e57600080fd5b611ca783611b95565b60208401519092506001600160401b0380821115611cc457600080fd5b818501915085601f830112611cd857600080fd5b815181811115611cea57611cea611c27565b604051601f8201601f19908116603f01168101908382118183101715611d1257611d12611c27565b81604052828152886020848701011115611d2b57600080fd5b611d3c836020830160208801611c67565b80955050505050509250929050565b8181038181111561015457610154611b4d565b808202811582820484141761015457610154611b4d565b600082611d9257634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561015457610154611b4d565b60018060a01b03831681526040602082015260008251806040840152611dd7816060850160208701611c67565b601f01601f191691909101606001939250505056fefe3d640dfe4a822948e2e15da6bbca1b630a18d21e825edeb5816d60f4e5703ba26469706673582212201dc276dad8d0af16cbcd83b7025a72bd02bac41e5beb00954e0b3f31252111eb64736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x14CF9077 EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x87D6E213 EQ PUSH2 0x96 JUMPI DUP1 PUSH4 0xA0427700 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xA7817BBC EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xB58BD356 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0xCB3E0D2B EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH2 0x7F CALLDATASIZE PUSH1 0x4 PUSH2 0x1A84 JUMP JUMPDEST PUSH2 0x138 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0x15A JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0x44C JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0x903 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0xE50 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC0 JUMP JUMPDEST PUSH2 0x10E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x144 DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH2 0x150 DUP2 DUP5 PUSH2 0x1583 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x165 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x172 DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x192 JUMPI PUSH2 0x192 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x1C9 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E8 JUMPI PUSH2 0x1E8 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x23D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x261 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST POP JUMPDEST PUSH1 0x2 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x282 JUMPI PUSH2 0x282 PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x2B0 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xE DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2F1 JUMPI DUP4 CALLER PUSH1 0x40 MLOAD PUSH4 0x2A48515 PUSH1 0xE6 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH2 0x2FC DUP5 DUP3 CALLER PUSH2 0x15BF JUMP JUMPDEST PUSH2 0x31D JUMPI DUP4 CALLER PUSH1 0x40 MLOAD PUSH4 0xB361B5FB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x329 DUP6 DUP4 PUSH2 0x163E JUMP JUMPDEST SWAP1 POP PUSH2 0x33E DUP3 PUSH1 0x7 ADD SLOAD DUP3 DUP5 PUSH1 0xA ADD SLOAD PUSH2 0x168E JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0xE DUP6 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0xA DUP5 ADD DUP1 SLOAD SWAP3 SWAP7 POP SWAP1 PUSH2 0x377 DUP4 PUSH2 0x1B63 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP3 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x3AD SWAP1 CALLER SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3F0 SWAP2 SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH2 0x40D JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 DUP2 MSTORE CALLER SWAP1 DUP7 SWAP1 PUSH32 0x88F0C55826D9EF2F514F933A99EDB543A1514EE7211D8BFA04E66E29954FE6B4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x457 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x464 DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x484 JUMPI PUSH2 0x484 PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x4A5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7C412DF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH2 0x4C4 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x53F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x53D SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x55E JUMPI PUSH2 0x55E PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x58C JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5FC SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x2 ADD SLOAD DUP2 LT ISZERO PUSH2 0x633 JUMPI DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP8 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST DUP2 PUSH1 0x3 ADD SLOAD DUP2 GT ISZERO PUSH2 0x661 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7B05AB9B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP8 SWAP2 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x9 DUP6 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x693 JUMPI PUSH2 0x693 PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x6B5 JUMPI DUP5 CALLER PUSH1 0x40 MLOAD PUSH4 0xC1000133 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x11 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x6F6 JUMPI DUP5 CALLER PUSH1 0x40 MLOAD PUSH4 0x2A48515 PUSH1 0xE6 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0xE DUP4 ADD SLOAD LT PUSH2 0x721 JUMPI PUSH1 0x40 MLOAD PUSH4 0x387C43A9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH2 0x72B DUP4 CALLER PUSH2 0x16DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x738 DUP4 CALLER DUP5 PUSH2 0x1785 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x4 ADD SLOAD DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x4 DUP4 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x431170F5 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP3 ADD DUP9 SWAP1 MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x6 DUP4 ADD SLOAD PUSH1 0xE DUP5 ADD DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP11 DUP5 MSTORE PUSH1 0x11 DUP10 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 DUP7 MSTORE SWAP1 SWAP4 MSTORE SWAP3 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE DUP7 SLOAD SWAP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x7FD SWAP2 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x840 SWAP2 SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH2 0x85D JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xE DUP4 ADD SLOAD PUSH1 0x40 MLOAD CALLER SWAP2 DUP9 SWAP2 PUSH32 0x4DCAC657463253F9668A0D5C9A2F7C00A7D7AC72A1AFE05E65034691FDD911C3 SWAP2 PUSH2 0x898 SWAP2 DUP11 SWAP2 DUP8 SWAP2 PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0xE DUP5 ADD SLOAD SUB PUSH2 0x8FA JUMPI DUP3 SLOAD PUSH5 0xFFFF000000 NOT AND PUSH5 0x302000000 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD DUP8 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DED DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 PUSH2 0x8F1 SWAP2 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90D PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x91A DUP4 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x93A JUMPI PUSH2 0x93A PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x95B JUMPI PUSH1 0x40 MLOAD PUSH4 0x180EBB8F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9CB SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x3 ADD SLOAD DUP2 GT PUSH2 0x9FA JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x57684CA5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xA4D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA71 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xA85 JUMPI PUSH2 0xA85 PUSH2 0x1AD9 JUMP JUMPDEST SWAP1 POP PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xA9B JUMPI PUSH2 0xA9B PUSH2 0x1AD9 JUMP JUMPDEST EQ DUP1 PUSH2 0xAB8 JUMPI POP PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xAB6 JUMPI PUSH2 0xAB6 PUSH2 0x1AD9 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0xADA JUMPI DUP5 DUP2 PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xAEE JUMPI PUSH2 0xAEE PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0xB0F JUMPI PUSH1 0x40 MLOAD PUSH4 0x3C6FA5D7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0xB DUP4 ADD SLOAD PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xB2E JUMPI PUSH2 0xB2E PUSH2 0x1C27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB57 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xB74 JUMPI PUSH2 0xB74 PUSH2 0x1C27 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB9D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCC8 JUMPI PUSH1 0x0 DUP8 PUSH1 0xB ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xBC2 JUMPI PUSH2 0xBC2 PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x1 DUP12 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7B9C93D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP5 POP SWAP2 AND SWAP1 PUSH4 0xF73927A SWAP1 PUSH2 0xC03 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C53 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC48 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C8B JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0xC57 JUMPI POP POP PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC6B JUMPI PUSH2 0xC6B PUSH2 0x1C3D JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x0 PUSH2 0xC87 DUP11 DUP5 PUSH2 0x1583 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xC9C JUMPI PUSH2 0xC9C PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xCB2 DUP11 DUP3 PUSH2 0x1987 JUMP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH2 0xCC0 DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xBA3 JUMP JUMPDEST POP PUSH1 0x9 DUP7 ADD SLOAD ISZERO PUSH2 0xDBA JUMPI PUSH1 0x8 DUP7 ADD SLOAD PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xDA6 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xCF6 JUMPI PUSH2 0xCF6 PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP1 ISZERO PUSH2 0xD22 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD18 JUMPI PUSH2 0xD18 PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ JUMPDEST ISZERO PUSH2 0xD94 JUMPI PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x12 DUP12 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0xB DUP12 ADD DUP1 SLOAD PUSH1 0x1 SWAP4 SWAP2 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0xD52 JUMPI PUSH2 0xD52 PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP2 PUSH2 0xD90 DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xD9E DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCDC JUMP JUMPDEST POP PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x13 DUP11 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP JUMPDEST PUSH1 0x9 DUP7 ADD SLOAD ISZERO PUSH2 0xDCB JUMPI PUSH1 0x1 PUSH2 0xDCE JUMP JUMPDEST PUSH1 0x2 JUMPDEST DUP7 SLOAD DUP8 SWAP1 PUSH1 0xFF PUSH1 0x20 SHL NOT AND PUSH1 0x1 PUSH1 0x20 SHL DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xDF0 JUMPI PUSH2 0xDF0 PUSH2 0x1AD9 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP DUP6 SLOAD PUSH4 0xFF000000 NOT AND PUSH4 0x2000000 OR DUP1 DUP8 SSTORE PUSH1 0x8 DUP8 ADD SLOAD PUSH1 0x9 DUP9 ADD SLOAD PUSH1 0x40 MLOAD DUP12 SWAP4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DED DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP4 PUSH2 0xE3E SWAP4 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP3 DIV PUSH1 0xFF AND SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE5B PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE68 DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xE89 JUMPI PUSH2 0xE89 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0xF04 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xEDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF02 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST POP JUMPDEST PUSH1 0x3 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xF23 JUMPI PUSH2 0xF23 PUSH2 0x1AD9 JUMP JUMPDEST EQ ISZERO DUP1 ISZERO PUSH2 0xF4E JUMPI POP PUSH1 0x4 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xF4B JUMPI PUSH2 0xF4B PUSH2 0x1AD9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xF7C JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xF DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFBD JUMPI DUP4 CALLER PUSH1 0x40 MLOAD PUSH4 0x6101359D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH2 0xFC8 DUP5 DUP3 CALLER PUSH2 0x19D6 JUMP JUMPDEST SWAP3 POP DUP3 PUSH1 0x0 SUB PUSH2 0xFEF JUMPI DUP4 CALLER PUSH1 0x40 MLOAD PUSH4 0x2DECD07B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xF DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP4 SLOAD SWAP2 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x1046 SWAP2 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1065 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1089 SWAP2 SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH2 0x10A6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE CALLER SWAP1 DUP6 SWAP1 PUSH32 0xFB13634C7C32BBFBC28F461CA4B0C850887C9CFBDE7D6C97F24BFCFF25C7BE36 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10EF PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x10FC DUP5 PUSH2 0x1532 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x111C JUMPI PUSH2 0x111C PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x113D JUMPI PUSH1 0x40 MLOAD PUSH4 0x7C412DF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1170 JUMPI CALLER PUSH1 0x40 MLOAD PUSH4 0x9EDD0F7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP2 SWAP1 PUSH2 0x1C53 JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x118F JUMPI PUSH2 0x118F PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x120A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CC3C161 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xB30F0584 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x11E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1208 SWAP2 SWAP1 PUSH2 0x1B13 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1229 JUMPI PUSH2 0x1229 PUSH2 0x1AD9 JUMP JUMPDEST EQ ISZERO DUP1 ISZERO PUSH2 0x1254 JUMPI POP PUSH1 0x2 DUP2 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1251 JUMPI PUSH2 0x1251 PUSH2 0x1AD9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1282 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x66FC8781 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP7 SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x1AEF JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12F2 SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x3 ADD SLOAD DUP2 GT PUSH2 0x1321 JUMPI PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x57684CA5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x1C0 SWAP2 DUP8 SWAP2 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1BDE JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0xF DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1362 JUMPI DUP5 CALLER PUSH1 0x40 MLOAD PUSH4 0x6101359D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0xE DUP3 ADD SLOAD PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x0 SWAP2 PUSH2 0x1378 SWAP2 PUSH2 0x1D4B JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 SUB PUSH2 0x139F JUMPI DUP6 CALLER PUSH1 0x40 MLOAD PUSH4 0x2DECD07B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1B36 JUMP JUMPDEST PUSH1 0xE DUP4 ADD SLOAD PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x0 SWAP2 PUSH2 0x13B5 SWAP2 PUSH2 0x1D5E JUMP JUMPDEST SWAP1 POP DUP1 DUP5 PUSH1 0x7 ADD SLOAD PUSH2 0x13C7 SWAP2 SWAP1 PUSH2 0x1D4B JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0xF DUP8 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 SWAP7 POP DUP5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1410 JUMPI PUSH2 0x1410 PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x1460 JUMPI DUP4 SLOAD PUSH5 0xFFFF000000 NOT AND PUSH5 0x302000000 OR DUP1 DUP6 SSTORE PUSH1 0x40 MLOAD DUP9 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1DED DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 PUSH2 0x1457 SWAP2 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST DUP5 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x1491 SWAP1 CALLER SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14D4 SWAP2 SWAP1 PUSH2 0x1BAA JUMP JUMPDEST PUSH2 0x14F1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x12171D83 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP7 DUP2 MSTORE CALLER SWAP1 DUP9 SWAP1 PUSH32 0x24C3CD6E13A29307BAB455491E4CD5B29F6A457854A08F27F319AB4F8FEC5138 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x153D PUSH2 0x159B JUMP JUMPDEST SWAP1 POP DUP3 ISZERO DUP1 PUSH2 0x154F JUMPI POP DUP1 PUSH1 0x6 ADD SLOAD DUP4 GT JUMPDEST ISZERO PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5BAFAFD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x8 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1594 DUP4 DUP4 DUP6 PUSH1 0x3 ADD SLOAD PUSH2 0x1785 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4602C7A79EAC2C186A5049FA18AA513E24B689A1ED3277F24B1E5B426612D100 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x15CA PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x2 DUP5 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15EB JUMPI PUSH2 0x15EB PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x160E JUMPI POP POP DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP3 DIV AND EQ PUSH2 0x1594 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x12 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP7 MSTORE SWAP3 SWAP1 MSTORE POP SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x165F JUMPI PUSH2 0x165F PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x166C JUMPI POP PUSH1 0x1 PUSH2 0x154 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1676 PUSH2 0x159B JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x13 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x169B DUP5 DUP7 PUSH2 0x1D75 JUMP JUMPDEST SWAP1 POP DUP4 PUSH2 0x16A9 DUP5 PUSH1 0x1 PUSH2 0x1D97 JUMP JUMPDEST SUB PUSH2 0x16D5 JUMPI PUSH2 0x16B9 PUSH1 0x1 DUP6 PUSH2 0x1D4B JUMP JUMPDEST PUSH2 0x16C3 SWAP1 DUP3 PUSH2 0x1D5E JUMP JUMPDEST PUSH2 0x16CD SWAP1 DUP7 PUSH2 0x1D4B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1594 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7B9C93D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xF73927A SWAP1 PUSH2 0x1714 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C53 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1731 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1759 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C8B JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x177F JUMPI DUP3 DUP2 PUSH1 0x40 MLOAD PUSH4 0x411F12C7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0 SWAP3 SWAP2 SWAP1 PUSH2 0x1DAA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1790 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x3 ADD SLOAD DUP5 GT PUSH2 0x17A5 JUMPI DUP4 PUSH2 0x17AB JUMP JUMPDEST DUP6 PUSH1 0x3 ADD SLOAD JUMPDEST SWAP1 POP DUP6 PUSH1 0x2 ADD SLOAD DUP2 LT ISZERO PUSH2 0x17C4 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1594 JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x28 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x187D JUMPI PUSH1 0x2 DUP7 ADD SLOAD JUMPDEST DUP2 DUP2 GT PUSH2 0x1875 JUMPI PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x44368AE9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x886D15D2 SWAP1 PUSH2 0x1816 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1833 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1857 SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST PUSH2 0x1861 SWAP1 DUP6 PUSH2 0x1D97 JUMP JUMPDEST SWAP4 POP DUP1 PUSH2 0x186D DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x17DB JUMP JUMPDEST POP POP POP PUSH2 0x1594 JUMP JUMPDEST PUSH1 0x2 DUP7 ADD SLOAD JUMPDEST DUP2 DUP2 GT PUSH2 0x197D JUMPI PUSH1 0x0 JUMPDEST PUSH1 0xF DUP9 ADD SLOAD DUP2 LT ISZERO PUSH2 0x196A JUMPI PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0xF DUP10 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x9352D272 SWAP2 DUP11 SWAP2 DUP7 SWAP2 SWAP1 DUP7 SWAP1 DUP2 LT PUSH2 0x18CB JUMPI PUSH2 0x18CB PUSH2 0x1C3D JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1928 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x194C SWAP2 SWAP1 PUSH2 0x1BC5 JUMP JUMPDEST PUSH2 0x1956 SWAP1 DUP7 PUSH2 0x1D97 JUMP JUMPDEST SWAP5 POP DUP1 PUSH2 0x1962 DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x188D JUMP JUMPDEST POP DUP1 PUSH2 0x1975 DUP2 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1883 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x9 DUP3 ADD SLOAD ISZERO DUP1 PUSH2 0x199B JUMPI POP DUP2 PUSH1 0x8 ADD SLOAD DUP2 GT JUMPDEST ISZERO PUSH2 0x19AF JUMPI PUSH1 0x8 DUP3 ADD SSTORE PUSH1 0x1 PUSH1 0x9 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST DUP2 PUSH1 0x8 ADD SLOAD DUP2 SUB PUSH2 0x19D2 JUMPI PUSH1 0x9 DUP3 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x19CC DUP4 PUSH2 0x1B63 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19E1 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SLOAD PUSH1 0xFF AND PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x19FB JUMPI PUSH2 0x19FB PUSH2 0x1AD9 JUMP JUMPDEST SUB PUSH2 0x1A53 JUMPI PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x9 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1A3B JUMPI PUSH2 0x1A3B PUSH2 0x1AD9 JUMP JUMPDEST EQ PUSH2 0x1A47 JUMPI PUSH1 0x0 PUSH2 0x16CD JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH2 0x1594 JUMP JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP3 DIV AND EQ PUSH2 0x1A75 JUMPI PUSH1 0x0 PUSH2 0x1A7B JUMP JUMPDEST DUP4 PUSH1 0x7 ADD SLOAD JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1AB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 DUP2 ADD PUSH1 0x5 DUP4 LT PUSH2 0x1B06 JUMPI PUSH2 0x1B06 PUSH2 0x1AD9 JUMP JUMPDEST DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1B75 JUMPI PUSH2 0x1B75 PUSH2 0x1B4D JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1BA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1594 DUP3 PUSH2 0x1B95 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x1C04 JUMPI PUSH2 0x1C04 PUSH2 0x1AD9 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x1C16 DUP3 DUP7 PUSH2 0x1BF4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C82 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1C6A JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CA7 DUP4 PUSH2 0x1B95 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x1CC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1CD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1CEA JUMPI PUSH2 0x1CEA PUSH2 0x1C27 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1D12 JUMPI PUSH2 0x1D12 PUSH2 0x1C27 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1D2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D3C DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x1C67 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x154 JUMPI PUSH2 0x154 PUSH2 0x1B4D JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x154 JUMPI PUSH2 0x154 PUSH2 0x1B4D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1D92 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x154 JUMPI PUSH2 0x154 PUSH2 0x1B4D JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x1DD7 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1C67 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID INVALID RETURNDATASIZE PUSH5 0xDFE4A8229 BASEFEE 0xE2 0xE1 0x5D 0xA6 0xBB 0xCA SHL PUSH4 0xA18D21E DUP3 0x5E 0xDE 0xB5 DUP2 PUSH14 0x60F4E5703BA26469706673582212 KECCAK256 SAR 0xC2 PUSH23 0xDAD8D0AF16CBCD83B7025A72BD02BAC41E5BEB00954E0B EXTCODEHASH BALANCE 0x25 0x21 GT 0xEB PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"919:18716:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14461:244;;;;;;:::i;:::-;;:::i;:::-;;;527:25:46;;;515:2;500:18;14461:244:24;;;;;;;5805:1784;;;;;;;;;;-1:-1:-1;5805:1784:24;;;;;:::i;:::-;;:::i;8015:2501::-;;;;;;;;;;-1:-1:-1;8015:2501:24;;;;;:::i;:::-;;:::i;2276:3342::-;;;;;;;;;;-1:-1:-1;2276:3342:24;;;;;:::i;:::-;;:::i;:::-;;13157:1078;;;;;;;;;;-1:-1:-1;13157:1078:24;;;;;:::i;:::-;;:::i;10890:2081::-;;;;;;;;;;-1:-1:-1;10890:2081:24;;;;;:::i;:::-;;:::i;14461:244::-;14555:7;14570:42;14615:26;14629:11;14615:13;:26::i;:::-;14570:71;;14654:46;14677:9;14688:11;14654:22;:46::i;:::-;14647:53;;;14461:244;;;;;:::o;5805:1784::-;5872:14;5894:49;5946:44;:42;:44::i;:::-;5894:96;;5996:42;6041:26;6055:11;6041:13;:26::i;:::-;5996:71;-1:-1:-1;6147:37:24;6120:23;;;;;;;:64;;;;;;;;:::i;:::-;;6116:157;;6249:16;;6201:65;;-1:-1:-1;;;6201:65:24;;;;6236:11;;6249:16;;;;;;;6201:65;;;:::i;:::-;;;;;;;;6116:157;6303:38;6283:16;;;;;;;:58;;;;;;;;:::i;:::-;;6279:124;;6351:45;;-1:-1:-1;;;6351:45:24;;;;;527:25:46;;;6351:18:24;;:32;;500:18:46;;6351:45:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6279:124;6433:40;6413:16;;;;;;;:60;;;;;;;;:::i;:::-;;6409:153;;6538:16;;6490:65;;-1:-1:-1;;;6490:65:24;;;;6525:11;;6538:16;;;;;;;6490:65;;;:::i;6409:153::-;6572:25;;;;:12;;;:25;;;;;;;;6598:10;6572:37;;;;;;;;;;6568:101;;;6645:11;6658:10;6618:51;;-1:-1:-1;;;6618:51:24;;;;;;;;;:::i;6568:101::-;7051:56;7072:11;7085:9;7096:10;7051:20;:56::i;:::-;7046:136;;7151:11;7164:10;7124:51;;-1:-1:-1;;;7124:51:24;;;;;;;;;:::i;7046:136::-;7188:22;7213:45;7235:11;7248:9;7213:21;:45::i;:::-;7188:70;;7273:77;7287:9;:20;;;7309:14;7325:9;:24;;;7273:13;:77::i;:::-;7357:25;;;;:12;;;:25;;;;;;;;7383:10;7357:37;;;;;;;:44;;-1:-1:-1;;7357:44:24;7397:4;7357:44;;;7407:24;;;:26;;7264:86;;-1:-1:-1;7407:24:24;:26;;;:::i;:::-;;;;-1:-1:-1;;7445:6:24;;:35;;-1:-1:-1;;;7445:35:24;;-1:-1:-1;;;;;7445:6:24;;;;:15;;:35;;7461:10;;7473:6;;7445:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7440:77;;7489:28;;-1:-1:-1;;;7489:28:24;;;;;;;;;;;7440:77;7529:55;;527:25:46;;;7565:10:24;;7552:11;;7529:55;;515:2:46;500:18;7529:55:24;;;;;;;5888:1701;;;5805:1784;;;:::o;8015:2501::-;8080:14;8102:49;8154:44;:42;:44::i;:::-;8102:96;;8204:42;8249:26;8263:11;8249:13;:26::i;:::-;8204:71;-1:-1:-1;8313:37:24;8286:23;;;;;;;:64;;;;;;;;:::i;:::-;;8282:138;;8367:46;;-1:-1:-1;;;8367:46:24;;;;;527:25:46;;;500:18;;8367:46:24;373:185:46;8282:138:24;8450:38;8430:16;;;;;;;:58;;;;;;;;:::i;:::-;;8426:124;;8498:45;;-1:-1:-1;;;8498:45:24;;;;;527:25:46;;;8498:18:24;;:32;;500:18:46;;8498:45:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8426:124;8580:37;8560:16;;;;;;;:57;;;;;;;;:::i;:::-;;8556:150;;8682:16;;8634:65;;-1:-1:-1;;;8634:65:24;;;;8669:11;;8682:16;;;;;;;8634:65;;;:::i;8556:150::-;8735:19;;;;:36;;;-1:-1:-1;;;8735:36:24;;;;8712:20;;-1:-1:-1;;;;;8735:19:24;;:34;;:36;;;;;;;;;;;;;;:19;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8712:59;;8796:9;:20;;;8781:12;:35;8777:128;;;8881:16;;8833:65;;-1:-1:-1;;;8833:65:24;;;;8868:11;;8881:16;;;;;;;8833:65;;;:::i;8777:128::-;8929:9;:18;;;8914:12;:33;8910:134;;;9004:18;;;;8964:73;;-1:-1:-1;;;8964:73:24;;;;8991:11;;9024:12;;8964:73;;;:::i;8910:134::-;9102:39;9054:32;;;;:19;;;:32;;;;;;;;9087:10;9054:44;;;;;;;;;;:87;;;;;;;;:::i;:::-;;9050:168;;9187:11;9200:10;9158:53;;-1:-1:-1;;;9158:53:24;;;;;;;;;:::i;9050:168::-;9228:31;;;;:18;;;:31;;;;;;;;9260:10;9228:43;;;;;;;;;;9224:107;;;9307:11;9320:10;9280:51;;-1:-1:-1;;;9280:51:24;;;;;;;;;:::i;9224:107::-;9370:20;;;;9342:17;;;:24;:48;9338:123;;9407:47;;-1:-1:-1;;;9407:47:24;;;;;527:25:46;;;500:18;;9407:47:24;373:185:46;9338:123:24;9539:29;9554:1;9557:10;9539:14;:29::i;:::-;9575:15;9593:63;9620:9;9631:10;9643:12;9593:26;:63::i;:::-;9575:81;;9676:9;:19;;;9666:7;:29;9662:146;;;9781:19;;;;;9712:89;;-1:-1:-1;;;9712:89:24;;;;;3618:25:46;;;9760:10:24;3659:18:46;;;3652:60;3728:18;;;3721:34;;;3771:18;;;3764:34;3590:19;;9712:89:24;3387:417:46;9662:146:24;9823:24;;;;9853:17;;;:34;;;;;;;;-1:-1:-1;9853:34:24;;;;;;;;;;;;-1:-1:-1;;;;;;9853:34:24;9876:10;9853:34;;;;;;9893:31;;;:18;;;:31;;;;;;:43;;;;;;;;;;:50;;-1:-1:-1;;9893:50:24;;;;;;9955:6;;:35;;-1:-1:-1;;;9955:35:24;;9823:24;;-1:-1:-1;;;;;;9955:6:24;;:15;;:35;;9823:24;;9955:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9950:77;;9999:28;;-1:-1:-1;;;9999:28:24;;;;;;;;;;;9950:77;10102:17;;;:24;10039:88;;10073:10;;10060:11;;10039:88;;;;10085:6;;10093:7;;10039:88;:::i;:::-;;;;;;;;10258:20;;;;10230:17;;;:24;:48;10226:286;;10288:59;;-1:-1:-1;;10355:74:24;;;;;;10442:63;;10461:11;;-1:-1:-1;;;;;;;;;;;10442:63:24;;;-1:-1:-1;;;10474:24:24;;;;;-1:-1:-1;;;;10442:63:24;:::i;:::-;;;;;;;;10226:286;8096:2420;;;;8015:2501;;;:::o;2276:3342::-;2337:49;2389:44;:42;:44::i;:::-;2337:96;;2439:42;2484:26;2498:11;2484:13;:26::i;:::-;2439:71;-1:-1:-1;2629:37:24;2602:23;;;;;;;:64;;;;;;;;:::i;:::-;;2598:139;;2683:47;;-1:-1:-1;;;2683:47:24;;;;;527:25:46;;;500:18;;2683:47:24;373:185:46;2598:139:24;2766:19;;;;:36;;;-1:-1:-1;;;2766:36:24;;;;2743:20;;-1:-1:-1;;;;;2766:19:24;;:34;;:36;;;;;;;;;;;;;;:19;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2743:59;;2828:9;:18;;;2812:12;:34;2808:138;;2906:18;;;;2863:76;;-1:-1:-1;;;2863:76:24;;;;2893:11;;2926:12;;2863:76;;;:::i;2808:138::-;3121:45;;-1:-1:-1;;;3121:45:24;;;;;527:25:46;;;3050:37:24;;3121:18;;:32;;500:18:46;;3121:45:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3090:77;;;;;;;;;;:::i;:::-;3050:117;-1:-1:-1;3187:38:24;3177:6;:48;;;;;;;;:::i;:::-;;:102;;;-1:-1:-1;3239:40:24;3229:6;:50;;;;;;;;:::i;:::-;;3177:102;3173:185;;;3331:11;3344:6;3296:55;;-1:-1:-1;;;3296:55:24;;;;;;;;;:::i;3173:185::-;3377:40;3367:6;:50;;;;;;;;:::i;:::-;;3363:128;;3434:50;;-1:-1:-1;;;3434:50:24;;;;;527:25:46;;;500:18;;3434:50:24;373:185:46;3363:128:24;3792:22;;;:29;3766:23;3792:29;-1:-1:-1;;;;;3860:30:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3860:30:24;;3827:63;;3896:27;3937:15;-1:-1:-1;;;;;3926:27:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3926:27:24;;3896:57;;3964:9;3959:384;3979:15;3975:1;:19;3959:384;;;4009:19;4031:9;:22;;4054:1;4031:25;;;;;;;;:::i;:::-;;;;;;;;;;;4084:18;;;:40;;-1:-1:-1;;;4084:40:24;;-1:-1:-1;;;;;4031:25:24;;;;-1:-1:-1;4084:18:24;;;:27;;:40;;4031:25;;4084:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4084:40:24;;;;;;;;;;;;:::i;:::-;4064:60;;;4137:8;4132:23;;4147:8;;;;4132:23;4182:4;4163:13;4177:1;4163:16;;;;;;;;:::i;:::-;:23;;;:16;;;;;;;;;;;:23;4194:15;4212:46;4235:9;4246:11;4212:22;:46::i;:::-;4194:64;;4285:7;4266:13;4280:1;4266:16;;;;;;;;:::i;:::-;;;;;;:26;;;;;4300:36;4317:9;4328:7;4300:16;:36::i;:::-;4001:342;;;3959:384;3996:3;;;;:::i;:::-;;;;3959:384;;;-1:-1:-1;4876:19:24;;;;:23;4872:407;;4929:19;;;;4909:17;;4985:230;5005:15;5001:1;:19;4985:230;;;5041:13;5055:1;5041:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;5081:9;5061:13;5075:1;5061:16;;;;;;;;:::i;:::-;;;;;;;:29;5041:49;5037:170;;;5104:31;;;;:18;;;:31;;;;;5136:22;;;:25;;5165:4;;5104:31;5136:22;5159:1;;5136:25;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;5136:25:24;5104:58;;;;;;;;;;;;:65;;-1:-1:-1;;5104:65:24;;;;;;;;;;5181:15;;;;:::i;:::-;;;;5037:170;5022:3;;;;:::i;:::-;;;;4985:230;;;-1:-1:-1;5222:34:24;;;;:21;;;:34;;;;;:50;-1:-1:-1;4872:407:24;5312:19;;;;:24;:125;;5397:40;5312:125;;;5345:43;5312:125;5285:152;;:9;;-1:-1:-1;;;;5285:152:24;-1:-1:-1;;;5285:152:24;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;5443:59:24;;-1:-1:-1;;5443:59:24;;;;;;5572:19;;;;5593;;;;5514:99;;5533:11;;-1:-1:-1;;;;;;;;;;;5514:99:24;;;-1:-1:-1;;;5546:24:24;;;;;;5572:19;;5593;5514:99;:::i;:::-;;;;;;;;2331:3287;;;;;;;2276:3342;:::o;13157:1078::-;13224:14;13246:49;13298:44;:42;:44::i;:::-;13246:96;;13348:42;13393:26;13407:11;13393:13;:26::i;:::-;13348:71;-1:-1:-1;13450:38:24;13430:16;;;;;;;:58;;;;;;;;:::i;:::-;;13426:124;;13498:45;;-1:-1:-1;;;13498:45:24;;;;;527:25:46;;;13498:18:24;;:32;;500:18:46;;13498:45:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13426:124;13580:40;13560:16;;;;;;;:60;;;;;;;;:::i;:::-;;;:122;;;;-1:-1:-1;13644:38:24;13624:16;;;;;;;:58;;;;;;;;:::i;:::-;;;13560:122;13556:215;;;13747:16;;13699:65;;-1:-1:-1;;;13699:65:24;;;;13734:11;;13747:16;;;;;;;13699:65;;;:::i;13556:215::-;13781:26;;;;:13;;;:26;;;;;;;;13808:10;13781:38;;;;;;;;;;13777:103;;;13856:11;13869:10;13828:52;;-1:-1:-1;;;13828:52:24;;;;;;;;;:::i;13777:103::-;13896:49;13910:11;13923:9;13934:10;13896:13;:49::i;:::-;13887:58;;13955:6;13965:1;13955:11;13951:76;;14003:11;14016:10;13975:52;;-1:-1:-1;;;13975:52:24;;;;;;;;;:::i;13951:76::-;14034:26;;;;:13;;;:26;;;;;;;;14061:10;14034:38;;;;;;;;;:45;;-1:-1:-1;;14034:45:24;14075:4;14034:45;;;14091:6;;:35;;-1:-1:-1;;;14091:35:24;;-1:-1:-1;;;;;14091:6:24;;;;;:15;;:35;;14119:6;;14091:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14086:77;;14135:28;;-1:-1:-1;;;14135:28:24;;;;;;;;;;;14086:77;14175:55;;527:25:46;;;14211:10:24;;14198:11;;14175:55;;515:2:46;500:18;14175:55:24;;;;;;;13240:995;;13157:1078;;;:::o;10890:2081::-;10963:14;10985:49;11037:44;:42;:44::i;:::-;10985:96;;11087:42;11132:26;11146:11;11132:13;:26::i;:::-;11087:71;-1:-1:-1;11196:37:24;11169:23;;;;;;;:64;;;;;;;;:::i;:::-;;11165:138;;11250:46;;-1:-1:-1;;;11250:46:24;;;;;527:25:46;;;500:18;;11250:46:24;373:185:46;11165:138:24;11326:17;;-1:-1:-1;;;11326:17:24;;-1:-1:-1;;;;;11326:17:24;11312:10;:31;11308:94;;11391:10;11352:50;;-1:-1:-1;;;11352:50:24;;;;;;;;:::i;11308:94::-;11433:38;11413:16;;;;;;;:58;;;;;;;;:::i;:::-;;11409:124;;11481:45;;-1:-1:-1;;;11481:45:24;;;;;527:25:46;;;11481:18:24;;:32;;500:18:46;;11481:45:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11409:124;11570:37;11550:16;;;;;;;:57;;;;;;;;:::i;:::-;;;:127;;;;-1:-1:-1;11637:40:24;11617:16;;;;;;;:60;;;;;;;;:::i;:::-;;;11550:127;11539:232;;;11747:16;;11699:65;;-1:-1:-1;;;11699:65:24;;;;11734:11;;11747:16;;;;;;;11699:65;;;:::i;11539:232::-;11800:19;;;;:36;;;-1:-1:-1;;;11800:36:24;;;;11777:20;;-1:-1:-1;;;;;11800:19:24;;:34;;:36;;;;;;;;;;;;;;:19;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11777:59;;11862:9;:18;;;11846:12;:34;11842:138;;11940:18;;;;11897:76;;-1:-1:-1;;;11897:76:24;;;;11927:11;;11960:12;;11897:76;;;:::i;11842:138::-;11990:26;;;;:13;;;:26;;;;;;;;12017:10;11990:38;;;;;;;;;;11986:103;;;12065:11;12078:10;12037:52;;-1:-1:-1;;;12037:52:24;;;;;;;;;:::i;11986:103::-;12226:17;;;:24;12203:20;;;;12178:22;;12203:47;;;:::i;:::-;12178:72;;12260:14;12278:1;12260:19;12256:84;;12316:11;12329:10;12288:52;;-1:-1:-1;;;12288:52:24;;;;;;;;;:::i;12256:84::-;12392:17;;;:24;12365;;;;12347:15;;12365:51;;;:::i;:::-;12347:69;;12454:7;12431:9;:20;;;:30;;;;:::i;:::-;12468:26;;;;:13;;;:26;;;;;;;;12495:10;12468:38;;;;;;;:45;;-1:-1:-1;;12468:45:24;12509:4;12468:45;;;;;;12422:39;;-1:-1:-1;12524:16:24;;;;;;;:57;;;;;;;;:::i;:::-;;12520:295;;12591:59;;-1:-1:-1;;12658:74:24;;;;;;12745:63;;12764:11;;-1:-1:-1;;;;;;;;;;;12745:63:24;;;-1:-1:-1;;;12777:24:24;;;;;-1:-1:-1;;;;12745:63:24;:::i;:::-;;;;;;;;12520:295;12826:6;;:35;;-1:-1:-1;;;12826:35:24;;-1:-1:-1;;;;;12826:6:24;;;;:15;;:35;;12842:10;;12854:6;;12826:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12821:77;;12870:28;;-1:-1:-1;;;12870:28:24;;;;;;;;;;;12821:77;12910:56;;527:25:46;;;12947:10:24;;12934:11;;12910:56;;515:2:46;500:18;12910:56:24;;;;;;;10979:1992;;;;;10890:2081;;;:::o;19256:377::-;19322:42;19372:49;19424:44;:42;:44::i;:::-;19372:96;-1:-1:-1;19479:16:24;;;:50;;;19513:1;:16;;;19499:11;:30;19479:50;19475:109;;;19538:46;;-1:-1:-1;;;19538:46:24;;;;;527:25:46;;;500:18;;19538:46:24;373:185:46;19475:109:24;19603:25;;;;:12;;:25;;-1:-1:-1;19603:25:24;;;;19256:377::o;17850:241::-;17981:20;18016:70;18043:9;18054:11;18067:9;:18;;;18016:26;:70::i;:::-;18009:77;17850:241;-1:-1:-1;;;17850:241:24:o;2977:152:25:-;3094:25;;2977:152::o;15523:739:24:-;15673:4;15685:49;15737:44;:42;:44::i;:::-;15685:96;-1:-1:-1;15820:43:24;15792:24;;-1:-1:-1;;;15792:24:24;;;;:71;;;;;;;;:::i;:::-;;15788:127;;-1:-1:-1;;15891:17:24;;-1:-1:-1;;;;;15880:28:24;;;-1:-1:-1;;;15891:17:24;;;;15880:28;15873:35;;15788:127;16217:31;;;;:18;;:31;;;;;;;;-1:-1:-1;;;;;16217:40:24;;;;;;;;;-1:-1:-1;16217:40:24;;;;;;;15523:739;-1:-1:-1;15523:739:24:o;16796:595::-;16926:7;16973:43;16945:24;;-1:-1:-1;;;16945:24:24;;;;:71;;;;;;;;:::i;:::-;;16941:100;;-1:-1:-1;17033:1:24;17026:8;;16941:100;17243:49;17295:44;:42;:44::i;:::-;17352:34;;;;:21;;:34;;-1:-1:-1;;17352:34:24;;;;;;16796:595;-1:-1:-1;16796:595:24:o;17395:451::-;17524:7;;17559:27;17572:14;17559:10;:27;:::i;:::-;17539:47;-1:-1:-1;17734:14:24;17712:18;:14;17729:1;17712:18;:::i;:::-;:36;17708:111;;17792:18;17809:1;17792:14;:18;:::i;:::-;17779:32;;:9;:32;:::i;:::-;17765:47;;:10;:47;:::i;:::-;17758:54;;;;;17708:111;17832:9;17395:451;-1:-1:-1;;;;17395:451:24:o;14914:266::-;15065:18;;;;:36;;-1:-1:-1;;;15065:36:24;;15026:13;;;;-1:-1:-1;;;;;15065:18:24;;;;:27;;:36;;15093:7;;15065:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15065:36:24;;;;;;;;;;;;:::i;:::-;15025:76;;;;15112:8;15107:68;;15159:7;15168:6;15129:46;;-1:-1:-1;;;15129:46:24;;;;;;;;;:::i;15107:68::-;15019:161;;14914:266;;:::o;18327:925::-;18485:20;18513:49;18565:44;:42;:44::i;:::-;18513:96;;18615:17;18647:9;:18;;;18635:9;:30;:63;;18689:9;18635:63;;;18668:9;:18;;;18635:63;18615:83;;18721:9;:20;;;18709:9;:32;18705:46;;;18750:1;18743:8;;;;;;18705:46;18762:17;;-1:-1:-1;;;18762:17:24;;;;18758:230;;;18810:20;;;;18789:166;18841:9;18832:5;:18;18789:166;;18887:18;;;;:59;;-1:-1:-1;;;18887:59:24;;-1:-1:-1;;;;;18887:18:24;;;;:39;;:59;;18927:11;;18940:5;;18887:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18871:75;;;;:::i;:::-;;-1:-1:-1;18852:7:24;;;;:::i;:::-;;;;18789:166;;;;18962:19;;;;18758:230;19015:20;;;;18994:254;19046:9;19037:5;:18;18994:254;;19079:9;19074:168;19094:16;;;:23;19090:27;;19074:168;;;19150:18;;;;19213:16;;;:19;;-1:-1:-1;;;;;19150:18:24;;;;:42;;19193:11;;19206:5;;19213:16;19230:1;;19213:19;;;;;;:::i;:::-;;;;;;;;;;;19150:83;;-1:-1:-1;;;;;;19150:83:24;;;;;;;-1:-1:-1;;;;;7791:32:46;;;19150:83:24;;;7773:51:46;7840:18;;;7833:34;;;;7883:18;;;7876:34;7746:18;;19150:83:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19134:99;;;;:::i;:::-;;-1:-1:-1;19119:3:24;;;;:::i;:::-;;;;19074:168;;;-1:-1:-1;19057:7:24;;;;:::i;:::-;;;;18994:254;;;;18507:745;;18327:925;;;;;:::o;15184:335::-;15289:19;;;;:24;;:57;;;15327:9;:19;;;15317:7;:29;15289:57;15285:152;;;15356:19;;;:29;15415:1;15393:19;;;;:23;15184:335::o;15285:152::-;15458:9;:19;;;15447:7;:30;15443:72;;15487:19;;;:21;;;:19;:21;;;:::i;:::-;;;;;;15443:72;15184:335;;:::o;16266:526::-;16409:7;16424:49;16476:44;:42;:44::i;:::-;16424:96;-1:-1:-1;16549:34:24;16531:14;;;;;:52;;;;;;;:::i;:::-;;16527:192;;16645:39;16600:32;;;;:19;;;:32;;;;;;;;-1:-1:-1;;;;;16600:41:24;;;;;;;;;;;;:84;;;;;;;;:::i;:::-;;:112;;16711:1;16600:112;;;-1:-1:-1;;16687:21:24;;;;16593:119;;16527:192;16743:17;;-1:-1:-1;;;;;16732:28:24;;;-1:-1:-1;;;16743:17:24;;;;16732:28;:55;;16786:1;16732:55;;;16763:9;:20;;;16732:55;16725:62;16266:526;-1:-1:-1;;;;;16266:526:24:o;14:354:46:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;182:23;;;-1:-1:-1;255:2:46;240:18;;227:32;-1:-1:-1;;;;;288:31:46;;278:42;;268:70;;334:1;331;324:12;268:70;357:5;347:15;;;14:354;;;;;:::o;563:180::-;622:6;675:2;663:9;654:7;650:23;646:32;643:52;;;691:1;688;681:12;643:52;-1:-1:-1;714:23:46;;563:180;-1:-1:-1;563:180:46:o;748:127::-;809:10;804:3;800:20;797:1;790:31;840:4;837:1;830:15;864:4;861:1;854:15;880:323;1073:25;;;1061:2;1046:18;;1128:1;1117:13;;1107:47;;1134:18;;:::i;:::-;1190:6;1185:2;1174:9;1170:18;1163:34;880:323;;;;;:::o;1208:273::-;1276:6;1329:2;1317:9;1308:7;1304:23;1300:32;1297:52;;;1345:1;1342;1335:12;1297:52;1377:9;1371:16;1427:4;1420:5;1416:16;1409:5;1406:27;1396:55;;1447:1;1444;1437:12;1486:274;1660:25;;;-1:-1:-1;;;;;1721:32:46;1716:2;1701:18;;1694:60;1648:2;1633:18;;1486:274::o;1765:127::-;1826:10;1821:3;1817:20;1814:1;1807:31;1857:4;1854:1;1847:15;1881:4;1878:1;1871:15;1897:135;1936:3;1957:17;;;1954:43;;1977:18;;:::i;:::-;-1:-1:-1;2024:1:46;2013:13;;1897:135::o;2037:274::-;-1:-1:-1;;;;;2229:32:46;;;;2211:51;;2293:2;2278:18;;2271:34;2199:2;2184:18;;2037:274::o;2316:164::-;2392:13;;2441;;2434:21;2424:32;;2414:60;;2470:1;2467;2460:12;2414:60;2316:164;;;:::o;2485:202::-;2552:6;2605:2;2593:9;2584:7;2580:23;2576:32;2573:52;;;2621:1;2618;2611:12;2573:52;2644:37;2671:9;2644:37;:::i;2874:184::-;2944:6;2997:2;2985:9;2976:7;2972:23;2968:32;2965:52;;;3013:1;3010;3003:12;2965:52;-1:-1:-1;3036:16:46;;2874:184;-1:-1:-1;2874:184:46:o;3063:319::-;3265:25;;;3321:2;3306:18;;3299:34;;;;3364:2;3349:18;;3342:34;3253:2;3238:18;;3063:319::o;3809:145::-;3895:1;3888:5;3885:12;3875:46;;3901:18;;:::i;:::-;3930;;3809:145::o;3959:377::-;4183:2;4168:18;;4195:49;4172:9;4226:6;4195:49;:::i;:::-;4275:2;4260:18;;4253:34;;;;4318:2;4303:18;4296:34;3959:377;;-1:-1:-1;3959:377:46:o;4341:127::-;4402:10;4397:3;4393:20;4390:1;4383:31;4433:4;4430:1;4423:15;4457:4;4454:1;4447:15;4473:127;4534:10;4529:3;4525:20;4522:1;4515:31;4565:4;4562:1;4555:15;4589:4;4586:1;4579:15;4605:203;-1:-1:-1;;;;;4769:32:46;;;;4751:51;;4739:2;4724:18;;4605:203::o;4813:250::-;4898:1;4908:113;4922:6;4919:1;4916:13;4908:113;;;4998:11;;;4992:18;4979:11;;;4972:39;4944:2;4937:10;4908:113;;;-1:-1:-1;;5055:1:46;5037:16;;5030:27;4813:250::o;5068:976::-;5154:6;5162;5215:2;5203:9;5194:7;5190:23;5186:32;5183:52;;;5231:1;5228;5221:12;5183:52;5254:37;5281:9;5254:37;:::i;:::-;5335:2;5320:18;;5314:25;5244:47;;-1:-1:-1;;;;;;5388:14:46;;;5385:34;;;5415:1;5412;5405:12;5385:34;5453:6;5442:9;5438:22;5428:32;;5498:7;5491:4;5487:2;5483:13;5479:27;5469:55;;5520:1;5517;5510:12;5469:55;5549:2;5543:9;5571:2;5567;5564:10;5561:36;;;5577:18;;:::i;:::-;5652:2;5646:9;5620:2;5706:13;;-1:-1:-1;;5702:22:46;;;5726:2;5698:31;5694:40;5682:53;;;5750:18;;;5770:22;;;5747:46;5744:72;;;5796:18;;:::i;:::-;5836:10;5832:2;5825:22;5871:2;5863:6;5856:18;5911:7;5906:2;5901;5897;5893:11;5889:20;5886:33;5883:53;;;5932:1;5929;5922:12;5883:53;5945:68;6010:2;6005;5997:6;5993:15;5988:2;5984;5980:11;5945:68;:::i;:::-;6032:6;6022:16;;;;;;;5068:976;;;;;:::o;6415:128::-;6482:9;;;6503:11;;;6500:37;;;6517:18;;:::i;6548:168::-;6621:9;;;6652;;6669:15;;;6663:22;;6649:37;6639:71;;6690:18;;:::i;6721:217::-;6761:1;6787;6777:132;;6831:10;6826:3;6822:20;6819:1;6812:31;6866:4;6863:1;6856:15;6894:4;6891:1;6884:15;6777:132;-1:-1:-1;6923:9:46;;6721:217::o;6943:125::-;7008:9;;;7029:10;;;7026:36;;;7042:18;;:::i;7073:493::-;7279:1;7275;7270:3;7266:11;7262:19;7254:6;7250:32;7239:9;7232:51;7319:2;7314;7303:9;7299:18;7292:30;7213:4;7351:6;7345:13;7394:6;7389:2;7378:9;7374:18;7367:34;7410:79;7482:6;7477:2;7466:9;7462:18;7457:2;7449:6;7445:15;7410:79;:::i;:::-;7550:2;7529:15;-1:-1:-1;;7525:29:46;7510:45;;;;7557:2;7506:54;;7073:493;-1:-1:-1;;;7073:493:46:o"},"methodIdentifiers":{"claimChallengePayout(uint256)":"87d6e213","claimChallengeRefund(uint256)":"b58bd356","claimCreatorSplitWinRefund(uint256)":"cb3e0d2b","claimSplitWinPrize(uint256)":"a0427700","completeChallenge(uint256)":"a7817bbc","getParticipantActions(uint256,address)":"14cf9077"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AlreadyRefunded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeAlreadyCompleted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentRound\",\"type\":\"uint256\"}],\"name\":\"ChallengeEnded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"enum ChallengeTypes.ChallengeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ChallengeInvalidStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentRound\",\"type\":\"uint256\"}],\"name\":\"ChallengeNotEnded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ChallengesUnauthorizedUser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"NotASplitWinChallenge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"actions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"name\":\"NotEligibleForSplitWin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"NotParticipating\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotVerifiedPerson\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NothingToClaim\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NothingToRefund\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"SplitWinCannotComplete\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"SplitWinSlotsExhausted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.SettlementMode\",\"name\":\"settlementMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bestScore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bestCount\",\"type\":\"uint256\"}],\"name\":\"ChallengeCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ChallengePayoutClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ChallengeRefundClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SplitWinCreatorRefunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prize\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actions\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"winnersClaimed\",\"type\":\"uint256\"}],\"name\":\"SplitWinPrizeClaimed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"getParticipantActions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Two distinct settlement paths: - Max Actions: requires explicit `completeChallenge` after `endRound`, top scorers split the pool. - Split Win: no completion step. Joined participants race to `claimSplitWinPrize` while the challenge is active;   the first `numWinners` to reach `threshold` actions claim a fixed `prizePerWinner`. After `endRound` the creator   can reclaim any unclaimed slots via `claimCreatorSplitWinRefund`.\",\"errors\":{\"NotVerifiedPerson(address,string)\":[{\"params\":{\"account\":\"Address that failed the personhood check.\",\"reason\":\"Reason returned by VeBetterPassport (e.g. \\\"User is blacklisted\\\").\"}}]},\"events\":{\"ChallengeCompleted(uint256,uint8,uint256,uint256)\":{\"details\":\"For Split Win the `bestScore` and `bestCount` fields are 0 and `settlementMode` is `SplitWinCompleted`.\"}},\"kind\":\"dev\",\"methods\":{\"claimChallengePayout(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"amount\":\"Amount transferred to the caller.\"}},\"claimChallengeRefund(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"amount\":\"Amount transferred to the caller.\"}},\"claimCreatorSplitWinRefund(uint256)\":{\"details\":\"Only the creator can call. Pays `(numWinners - winnersClaimed) * prizePerWinner` plus any integer-division remainder retained at creation. Sets status to Completed if not already.\",\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"amount\":\"Amount transferred to the creator.\"}},\"claimSplitWinPrize(uint256)\":{\"details\":\"Reads passport actions live across `[startRound, min(currentRound, endRound)]`. First `numWinners` callers to meet the threshold get one fixed `prizePerWinner` payout each. Once all slots are filled the challenge flips to Completed.\",\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"amount\":\"Amount transferred to the caller.\"}},\"completeChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"getParticipantActions(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"participant\":\"Participant address.\"},\"returns\":{\"_0\":\"Number of counted actions.\"}}},\"title\":\"ChallengeSettlementLogic Library\",\"version\":1},\"userdoc\":{\"errors\":{\"NotVerifiedPerson(address,string)\":[{\"notice\":\"Thrown when an account fails the VeBetterPassport personhood check on a participation or claim path.\"}]},\"events\":{\"ChallengeCompleted(uint256,uint8,uint256,uint256)\":{\"notice\":\"Emitted when a challenge transitions to Completed status.\"},\"ChallengePayoutClaimed(uint256,address,uint256)\":{\"notice\":\"Emitted when an account claims a payout from a completed Max Actions challenge.\"},\"ChallengeRefundClaimed(uint256,address,uint256)\":{\"notice\":\"Emitted when an account claims a refund from a cancelled or invalid challenge.\"},\"SplitWinCreatorRefunded(uint256,address,uint256)\":{\"notice\":\"Emitted when the creator reclaims unclaimed Split Win slots after the end round.\"},\"SplitWinPrizeClaimed(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a participant claims a Split Win slot.\"}},\"kind\":\"user\",\"methods\":{\"claimChallengePayout(uint256)\":{\"notice\":\"Claims the caller's payout from a completed Max Actions challenge.\"},\"claimChallengeRefund(uint256)\":{\"notice\":\"Claims the caller's refund from a cancelled or invalid challenge.\"},\"claimCreatorSplitWinRefund(uint256)\":{\"notice\":\"Reclaims unclaimed Split Win slots after the end round.\"},\"claimSplitWinPrize(uint256)\":{\"notice\":\"Claims a Split Win slot during the active window.\"},\"completeChallenge(uint256)\":{\"notice\":\"Completes a Max Actions challenge after its end round and computes the settlement mode.\"},\"getParticipantActions(uint256,address)\":{\"notice\":\"Returns the actions counted for a participant within the challenge scope.\"}},\"notice\":\"Handles challenge completion (Max Actions), Split Win first-to-claim, refunds, and action aggregation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/challenges/libraries/ChallengeSettlementLogic.sol\":\"ChallengeSettlementLogic\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/challenges/libraries/ChallengeCoreLogic.sol\":{\"keccak256\":\"0xa8b36faba4fad9cb0608d35c25b2cff0cb523e3a74774f32b8b188ab3b09cfad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c51347b202390262e45321f847f9d76290768f1d1509acb13bdaecef13ebda3e\",\"dweb:/ipfs/QmYGfSd4ZmTuyKPJmBCbQZS144WPgefFJX2FovR8Adudb3\"]},\"contracts/challenges/libraries/ChallengeSettlementLogic.sol\":{\"keccak256\":\"0xe77c85f2e223e54c61a378ce551fda366ba32cd0e166e780be87cdf754327bb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01ac906c5798167b10d0e2aeb7260a9d57a8b25d3192cf51a358b4a136f31708\",\"dweb:/ipfs/QmNpn2usZZuMLVpNBSX7wq9wTqjgn7yCttZDbZs6WhVWzW\"]},\"contracts/challenges/libraries/ChallengeStorageTypes.sol\":{\"keccak256\":\"0x1a3adb8916b01bb810f7f3a038defba464839c0fa62c33b66dccedbbfc354f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e5c7eb48cf0b47d9e50e5fae367dd0e55870eed76cea3b0772c5893091875b7\",\"dweb:/ipfs/QmVhXYingpgmkWEumVzwaRBRGUpudBEyHheHmTUsrH1kXg\"]},\"contracts/challenges/libraries/ChallengeTypes.sol\":{\"keccak256\":\"0xe06bbeff932f2d2dfa150a44e4115fabf11eb8bb98b5564c4eb1d8976216f795\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ff27c89e0fb1d73ea0ac59e507d0445c4d56f8d2be7a015289498da55f8a556\",\"dweb:/ipfs/QmaJppVA1LfAQ5gXQ2C8o51MjAnRMQx47vRSCPpe4SvkWK\"]},\"contracts/interfaces/IB3TR.sol\":{\"keccak256\":\"0x84072a0b3340a0972192bd7d9491f00b2676aff7a6c58461b836147a39e31bd2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca091823fbc799175caa96e5fbaf5f449acd78c728e92950845fa347c33d9ea5\",\"dweb:/ipfs/QmYLDKyKjssZPcWjtgRR3Fbmo3JKdWQaKpFj5GUxPWvvc4\"]},\"contracts/interfaces/IChallenges.sol\":{\"keccak256\":\"0xfe61f023db7a7caf543a27d480458e8f08ad8d9852f8e398b63640cd4bbf278a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37b02c8754732a8e16be7d8fcb322bd82ca388815b0d2dce35b380fcbb6b0fe9\",\"dweb:/ipfs/QmbzRdqpLhK13R4SaqxrHCetUzrZCTfSqBvJ9rteSYVRPm\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]},\"contracts/interfaces/IVeBetterPassport.sol\":{\"keccak256\":\"0x1094bcf1a7f61ad26e5d49a6efd7302419a1d2475fa0723f62f24757c7a1655c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a25e330da50daf45f56fe4c496da2ea6695fb4de491c112980deb385f0f3ac\",\"dweb:/ipfs/QmaPE4T6UR91WxnGkqGp85d6YB9UGQceGGtSTCres1Y2Ut\"]},\"contracts/interfaces/IX2EarnApps.sol\":{\"keccak256\":\"0xf476e628b4037c16d44c833c9f0f4db9a3abc48f60ad4654574bce31ca9c759c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8c183bbd394bb708a637dca7626f6beb7a78e5111674e3ccea6f98140580172\",\"dweb:/ipfs/Qmar8Za1an3ZGP6B5wcCZSmY6g6MKzPcGeVYetRhiPFm7e\"]},\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]},\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]},\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]},\"contracts/ve-better-passport/libraries/PassportTypes.sol\":{\"keccak256\":\"0x0250b067d550cd85bd77278c705bd8d28db1bce6829e084cbe65b74353483ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://176022bfb06a2c03efe880a13a97cea66e25e9b31fe164936b5845a57a299be8\",\"dweb:/ipfs/QmS2kQnhxdjkrnNGfFyBdtThpmvyT2B7tF1owW2vF2hmbz\"]},\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":{\"keccak256\":\"0x1830b8438f0b6b516cc22ebbfcc7cff9db478c9a2a44fedf5926e63bd77d5aa7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aad5b08dbb03f727b8b74b10d1d00e796ece111f3aa23ef48ad27f54dd3f7b58\",\"dweb:/ipfs/QmfZZoP44EZ3Ts81BgvRuG9AXuTAxCqCbFqHoKEspFsPSa\"]},\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":{\"keccak256\":\"0x8a44d64c1e998dad0d21b928c499b7b624623cb26a30df541c493641191f6091\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751749980251dd9cda3e77654fafa229dab8a9bc74992dee9e8b3adee9595b72\",\"dweb:/ipfs/QmSHViJSMCbr25KBPap8VB38SjrLojRTnC3JUDCvf3rRBB\"]}},\"version\":1}"}},"contracts/challenges/libraries/ChallengeStorageTypes.sol":{"ChallengeStorageTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220243298bfd83cfb119949b2b4330953fa44b97027a688d38c662ffdae6571a01164736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 ORIGIN SWAP9 0xBF 0xD8 EXTCODECOPY 0xFB GT SWAP10 0x49 0xB2 0xB4 CALLER MULMOD MSTORE8 STATICCALL PREVRANDAO 0xB9 PUSH17 0x27A688D38C662FFDAE6571A01164736F6C PUSH4 0x43000814 STOP CALLER ","sourceMap":"399:2732:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;399:2732:25;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220243298bfd83cfb119949b2b4330953fa44b97027a688d38c662ffdae6571a01164736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 ORIGIN SWAP9 0xBF 0xD8 EXTCODECOPY 0xFB GT SWAP10 0x49 0xB2 0xB4 CALLER MULMOD MSTORE8 STATICCALL PREVRANDAO 0xB9 PUSH17 0x27A688D38C662FFDAE6571A01164736F6C PUSH4 0x43000814 STOP CALLER ","sourceMap":"399:2732:25:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/challenges/libraries/ChallengeStorageTypes.sol\":\"ChallengeStorageTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/challenges/libraries/ChallengeStorageTypes.sol\":{\"keccak256\":\"0x1a3adb8916b01bb810f7f3a038defba464839c0fa62c33b66dccedbbfc354f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e5c7eb48cf0b47d9e50e5fae367dd0e55870eed76cea3b0772c5893091875b7\",\"dweb:/ipfs/QmVhXYingpgmkWEumVzwaRBRGUpudBEyHheHmTUsrH1kXg\"]},\"contracts/challenges/libraries/ChallengeTypes.sol\":{\"keccak256\":\"0xe06bbeff932f2d2dfa150a44e4115fabf11eb8bb98b5564c4eb1d8976216f795\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ff27c89e0fb1d73ea0ac59e507d0445c4d56f8d2be7a015289498da55f8a556\",\"dweb:/ipfs/QmaJppVA1LfAQ5gXQ2C8o51MjAnRMQx47vRSCPpe4SvkWK\"]},\"contracts/interfaces/IB3TR.sol\":{\"keccak256\":\"0x84072a0b3340a0972192bd7d9491f00b2676aff7a6c58461b836147a39e31bd2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca091823fbc799175caa96e5fbaf5f449acd78c728e92950845fa347c33d9ea5\",\"dweb:/ipfs/QmYLDKyKjssZPcWjtgRR3Fbmo3JKdWQaKpFj5GUxPWvvc4\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]},\"contracts/interfaces/IVeBetterPassport.sol\":{\"keccak256\":\"0x1094bcf1a7f61ad26e5d49a6efd7302419a1d2475fa0723f62f24757c7a1655c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a25e330da50daf45f56fe4c496da2ea6695fb4de491c112980deb385f0f3ac\",\"dweb:/ipfs/QmaPE4T6UR91WxnGkqGp85d6YB9UGQceGGtSTCres1Y2Ut\"]},\"contracts/interfaces/IX2EarnApps.sol\":{\"keccak256\":\"0xf476e628b4037c16d44c833c9f0f4db9a3abc48f60ad4654574bce31ca9c759c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8c183bbd394bb708a637dca7626f6beb7a78e5111674e3ccea6f98140580172\",\"dweb:/ipfs/Qmar8Za1an3ZGP6B5wcCZSmY6g6MKzPcGeVYetRhiPFm7e\"]},\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]},\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]},\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]},\"contracts/ve-better-passport/libraries/PassportTypes.sol\":{\"keccak256\":\"0x0250b067d550cd85bd77278c705bd8d28db1bce6829e084cbe65b74353483ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://176022bfb06a2c03efe880a13a97cea66e25e9b31fe164936b5845a57a299be8\",\"dweb:/ipfs/QmS2kQnhxdjkrnNGfFyBdtThpmvyT2B7tF1owW2vF2hmbz\"]},\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":{\"keccak256\":\"0x1830b8438f0b6b516cc22ebbfcc7cff9db478c9a2a44fedf5926e63bd77d5aa7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aad5b08dbb03f727b8b74b10d1d00e796ece111f3aa23ef48ad27f54dd3f7b58\",\"dweb:/ipfs/QmfZZoP44EZ3Ts81BgvRuG9AXuTAxCqCbFqHoKEspFsPSa\"]},\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":{\"keccak256\":\"0x8a44d64c1e998dad0d21b928c499b7b624623cb26a30df541c493641191f6091\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751749980251dd9cda3e77654fafa229dab8a9bc74992dee9e8b3adee9595b72\",\"dweb:/ipfs/QmSHViJSMCbr25KBPap8VB38SjrLojRTnC3JUDCvf3rRBB\"]}},\"version\":1}"}},"contracts/challenges/libraries/ChallengeTypes.sol":{"ChallengeTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220207e39b9d2e703758798edcbf0b0d087e04e3841aded3d17feeef7e8ae66cd5664736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 PUSH31 0x39B9D2E703758798EDCBF0B0D087E04E3841ADED3D17FEEEF7E8AE66CD5664 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"57:3036:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;57:3036:26;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220207e39b9d2e703758798edcbf0b0d087e04e3841aded3d17feeef7e8ae66cd5664736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 PUSH31 0x39B9D2E703758798EDCBF0B0D087E04E3841ADED3D17FEEEF7E8AE66CD5664 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"57:3036:26:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/challenges/libraries/ChallengeTypes.sol\":\"ChallengeTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/challenges/libraries/ChallengeTypes.sol\":{\"keccak256\":\"0xe06bbeff932f2d2dfa150a44e4115fabf11eb8bb98b5564c4eb1d8976216f795\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ff27c89e0fb1d73ea0ac59e507d0445c4d56f8d2be7a015289498da55f8a556\",\"dweb:/ipfs/QmaJppVA1LfAQ5gXQ2C8o51MjAnRMQx47vRSCPpe4SvkWK\"]}},\"version\":1}"}},"contracts/interfaces/IB3TR.sol":{"IB3TR":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"increasedSupply","type":"uint256"},{"internalType":"uint256","name":"cap","type":"uint256"}],"name":"ERC20ExceededCap","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"cap","type":"uint256"}],"name":"ERC20InvalidCap","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenDetails","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","cap()":"355274ea","decimals()":"313ce567","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","mint(address,uint256)":"40c10f19","name()":"06fdde03","pause()":"8456cb59","paused()":"5c975abb","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenDetails()":"d6abe110","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"name\":\"ERC20ExceededCap\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"name\":\"ERC20InvalidCap\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenDetails\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IB3TR.sol\":\"IB3TR\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IB3TR.sol\":{\"keccak256\":\"0x84072a0b3340a0972192bd7d9491f00b2676aff7a6c58461b836147a39e31bd2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca091823fbc799175caa96e5fbaf5f449acd78c728e92950845fa347c33d9ea5\",\"dweb:/ipfs/QmYLDKyKjssZPcWjtgRR3Fbmo3JKdWQaKpFj5GUxPWvvc4\"]}},\"version\":1}"}},"contracts/interfaces/IChallenges.sol":{"IChallenges":{"abi":[{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"AlreadyClaimed","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"invitee","type":"address"}],"name":"AlreadyInvited","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"AlreadyParticipating","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"AlreadyRefunded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"name":"BetAmountBelowMinimum","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeAlreadyCompleted","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeDoesNotExist","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"currentRound","type":"uint256"}],"name":"ChallengeEnded","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"enum ChallengeTypes.ChallengeStatus","name":"status","type":"uint8"}],"name":"ChallengeInvalidStatus","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"currentRound","type":"uint256"}],"name":"ChallengeNotEnded","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeNotPending","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"ChallengeUnknownApp","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"ChallengesUnauthorizedUser","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"CreatorCannotJoin","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"CreatorCannotLeave","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"DescriptionTooLong","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"DuplicateApp","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"ImageURITooLong","type":"error"},{"inputs":[{"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"internalType":"uint256","name":"numWinners","type":"uint256"},{"internalType":"uint256","name":"minPrizePerWinner","type":"uint256"}],"name":"InsufficientPrizePerWinner","type":"error"},{"inputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientWithdrawableFunds","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidChallengeTypeForCombo","type":"error"},{"inputs":[{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"}],"name":"InvalidEndRound","type":"error"},{"inputs":[{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"currentRound","type":"uint256"}],"name":"InvalidStartRound","type":"error"},{"inputs":[],"name":"InvalidTypeConfiguration","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MaxChallengeDurationExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MaxParticipantsExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MaxSelectedAppsExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"MetadataURITooLong","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"NotASplitWinChallenge","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"actions","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"NotEligibleForSplitWin","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"NotInvited","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"NotParticipating","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"name":"NotVerifiedPerson","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"NothingToClaim","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"NothingToRefund","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"SplitWinCannotComplete","type":"error"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"SplitWinSlotsExhausted","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"ThresholdTooHigh","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"TitleTooLong","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AdminWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"B3TRAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":false,"internalType":"enum ChallengeTypes.SettlementMode","name":"settlementMode","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"bestScore","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bestCount","type":"uint256"}],"name":"ChallengeCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":true,"internalType":"uint256","name":"endRound","type":"uint256"},{"indexed":false,"internalType":"enum ChallengeTypes.ChallengeKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"enum ChallengeTypes.ChallengeVisibility","name":"visibility","type":"uint8"},{"indexed":false,"internalType":"enum ChallengeTypes.ChallengeType","name":"challengeType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startRound","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"},{"indexed":false,"internalType":"bool","name":"allApps","type":"bool"},{"indexed":false,"internalType":"bytes32[]","name":"selectedApps","type":"bytes32[]"},{"indexed":false,"internalType":"string","name":"title","type":"string"},{"indexed":false,"internalType":"string","name":"description","type":"string"},{"indexed":false,"internalType":"string","name":"imageURI","type":"string"},{"indexed":false,"internalType":"string","name":"metadataURI","type":"string"}],"name":"ChallengeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"ChallengeDeclined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"ChallengeInvalidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"invitee","type":"address"}],"name":"ChallengeInviteAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"ChallengeJoined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"ChallengeLeft","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChallengePayoutClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChallengeRefundClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxChallengeDurationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxParticipantsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxSelectedAppsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MinBetAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"numWinners","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prizePerWinner","type":"uint256"}],"name":"SplitWinConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SplitWinCreatorRefunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"challengeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"prize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"actions","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"winnersClaimed","type":"uint256"}],"name":"SplitWinPrizeClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"VeBetterPassportAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"X2EarnAppsAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"XAllocationVotingAddressUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address[]","name":"invitees","type":"address[]"}],"name":"addInvites","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"cancelChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"challengeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"claimChallengePayout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"claimChallengeRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"claimCreatorSplitWinRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"claimSplitWinPrize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"completeChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ChallengeTypes.ChallengeKind","name":"kind","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeVisibility","name":"visibility","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeType","name":"challengeType","type":"uint8"},{"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"numWinners","type":"uint256"},{"internalType":"bytes32[]","name":"appIds","type":"bytes32[]"},{"internalType":"address[]","name":"invitees","type":"address[]"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageURI","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"}],"internalType":"struct ChallengeTypes.CreateChallengeParams","name":"params","type":"tuple"}],"name":"createChallenge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"declineChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallenge","outputs":[{"components":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"enum ChallengeTypes.ChallengeKind","name":"kind","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeVisibility","name":"visibility","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeType","name":"challengeType","type":"uint8"},{"internalType":"enum ChallengeTypes.ChallengeStatus","name":"status","type":"uint8"},{"internalType":"enum ChallengeTypes.SettlementMode","name":"settlementMode","type":"uint8"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"stakeAmount","type":"uint256"},{"internalType":"uint256","name":"startRound","type":"uint256"},{"internalType":"uint256","name":"endRound","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"numWinners","type":"uint256"},{"internalType":"uint256","name":"winnersClaimed","type":"uint256"},{"internalType":"uint256","name":"prizePerWinner","type":"uint256"},{"internalType":"bool","name":"allApps","type":"bool"},{"internalType":"uint256","name":"totalPrize","type":"uint256"},{"internalType":"uint256","name":"participantCount","type":"uint256"},{"internalType":"uint256","name":"invitedCount","type":"uint256"},{"internalType":"uint256","name":"declinedCount","type":"uint256"},{"internalType":"uint256","name":"selectedAppsCount","type":"uint256"},{"internalType":"uint256","name":"winnersCount","type":"uint256"},{"internalType":"uint256","name":"bestScore","type":"uint256"},{"internalType":"uint256","name":"bestCount","type":"uint256"},{"internalType":"uint256","name":"payoutsClaimed","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageURI","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"}],"internalType":"struct ChallengeTypes.ChallengeView","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeDeclined","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeInvited","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeParticipants","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeSelectedApps","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeStatus","outputs":[{"internalType":"enum ChallengeTypes.ChallengeStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"getChallengeWinners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"participant","type":"address"}],"name":"getParticipantActions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"getParticipantStatus","outputs":[{"internalType":"enum ChallengeTypes.ParticipantStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"b3trAddress","type":"address"},{"internalType":"address","name":"veBetterPassportAddress","type":"address"},{"internalType":"address","name":"xAllocationVotingAddress","type":"address"},{"internalType":"address","name":"x2EarnAppsAddress","type":"address"},{"internalType":"uint256","name":"maxChallengeDuration","type":"uint256"},{"internalType":"uint256","name":"maxSelectedApps","type":"uint256"},{"internalType":"uint256","name":"maxParticipants","type":"uint256"},{"internalType":"uint256","name":"minBetAmount","type":"uint256"}],"internalType":"struct ChallengeTypes.InitializationData","name":"data","type":"tuple"},{"components":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"upgrader","type":"address"},{"internalType":"address","name":"contractsAddressManager","type":"address"},{"internalType":"address","name":"settingsManager","type":"address"}],"internalType":"struct ChallengeTypes.InitializationRoleData","name":"roles","type":"tuple"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"isInvitationEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"isSplitWinWinner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"joinChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"leaveChallenge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxChallengeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxParticipants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSelectedApps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBetAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setB3TRAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxChallengeDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxParticipants","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSelectedApps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinBetAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setVeBetterPassportAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setX2EarnAppsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setXAllocationVotingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"challengeId","type":"uint256"}],"name":"syncChallenge","outputs":[{"internalType":"enum ChallengeTypes.ChallengeStatus","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addInvites(uint256,address[])":"262ad80b","cancelChallenge(uint256)":"a41483e3","challengeCount()":"a2f05725","claimChallengePayout(uint256)":"87d6e213","claimChallengeRefund(uint256)":"b58bd356","claimCreatorSplitWinRefund(uint256)":"cb3e0d2b","claimSplitWinPrize(uint256)":"a0427700","completeChallenge(uint256)":"a7817bbc","createChallenge((uint8,uint8,uint8,uint256,uint256,uint256,uint256,uint256,bytes32[],address[],string,string,string,string))":"4caf6d5f","declineChallenge(uint256)":"0012462a","getChallenge(uint256)":"1bdd4b74","getChallengeDeclined(uint256)":"cf33e76c","getChallengeInvited(uint256)":"5de5720f","getChallengeParticipants(uint256)":"023bf958","getChallengeSelectedApps(uint256)":"2b5adc1e","getChallengeStatus(uint256)":"832c8bc6","getChallengeWinners(uint256)":"039ddca9","getParticipantActions(uint256,address)":"14cf9077","getParticipantStatus(uint256,address)":"81363aeb","initialize((address,address,address,address,uint256,uint256,uint256,uint256),(address,address,address,address))":"3cc376bb","isInvitationEligible(uint256,address)":"4a6ff70b","isSplitWinWinner(uint256,address)":"87d30164","joinChallenge(uint256)":"e448ee26","leaveChallenge(uint256)":"67fc8c89","maxChallengeDuration()":"d2177bdd","maxParticipants()":"24924bf7","maxSelectedApps()":"f7806522","minBetAmount()":"fa968eea","setB3TRAddress(address)":"47b0b33e","setMaxChallengeDuration(uint256)":"a934718c","setMaxParticipants(uint256)":"2bf7299b","setMaxSelectedApps(uint256)":"21c688fa","setMinBetAmount(uint256)":"6c188593","setVeBetterPassportAddress(address)":"3800ff4d","setX2EarnAppsAddress(address)":"c048f6c9","setXAllocationVotingAddress(address)":"3bb18a76","syncChallenge(uint256)":"b30f0584","version()":"54fd4d50","withdraw(address,uint256)":"f3fef3a3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"}],\"name\":\"AlreadyInvited\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"AlreadyParticipating\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AlreadyRefunded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"}],\"name\":\"BetAmountBelowMinimum\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeAlreadyCompleted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentRound\",\"type\":\"uint256\"}],\"name\":\"ChallengeEnded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"enum ChallengeTypes.ChallengeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ChallengeInvalidStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentRound\",\"type\":\"uint256\"}],\"name\":\"ChallengeNotEnded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeNotPending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"ChallengeUnknownApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ChallengesUnauthorizedUser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"CreatorCannotJoin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"CreatorCannotLeave\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"DescriptionTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"ImageURITooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minPrizePerWinner\",\"type\":\"uint256\"}],\"name\":\"InsufficientPrizePerWinner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientWithdrawableFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidChallengeTypeForCombo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"}],\"name\":\"InvalidEndRound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentRound\",\"type\":\"uint256\"}],\"name\":\"InvalidStartRound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTypeConfiguration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MaxChallengeDurationExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MaxParticipantsExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MaxSelectedAppsExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"MetadataURITooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"NotASplitWinChallenge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"actions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"name\":\"NotEligibleForSplitWin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"NotInvited\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"NotParticipating\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotVerifiedPerson\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NothingToClaim\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NothingToRefund\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"SplitWinCannotComplete\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"SplitWinSlotsExhausted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"ThresholdTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"TitleTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"AdminWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"B3TRAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.SettlementMode\",\"name\":\"settlementMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bestScore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bestCount\",\"type\":\"uint256\"}],\"name\":\"ChallengeCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.ChallengeKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.ChallengeVisibility\",\"name\":\"visibility\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum ChallengeTypes.ChallengeType\",\"name\":\"challengeType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"allApps\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"selectedApps\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"imageURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"ChallengeCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"ChallengeDeclined\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"ChallengeInvalidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"}],\"name\":\"ChallengeInviteAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"ChallengeJoined\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"ChallengeLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ChallengePayoutClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ChallengeRefundClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MaxChallengeDurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MaxParticipantsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MaxSelectedAppsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MinBetAmountUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prizePerWinner\",\"type\":\"uint256\"}],\"name\":\"SplitWinConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SplitWinCreatorRefunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prize\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actions\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"winnersClaimed\",\"type\":\"uint256\"}],\"name\":\"SplitWinPrizeClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"VeBetterPassportAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"X2EarnAppsAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"XAllocationVotingAddressUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"invitees\",\"type\":\"address[]\"}],\"name\":\"addInvites\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"cancelChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"claimChallengePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"claimChallengeRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"claimCreatorSplitWinRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"claimSplitWinPrize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"completeChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ChallengeTypes.ChallengeKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeVisibility\",\"name\":\"visibility\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeType\",\"name\":\"challengeType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"appIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"invitees\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"imageURI\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"internalType\":\"struct ChallengeTypes.CreateChallengeParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"createChallenge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"declineChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallenge\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"enum ChallengeTypes.ChallengeKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeVisibility\",\"name\":\"visibility\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeType\",\"name\":\"challengeType\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.ChallengeStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum ChallengeTypes.SettlementMode\",\"name\":\"settlementMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numWinners\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"winnersClaimed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prizePerWinner\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allApps\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"totalPrize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"participantCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"invitedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"declinedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selectedAppsCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"winnersCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bestScore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bestCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"payoutsClaimed\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"imageURI\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"internalType\":\"struct ChallengeTypes.ChallengeView\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeDeclined\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeInvited\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeParticipants\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeSelectedApps\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeStatus\",\"outputs\":[{\"internalType\":\"enum ChallengeTypes.ChallengeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"getChallengeWinners\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant\",\"type\":\"address\"}],\"name\":\"getParticipantActions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getParticipantStatus\",\"outputs\":[{\"internalType\":\"enum ChallengeTypes.ParticipantStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"b3trAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"veBetterPassportAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"xAllocationVotingAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"x2EarnAppsAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxChallengeDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSelectedApps\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxParticipants\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBetAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ChallengeTypes.InitializationData\",\"name\":\"data\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractsAddressManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settingsManager\",\"type\":\"address\"}],\"internalType\":\"struct ChallengeTypes.InitializationRoleData\",\"name\":\"roles\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isInvitationEligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSplitWinWinner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"joinChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"leaveChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxChallengeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxParticipants\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSelectedApps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBetAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setB3TRAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setMaxChallengeDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setMaxParticipants\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setMaxSelectedApps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setMinBetAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setVeBetterPassportAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setX2EarnAppsAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setXAllocationVotingAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeId\",\"type\":\"uint256\"}],\"name\":\"syncChallenge\",\"outputs\":[{\"internalType\":\"enum ChallengeTypes.ChallengeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Lifecycle and settlement events emitted from the challenge libraries are declared here as well so the main contract ABI remains complete for docs, tests, and indexers.\",\"errors\":{\"NotVerifiedPerson(address,string)\":[{\"params\":{\"account\":\"Address that failed the personhood check.\",\"reason\":\"Reason returned by VeBetterPassport (e.g. \\\"User is blacklisted\\\").\"}}]},\"events\":{\"AdminWithdrawal(address,address,uint256)\":{\"params\":{\"admin\":\"Address that performed the withdrawal.\",\"amount\":\"Amount withdrawn.\",\"recipient\":\"Address that received the withdrawn tokens.\"}},\"B3TRAddressUpdated(address,address)\":{\"params\":{\"newAddress\":\"New B3TR token address.\",\"oldAddress\":\"Previous B3TR token address.\"}},\"ChallengeActivated(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"ChallengeCancelled(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"ChallengeCompleted(uint256,uint8,uint256,uint256)\":{\"details\":\"For Split Win the `bestScore` and `bestCount` fields are 0 and `settlementMode` is `SplitWinCompleted`.\",\"params\":{\"bestCount\":\"Number of participants tied for `bestScore` (Max Actions only).\",\"bestScore\":\"Highest participant action score recorded (Max Actions only).\",\"challengeId\":\"Challenge identifier.\",\"settlementMode\":\"Settlement mode selected for payout or refund.\"}},\"ChallengeCreated(uint256,address,uint256,uint8,uint8,uint8,uint256,uint256,uint256,bool,bytes32[],string,string,string,string)\":{\"details\":\"Split Win-specific configuration (numWinners, prizePerWinner) is emitted right after via `SplitWinConfigured` to keep this event signature within Solidity stack limits.\",\"params\":{\"allApps\":\"True when actions from all apps count, false when only `selectedApps` count.\",\"challengeId\":\"Newly created challenge identifier.\",\"challengeType\":\"Challenge mechanic (Max Actions or Split Win).\",\"creator\":\"Address that created the challenge.\",\"description\":\"Human-readable challenge description.\",\"endRound\":\"Last round whose actions count toward the challenge.\",\"imageURI\":\"Optional image URI.\",\"kind\":\"Challenge funding model.\",\"metadataURI\":\"Optional metadata URI.\",\"selectedApps\":\"Explicit app allowlist when `allApps` is false.\",\"stakeAmount\":\"Amount locked at creation and required from each joining participant in stake challenges.\",\"startRound\":\"First round whose actions count toward the challenge.\",\"threshold\":\"Minimum action threshold required to claim a Split Win slot (0 for Max Actions).\",\"title\":\"Human-readable challenge title.\",\"visibility\":\"Challenge participation mode.\"}},\"ChallengeDeclined(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"participant\":\"Address that declined.\"}},\"ChallengeInvalidated(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"ChallengeInviteAdded(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"invitee\":\"Address that was invited.\"}},\"ChallengeJoined(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"participant\":\"Address that joined.\"}},\"ChallengeLeft(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"participant\":\"Address that left.\"}},\"ChallengePayoutClaimed(uint256,address,uint256)\":{\"params\":{\"account\":\"Recipient of the payout.\",\"amount\":\"Amount transferred.\",\"challengeId\":\"Challenge identifier.\"}},\"ChallengeRefundClaimed(uint256,address,uint256)\":{\"params\":{\"account\":\"Recipient of the refund.\",\"amount\":\"Amount transferred.\",\"challengeId\":\"Challenge identifier.\"}},\"MaxChallengeDurationUpdated(uint256,uint256)\":{\"params\":{\"newValue\":\"New maximum duration, in rounds.\",\"oldValue\":\"Previous maximum duration, in rounds.\"}},\"MaxParticipantsUpdated(uint256,uint256)\":{\"params\":{\"newValue\":\"New maximum participant count.\",\"oldValue\":\"Previous maximum participant count.\"}},\"MaxSelectedAppsUpdated(uint256,uint256)\":{\"params\":{\"newValue\":\"New maximum app count.\",\"oldValue\":\"Previous maximum app count.\"}},\"MinBetAmountUpdated(uint256,uint256)\":{\"params\":{\"newValue\":\"New minimum B3TR amount.\",\"oldValue\":\"Previous minimum B3TR amount.\"}},\"SplitWinConfigured(uint256,uint256,uint256)\":{\"params\":{\"challengeId\":\"Newly created challenge identifier.\",\"numWinners\":\"Number of Split Win slots (creator-defined).\",\"prizePerWinner\":\"Locked-at-creation per-slot prize (`stakeAmount / numWinners`).\"}},\"SplitWinCreatorRefunded(uint256,address,uint256)\":{\"params\":{\"amount\":\"Amount transferred (unclaimed slots * prizePerWinner + integer-division remainder).\",\"challengeId\":\"Challenge identifier.\",\"creator\":\"Challenge creator.\"}},\"SplitWinPrizeClaimed(uint256,address,uint256,uint256,uint256)\":{\"params\":{\"actions\":\"Action count recorded at claim time.\",\"challengeId\":\"Challenge identifier.\",\"prize\":\"Locked per-winner prize transferred.\",\"winner\":\"Address that secured the slot.\",\"winnersClaimed\":\"Cumulative number of slots claimed including this one.\"}},\"VeBetterPassportAddressUpdated(address,address)\":{\"params\":{\"newAddress\":\"New VeBetterPassport address.\",\"oldAddress\":\"Previous VeBetterPassport address.\"}},\"X2EarnAppsAddressUpdated(address,address)\":{\"params\":{\"newAddress\":\"New X2EarnApps registry address.\",\"oldAddress\":\"Previous X2EarnApps registry address.\"}},\"XAllocationVotingAddressUpdated(address,address)\":{\"params\":{\"newAddress\":\"New XAllocationVoting governor address.\",\"oldAddress\":\"Previous XAllocationVoting governor address.\"}}},\"kind\":\"dev\",\"methods\":{\"addInvites(uint256,address[])\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"invitees\":\"Accounts to invite.\"}},\"cancelChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"challengeCount()\":{\"returns\":{\"_0\":\"Number of created challenges.\"}},\"claimChallengePayout(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Amount transferred to the caller.\"}},\"claimChallengeRefund(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Amount transferred to the caller.\"}},\"claimCreatorSplitWinRefund(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Amount transferred to the creator.\"}},\"claimSplitWinPrize(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Amount transferred to the caller.\"}},\"completeChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"createChallenge((uint8,uint8,uint8,uint256,uint256,uint256,uint256,uint256,bytes32[],address[],string,string,string,string))\":{\"details\":\"If `params.startRound` is zero, the next round is used.\",\"params\":{\"params\":\"Challenge creation payload.\"},\"returns\":{\"_0\":\"Newly created challenge identifier.\"}},\"declineChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"getChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Challenge data plus derived lifecycle and participation fields.\"}},\"getChallengeDeclined(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Declined addresses.\"}},\"getChallengeInvited(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Invited addresses.\"}},\"getChallengeParticipants(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Participant addresses.\"}},\"getChallengeSelectedApps(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Explicit app ids used by the challenge.\"}},\"getChallengeStatus(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Current status for the challenge.\"}},\"getChallengeWinners(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Winner addresses in claim order; empty for Max Actions challenges.\"}},\"getParticipantActions(uint256,address)\":{\"params\":{\"challengeId\":\"Challenge identifier.\",\"participant\":\"Participant address to query.\"},\"returns\":{\"_0\":\"Total counted actions.\"}},\"getParticipantStatus(uint256,address)\":{\"params\":{\"account\":\"Account to query.\",\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Participant status for the account.\"}},\"initialize((address,address,address,address,uint256,uint256,uint256,uint256),(address,address,address,address))\":{\"params\":{\"data\":\"Initial contract addresses and challenge limits.\",\"roles\":\"Role assignments for the proxy instance.\"}},\"isInvitationEligible(uint256,address)\":{\"params\":{\"account\":\"Account to query.\",\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"True if the account is marked as invitation-eligible.\"}},\"isSplitWinWinner(uint256,address)\":{\"params\":{\"account\":\"Account to query.\",\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"True if the account is in the winners list.\"}},\"joinChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"leaveChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"}},\"maxChallengeDuration()\":{\"returns\":{\"_0\":\"Maximum challenge duration, in rounds.\"}},\"maxParticipants()\":{\"returns\":{\"_0\":\"Maximum participant count.\"}},\"maxSelectedApps()\":{\"returns\":{\"_0\":\"Maximum selected app count.\"}},\"minBetAmount()\":{\"returns\":{\"_0\":\"Minimum stake or sponsored prize amount.\"}},\"setB3TRAddress(address)\":{\"params\":{\"newAddress\":\"New B3TR token address.\"}},\"setMaxChallengeDuration(uint256)\":{\"params\":{\"newValue\":\"New maximum duration, in rounds.\"}},\"setMaxParticipants(uint256)\":{\"params\":{\"newValue\":\"New maximum participant count.\"}},\"setMaxSelectedApps(uint256)\":{\"params\":{\"newValue\":\"New maximum selected app count.\"}},\"setMinBetAmount(uint256)\":{\"params\":{\"newValue\":\"New minimum B3TR amount.\"}},\"setVeBetterPassportAddress(address)\":{\"params\":{\"newAddress\":\"New VeBetterPassport address.\"}},\"setX2EarnAppsAddress(address)\":{\"params\":{\"newAddress\":\"New X2EarnApps registry address.\"}},\"setXAllocationVotingAddress(address)\":{\"params\":{\"newAddress\":\"New XAllocationVoting governor address.\"}},\"syncChallenge(uint256)\":{\"params\":{\"challengeId\":\"Challenge identifier.\"},\"returns\":{\"_0\":\"Status after syncing.\"}},\"version()\":{\"returns\":{\"_0\":\"Current implementation version string.\"}},\"withdraw(address,uint256)\":{\"details\":\"Emergency admin function that can drain any B3TR currently held by the contract.\",\"params\":{\"amount\":\"Amount of B3TR to withdraw.\",\"to\":\"Recipient of the withdrawn B3TR.\"}}},\"title\":\"B3TRChallenges Interface\",\"version\":1},\"userdoc\":{\"errors\":{\"NotVerifiedPerson(address,string)\":[{\"notice\":\"Thrown when an account fails the VeBetterPassport personhood check on a participation or claim path.\"}]},\"events\":{\"AdminWithdrawal(address,address,uint256)\":{\"notice\":\"Emitted when an admin withdraws B3TR from the contract.\"},\"B3TRAddressUpdated(address,address)\":{\"notice\":\"Emitted when the B3TR token address used by challenges is updated.\"},\"ChallengeActivated(uint256)\":{\"notice\":\"Emitted when a pending challenge becomes active.\"},\"ChallengeCancelled(uint256)\":{\"notice\":\"Emitted when the creator cancels a pending challenge.\"},\"ChallengeCompleted(uint256,uint8,uint256,uint256)\":{\"notice\":\"Emitted when a challenge transitions to Completed status.\"},\"ChallengeCreated(uint256,address,uint256,uint8,uint8,uint8,uint256,uint256,uint256,bool,bytes32[],string,string,string,string)\":{\"notice\":\"Emitted when a challenge is created and funded.\"},\"ChallengeDeclined(uint256,address)\":{\"notice\":\"Emitted when an invitee declines a challenge.\"},\"ChallengeInvalidated(uint256)\":{\"notice\":\"Emitted when a pending challenge becomes invalid at start time.\"},\"ChallengeInviteAdded(uint256,address)\":{\"notice\":\"Emitted when an invitee is added to a challenge.\"},\"ChallengeJoined(uint256,address)\":{\"notice\":\"Emitted when a participant joins a challenge.\"},\"ChallengeLeft(uint256,address)\":{\"notice\":\"Emitted when a participant leaves a challenge before it starts.\"},\"ChallengePayoutClaimed(uint256,address,uint256)\":{\"notice\":\"Emitted when a payout is claimed from a completed Max Actions challenge.\"},\"ChallengeRefundClaimed(uint256,address,uint256)\":{\"notice\":\"Emitted when a refund is claimed from a cancelled or invalid challenge.\"},\"MaxChallengeDurationUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the maximum challenge duration is updated.\"},\"MaxParticipantsUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the maximum number of participants per Max Actions challenge is updated.\"},\"MaxSelectedAppsUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the maximum number of explicit apps per challenge is updated.\"},\"MinBetAmountUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the minimum stake or sponsored prize amount is updated.\"},\"SplitWinConfigured(uint256,uint256,uint256)\":{\"notice\":\"Emitted immediately after `ChallengeCreated` for Split Win challenges only.\"},\"SplitWinCreatorRefunded(uint256,address,uint256)\":{\"notice\":\"Emitted when the creator reclaims unclaimed Split Win slots after the end round.\"},\"SplitWinPrizeClaimed(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a participant claims a Split Win slot.\"},\"VeBetterPassportAddressUpdated(address,address)\":{\"notice\":\"Emitted when the VeBetterPassport address used for action accounting is updated.\"},\"X2EarnAppsAddressUpdated(address,address)\":{\"notice\":\"Emitted when the X2EarnApps registry address is updated.\"},\"XAllocationVotingAddressUpdated(address,address)\":{\"notice\":\"Emitted when the XAllocationVoting governor address is updated.\"}},\"kind\":\"user\",\"methods\":{\"addInvites(uint256,address[])\":{\"notice\":\"Adds new invitees to a pending challenge.\"},\"cancelChallenge(uint256)\":{\"notice\":\"Cancels a pending challenge.\"},\"challengeCount()\":{\"notice\":\"Returns the total number of created challenges.\"},\"claimChallengePayout(uint256)\":{\"notice\":\"Claims the caller's payout from a completed Max Actions challenge.\"},\"claimChallengeRefund(uint256)\":{\"notice\":\"Claims the caller's refund from a cancelled or invalid challenge.\"},\"claimCreatorSplitWinRefund(uint256)\":{\"notice\":\"Reclaims unclaimed Split Win slots after the end round (creator only).\"},\"claimSplitWinPrize(uint256)\":{\"notice\":\"Claims a Split Win slot during the active window.\"},\"completeChallenge(uint256)\":{\"notice\":\"Completes a Max Actions challenge after its end round has passed.\"},\"createChallenge((uint8,uint8,uint8,uint256,uint256,uint256,uint256,uint256,bytes32[],address[],string,string,string,string))\":{\"notice\":\"Creates and funds a new challenge.\"},\"declineChallenge(uint256)\":{\"notice\":\"Declines a challenge invitation.\"},\"getChallenge(uint256)\":{\"notice\":\"Returns a full challenge view with derived counters and status.\"},\"getChallengeDeclined(uint256)\":{\"notice\":\"Returns the accounts that declined a challenge invitation.\"},\"getChallengeInvited(uint256)\":{\"notice\":\"Returns the accounts currently marked as invited for a challenge.\"},\"getChallengeParticipants(uint256)\":{\"notice\":\"Returns the current participants of a challenge.\"},\"getChallengeSelectedApps(uint256)\":{\"notice\":\"Returns the explicit app allowlist for a challenge.\"},\"getChallengeStatus(uint256)\":{\"notice\":\"Returns the current challenge status.\"},\"getChallengeWinners(uint256)\":{\"notice\":\"Returns the ordered list of Split Win winners (claim order).\"},\"getParticipantActions(uint256,address)\":{\"notice\":\"Returns the total counted actions for a participant across the challenge scope.\"},\"getParticipantStatus(uint256,address)\":{\"notice\":\"Returns the current participant status for an account.\"},\"initialize((address,address,address,address,uint256,uint256,uint256,uint256),(address,address,address,address))\":{\"notice\":\"Initializes the challenge contract.\"},\"isInvitationEligible(uint256,address)\":{\"notice\":\"Returns whether an account is eligible to join or be re-invited to a challenge.\"},\"isSplitWinWinner(uint256,address)\":{\"notice\":\"Returns whether an account has already claimed a Split Win slot.\"},\"joinChallenge(uint256)\":{\"notice\":\"Joins a pending challenge.\"},\"leaveChallenge(uint256)\":{\"notice\":\"Leaves a pending challenge before it starts.\"},\"maxChallengeDuration()\":{\"notice\":\"Returns the maximum duration allowed for a challenge.\"},\"maxParticipants()\":{\"notice\":\"Returns the maximum number of participants allowed in a Max Actions challenge.\"},\"maxSelectedApps()\":{\"notice\":\"Returns the maximum number of explicit apps allowed in a challenge.\"},\"minBetAmount()\":{\"notice\":\"Returns the minimum B3TR amount allowed for challenge funding.\"},\"setB3TRAddress(address)\":{\"notice\":\"Updates the B3TR token address.\"},\"setMaxChallengeDuration(uint256)\":{\"notice\":\"Updates the maximum duration allowed for new challenges.\"},\"setMaxParticipants(uint256)\":{\"notice\":\"Updates the maximum number of participants allowed for new Max Actions challenges.\"},\"setMaxSelectedApps(uint256)\":{\"notice\":\"Updates the maximum number of explicit apps allowed for new challenges.\"},\"setMinBetAmount(uint256)\":{\"notice\":\"Updates the minimum B3TR amount allowed for challenge funding.\"},\"setVeBetterPassportAddress(address)\":{\"notice\":\"Updates the VeBetterPassport address.\"},\"setX2EarnAppsAddress(address)\":{\"notice\":\"Updates the X2EarnApps registry address.\"},\"setXAllocationVotingAddress(address)\":{\"notice\":\"Updates the XAllocationVoting governor address.\"},\"syncChallenge(uint256)\":{\"notice\":\"Resolves the latest status for a pending challenge.\"},\"version()\":{\"notice\":\"Returns the current implementation version.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraws B3TR from the contract.\"}},\"notice\":\"External interface for creating, joining, settling, and administering B3TR challenges.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IChallenges.sol\":\"IChallenges\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/challenges/libraries/ChallengeTypes.sol\":{\"keccak256\":\"0xe06bbeff932f2d2dfa150a44e4115fabf11eb8bb98b5564c4eb1d8976216f795\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ff27c89e0fb1d73ea0ac59e507d0445c4d56f8d2be7a015289498da55f8a556\",\"dweb:/ipfs/QmaJppVA1LfAQ5gXQ2C8o51MjAnRMQx47vRSCPpe4SvkWK\"]},\"contracts/interfaces/IChallenges.sol\":{\"keccak256\":\"0xfe61f023db7a7caf543a27d480458e8f08ad8d9852f8e398b63640cd4bbf278a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37b02c8754732a8e16be7d8fcb322bd82ca388815b0d2dce35b380fcbb6b0fe9\",\"dweb:/ipfs/QmbzRdqpLhK13R4SaqxrHCetUzrZCTfSqBvJ9rteSYVRPm\"]}},\"version\":1}"}},"contracts/interfaces/IGalaxyMember.sol":{"IGalaxyMember":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"},{"internalType":"uint48","name":"clock","type":"uint48"}],"name":"ERC5805FutureLookup","type":"error"},{"inputs":[],"name":"ERC6372InconsistentClock","type":"error"},{"inputs":[],"name":"ERC721EnumerableForbiddenBatchMint","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"ERC721OutOfBoundsIndex","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"b3trToUpgradeToLevel","type":"uint256[]"}],"name":"B3TRtoUpgradeToLevelUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"B3trGovernorAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"newBaseURI","type":"string"},{"indexed":true,"internalType":"string","name":"oldBaseURI","type":"string"}],"name":"BaseURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"nodeTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"level","type":"uint256"}],"name":"LevelWhenAttached","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"nodeTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"level","type":"uint256"}],"name":"LevelWhenDetached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldLevel","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLevel","type":"uint256"}],"name":"MaxLevelUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nodeTokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NodeAttached","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nodeTokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NodeDetached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"PublicMintingPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Selected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"StargateNFTAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldLevel","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLevel","type":"uint256"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"XAllocationsGovernorAddressUpdated","type":"event"},{"inputs":[],"name":"CONTRACTS_ADDRESS_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_LEVEL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NODES_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"attachNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"b3tr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"b3trGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"detachNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getB3TRdonated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getB3TRtoUpgrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"}],"name":"getB3TRtoUpgradeToLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getIdAttachedToNode","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"nodeTokenId","type":"uint256"}],"name":"getLevelAfterAttachingNode","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getLevelAfterDetachingNode","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getNodeIdAttached","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeLevelOf","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"nodeLevel","type":"uint8"}],"name":"getNodeToFreeLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"getSelectedTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint48","name":"blockNumber","type":"uint48"}],"name":"getSelectedTokenIdAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vechainNodes","type":"address"},{"internalType":"address","name":"_nodesAdmin","type":"address"},{"internalType":"uint256[]","name":"_nodeFreeLevels","type":"uint256[]"}],"name":"initializeV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"levelOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"participatedInGovernance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"select","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"b3trToUpgradeToLevel","type":"uint256[]"}],"name":"setB3TRtoUpgradeToLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_b3trGovernor","type":"address"}],"name":"setB3trGovernorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseTokenURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool"}],"name":"setIsPublicMintingPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"}],"name":"setMaxLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"nodeLevel","type":"uint8"},{"internalType":"uint256","name":"level","type":"uint256"}],"name":"setNodeToFreeUpgradeLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stargateNFT","type":"address"}],"name":"setStargateNFTAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_xAllocationsGovernor","type":"address"}],"name":"setXAllocationsGovernorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stargateNFT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"xAllocationsGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"CONTRACTS_ADDRESS_MANAGER_ROLE()":"952f2133","DEFAULT_ADMIN_ROLE()":"a217fddf","MAX_LEVEL()":"a49062d4","MINTER_ROLE()":"d5391393","NODES_MANAGER_ROLE()":"3d6dbee8","PAUSER_ROLE()":"e63ab1e9","UPGRADER_ROLE()":"f72c0d8b","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","approve(address,uint256)":"095ea7b3","attachNode(uint256,uint256)":"88371110","b3tr()":"582a486a","b3trGovernor()":"7893d736","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","burn(uint256)":"42966c68","detachNode(uint256,uint256)":"4a6565e1","freeMint()":"5b70ea9f","getApproved(uint256)":"081812fc","getB3TRdonated(uint256)":"865c380b","getB3TRtoUpgrade(uint256)":"a51d2e0b","getB3TRtoUpgradeToLevel(uint256)":"2b42df38","getIdAttachedToNode(uint256)":"51c438d1","getLevelAfterAttachingNode(uint256,uint256)":"a1843bd0","getLevelAfterDetachingNode(uint256)":"cc421d07","getNodeIdAttached(uint256)":"958fc97d","getNodeLevelOf(uint256)":"3ff453af","getNodeToFreeLevel(uint8)":"e617e49f","getRoleAdmin(bytes32)":"248a9ca3","getSelectedTokenId(address)":"d206885d","getSelectedTokenIdAtBlock(address,uint48)":"3c60f55d","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initializeV2(address,address,uint256[])":"fb966e9f","isApprovedForAll(address,address)":"e985e9c5","levelOf(uint256)":"6d5e3032","name()":"06fdde03","ownerOf(uint256)":"6352211e","participatedInGovernance(address)":"8c5b76fb","pause()":"8456cb59","paused()":"5c975abb","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","select(uint256)":"839a19d9","setApprovalForAll(address,bool)":"a22cb465","setB3TRtoUpgradeToLevel(uint256[])":"b1ccbd2c","setB3trGovernorAddress(address)":"ddd8634d","setBaseURI(string)":"55f804b3","setIsPublicMintingPaused(bool)":"5b5da514","setMaxLevel(uint256)":"344f1ba5","setNodeToFreeUpgradeLevel(uint8,uint256)":"001db0dd","setStargateNFTAddress(address)":"36a49a3c","setXAllocationsGovernorAddress(address)":"3af03ea8","stargateNFT()":"5d21e15b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","treasury()":"61d027b3","unpause()":"3f4ba83a","upgrade(uint256)":"45977d03","upgradeToAndCall(address,bytes)":"4f1ef286","version()":"54fd4d50","xAllocationsGovernor()":"5ecf68e9"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"name\":\"ERC5805FutureLookup\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC6372InconsistentClock\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC721EnumerableForbiddenBatchMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ERC721OutOfBoundsIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"b3trToUpgradeToLevel\",\"type\":\"uint256[]\"}],\"name\":\"B3TRtoUpgradeToLevelUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"}],\"name\":\"B3trGovernorAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"newBaseURI\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"oldBaseURI\",\"type\":\"string\"}],\"name\":\"BaseURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"}],\"name\":\"LevelWhenAttached\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"}],\"name\":\"LevelWhenDetached\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldLevel\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newLevel\",\"type\":\"uint256\"}],\"name\":\"MaxLevelUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NodeAttached\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NodeDetached\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"PublicMintingPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Selected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"}],\"name\":\"StargateNFTAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldLevel\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newLevel\",\"type\":\"uint256\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"}],\"name\":\"XAllocationsGovernorAddressUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CONTRACTS_ADDRESS_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_LEVEL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NODES_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"attachNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"b3tr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"b3trGovernor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"detachNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getB3TRdonated\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getB3TRtoUpgrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"}],\"name\":\"getB3TRtoUpgradeToLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getIdAttachedToNode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nodeTokenId\",\"type\":\"uint256\"}],\"name\":\"getLevelAfterAttachingNode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getLevelAfterDetachingNode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getNodeIdAttached\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeLevelOf\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nodeLevel\",\"type\":\"uint8\"}],\"name\":\"getNodeToFreeLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"getSelectedTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"blockNumber\",\"type\":\"uint48\"}],\"name\":\"getSelectedTokenIdAtBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vechainNodes\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_nodesAdmin\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_nodeFreeLevels\",\"type\":\"uint256[]\"}],\"name\":\"initializeV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"levelOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"participatedInGovernance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"name\":\"select\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"b3trToUpgradeToLevel\",\"type\":\"uint256[]\"}],\"name\":\"setB3TRtoUpgradeToLevel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_b3trGovernor\",\"type\":\"address\"}],\"name\":\"setB3trGovernorAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"setBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"setIsPublicMintingPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"}],\"name\":\"setMaxLevel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nodeLevel\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"}],\"name\":\"setNodeToFreeUpgradeLevel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stargateNFT\",\"type\":\"address\"}],\"name\":\"setStargateNFTAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_xAllocationsGovernor\",\"type\":\"address\"}],\"name\":\"setXAllocationsGovernorAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stargateNFT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xAllocationsGovernor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements ERC721 with additional features for level upgrades, node attachments, and governance participation\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"to\":\"Address to be approved\",\"tokenId\":\"ID of the token to be approved\"}},\"attachNode(uint256,uint256)\":{\"params\":{\"nodeTokenId\":\"ID of the node to attach\",\"tokenId\":\"ID of the token to attach to\"}},\"balanceOf(address)\":{\"params\":{\"owner\":\"Address to query\"},\"returns\":{\"_0\":\"Number of tokens owned\"}},\"burn(uint256)\":{\"params\":{\"tokenId\":\"ID of the token to burn\"}},\"detachNode(uint256,uint256)\":{\"params\":{\"nodeTokenId\":\"ID of the node to detach\",\"tokenId\":\"ID of the token to detach from\"}},\"getApproved(uint256)\":{\"params\":{\"tokenId\":\"ID of the token to query\"},\"returns\":{\"_0\":\"Address approved for the token\"}},\"getB3TRdonated(uint256)\":{\"params\":{\"tokenId\":\"ID of the token to query\"},\"returns\":{\"_0\":\"Amount of B3TR donated\"}},\"getB3TRtoUpgrade(uint256)\":{\"params\":{\"tokenId\":\"ID of the token to query\"},\"returns\":{\"_0\":\"Amount of B3TR needed\"}},\"getB3TRtoUpgradeToLevel(uint256)\":{\"params\":{\"level\":\"Target level\"},\"returns\":{\"_0\":\"Amount of B3TR needed\"}},\"getIdAttachedToNode(uint256)\":{\"params\":{\"nodeId\":\"ID of the node to query\"},\"returns\":{\"_0\":\"Token ID attached to the node\"}},\"getLevelAfterAttachingNode(uint256,uint256)\":{\"params\":{\"nodeTokenId\":\"ID of the node to attach\",\"tokenId\":\"ID of the token\"},\"returns\":{\"_0\":\"New level after attachment\"}},\"getLevelAfterDetachingNode(uint256)\":{\"params\":{\"tokenId\":\"ID of the token\"},\"returns\":{\"_0\":\"New level after detachment\"}},\"getNodeIdAttached(uint256)\":{\"params\":{\"tokenId\":\"ID of the token to query\"},\"returns\":{\"_0\":\"ID of the attached node\"}},\"getNodeLevelOf(uint256)\":{\"params\":{\"nodeId\":\"ID of the node to query\"},\"returns\":{\"_0\":\"Level of the node\"}},\"getNodeToFreeLevel(uint8)\":{\"params\":{\"nodeLevel\":\"Level of the node\"},\"returns\":{\"_0\":\"Free level granted\"}},\"getRoleAdmin(bytes32)\":{\"params\":{\"role\":\"Role to query\"},\"returns\":{\"_0\":\"Admin role\"}},\"getSelectedTokenId(address)\":{\"params\":{\"owner\":\"Address to query\"},\"returns\":{\"_0\":\"Selected token ID\"}},\"getSelectedTokenIdAtBlock(address,uint48)\":{\"params\":{\"blockNumber\":\"Block number to query\",\"owner\":\"Address to query\"},\"returns\":{\"_0\":\"Selected token ID\"}},\"grantRole(bytes32,address)\":{\"params\":{\"account\":\"Account to receive the role\",\"role\":\"Role to grant\"}},\"hasRole(bytes32,address)\":{\"params\":{\"account\":\"Account to check\",\"role\":\"Role to check\"},\"returns\":{\"_0\":\"True if account has the role\"}},\"initializeV2(address,address,uint256[])\":{\"params\":{\"_nodeFreeLevels\":\"Array of free levels for nodes\",\"_nodesAdmin\":\"Address of the nodes admin\",\"_vechainNodes\":\"Address of the VeChain nodes contract\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"operator\":\"Operator address\",\"owner\":\"Owner address\"},\"returns\":{\"_0\":\"True if operator is approved for all\"}},\"levelOf(uint256)\":{\"params\":{\"tokenId\":\"ID of the token to query\"},\"returns\":{\"_0\":\"Level of the token\"}},\"ownerOf(uint256)\":{\"params\":{\"tokenId\":\"ID of the token to query\"},\"returns\":{\"_0\":\"Address of the owner\"}},\"participatedInGovernance(address)\":{\"params\":{\"user\":\"Address to check\"},\"returns\":{\"_0\":\"True if user has participated\"}},\"paused()\":{\"returns\":{\"_0\":\"True if contract is paused\"}},\"renounceRole(bytes32,address)\":{\"params\":{\"callerConfirmation\":\"Address of the caller for confirmation\",\"role\":\"Role to renounce\"}},\"revokeRole(bytes32,address)\":{\"params\":{\"account\":\"Account to revoke from\",\"role\":\"Role to revoke\"}},\"safeTransferFrom(address,address,uint256)\":{\"params\":{\"from\":\"Current owner\",\"to\":\"New owner\",\"tokenId\":\"ID of the token to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"params\":{\"data\":\"Additional data\",\"from\":\"Current owner\",\"to\":\"New owner\",\"tokenId\":\"ID of the token to transfer\"}},\"select(uint256)\":{\"params\":{\"tokenID\":\"ID of the token to select\"}},\"setApprovalForAll(address,bool)\":{\"params\":{\"approved\":\"Approval status\",\"operator\":\"Address to approve\"}},\"setB3TRtoUpgradeToLevel(uint256[])\":{\"params\":{\"b3trToUpgradeToLevel\":\"Array of B3TR amounts\"}},\"setB3trGovernorAddress(address)\":{\"params\":{\"_b3trGovernor\":\"New governor address\"}},\"setBaseURI(string)\":{\"params\":{\"baseTokenURI\":\"New base URI\"}},\"setIsPublicMintingPaused(bool)\":{\"params\":{\"isPaused\":\"New pause status\"}},\"setMaxLevel(uint256)\":{\"params\":{\"level\":\"New maximum level\"}},\"setNodeToFreeUpgradeLevel(uint8,uint256)\":{\"params\":{\"level\":\"Free upgrade level\",\"nodeLevel\":\"Level of the node\"}},\"setStargateNFTAddress(address)\":{\"params\":{\"_stargateNFT\":\"New StargateNFT contract address\"}},\"setXAllocationsGovernorAddress(address)\":{\"params\":{\"_xAllocationsGovernor\":\"New governor address\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"Interface identifier\"},\"returns\":{\"_0\":\"True if interface is supported\"}},\"tokenByIndex(uint256)\":{\"params\":{\"index\":\"Index of the token\"},\"returns\":{\"_0\":\"Token ID at the index\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"params\":{\"index\":\"Index of the token\",\"owner\":\"Owner address\"},\"returns\":{\"_0\":\"Token ID at the index\"}},\"tokenURI(uint256)\":{\"params\":{\"tokenId\":\"ID of the token\"},\"returns\":{\"_0\":\"Metadata URI\"}},\"totalSupply()\":{\"returns\":{\"_0\":\"Total number of tokens\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"from\":\"Current owner\",\"to\":\"New owner\",\"tokenId\":\"ID of the token to transfer\"}},\"upgrade(uint256)\":{\"params\":{\"tokenId\":\"ID of the token to upgrade\"}},\"upgradeToAndCall(address,bytes)\":{\"params\":{\"data\":\"Additional data for the upgrade\",\"newImplementation\":\"Address of the new implementation\"}},\"version()\":{\"returns\":{\"_0\":\"Version string\"}}},\"title\":\"IGalaxyMember\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"CONTRACTS_ADDRESS_MANAGER_ROLE()\":{\"notice\":\"Returns the role identifier for contracts address manager\"},\"DEFAULT_ADMIN_ROLE()\":{\"notice\":\"Returns the role identifier for default admin\"},\"MAX_LEVEL()\":{\"notice\":\"Returns the maximum level achievable for a token\"},\"MINTER_ROLE()\":{\"notice\":\"Returns the role identifier for minter\"},\"NODES_MANAGER_ROLE()\":{\"notice\":\"Returns the role identifier for nodes manager\"},\"PAUSER_ROLE()\":{\"notice\":\"Returns the role identifier for pauser\"},\"UPGRADER_ROLE()\":{\"notice\":\"Returns the role identifier for upgrader\"},\"UPGRADE_INTERFACE_VERSION()\":{\"notice\":\"Returns the interface version string\"},\"approve(address,uint256)\":{\"notice\":\"Approves an address to transfer a specific token\"},\"attachNode(uint256,uint256)\":{\"notice\":\"Attaches a node to a token\"},\"b3tr()\":{\"notice\":\"Returns the B3TR token contract address\"},\"b3trGovernor()\":{\"notice\":\"Returns the B3TR governor contract address\"},\"balanceOf(address)\":{\"notice\":\"Returns the number of tokens owned by an address\"},\"baseURI()\":{\"notice\":\"Returns the base URI for token metadata\"},\"burn(uint256)\":{\"notice\":\"Burns a specific token\"},\"detachNode(uint256,uint256)\":{\"notice\":\"Detaches a node from a token\"},\"freeMint()\":{\"notice\":\"Allows eligible addresses to mint a token for free\"},\"getApproved(uint256)\":{\"notice\":\"Returns the approved address for a token\"},\"getB3TRdonated(uint256)\":{\"notice\":\"Returns the amount of B3TR donated for a token\"},\"getB3TRtoUpgrade(uint256)\":{\"notice\":\"Returns the amount of B3TR needed to upgrade a token\"},\"getB3TRtoUpgradeToLevel(uint256)\":{\"notice\":\"Returns the amount of B3TR needed to upgrade to a specific level\"},\"getIdAttachedToNode(uint256)\":{\"notice\":\"Returns the token ID attached to a node\"},\"getLevelAfterAttachingNode(uint256,uint256)\":{\"notice\":\"Calculates the level after attaching a node\"},\"getLevelAfterDetachingNode(uint256)\":{\"notice\":\"Calculates the level after detaching a node\"},\"getNodeIdAttached(uint256)\":{\"notice\":\"Returns the node ID attached to a token\"},\"getNodeLevelOf(uint256)\":{\"notice\":\"Returns the level of a node\"},\"getNodeToFreeLevel(uint8)\":{\"notice\":\"Returns the free level granted by a node level\"},\"getRoleAdmin(bytes32)\":{\"notice\":\"Returns the admin role for a given role\"},\"getSelectedTokenId(address)\":{\"notice\":\"Returns the selected token ID for an owner\"},\"getSelectedTokenIdAtBlock(address,uint48)\":{\"notice\":\"Returns the selected token ID for an owner in a specific block number\"},\"grantRole(bytes32,address)\":{\"notice\":\"Grants a role to an account\"},\"hasRole(bytes32,address)\":{\"notice\":\"Checks if an account has a role\"},\"initializeV2(address,address,uint256[])\":{\"notice\":\"Initializes the contract V2\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Checks if an operator is approved for all tokens of an owner\"},\"levelOf(uint256)\":{\"notice\":\"Returns the level of a token\"},\"name()\":{\"notice\":\"Returns the name of the token collection\"},\"ownerOf(uint256)\":{\"notice\":\"Returns the owner of a token\"},\"participatedInGovernance(address)\":{\"notice\":\"Checks if a user has participated in governance\"},\"pause()\":{\"notice\":\"Pauses all token transfers\"},\"paused()\":{\"notice\":\"Returns the paused status of the contract\"},\"proxiableUUID()\":{\"notice\":\"Returns the storage slot for the implementation\"},\"renounceRole(bytes32,address)\":{\"notice\":\"Allows an account to renounce a role\"},\"revokeRole(bytes32,address)\":{\"notice\":\"Revokes a role from an account\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Safely transfers a token\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Safely transfers a token with additional data\"},\"select(uint256)\":{\"notice\":\"Selects a token for an owner\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Sets approval for all tokens\"},\"setB3TRtoUpgradeToLevel(uint256[])\":{\"notice\":\"Sets the B3TR amounts needed for level upgrades\"},\"setB3trGovernorAddress(address)\":{\"notice\":\"Sets the B3TR governor address\"},\"setBaseURI(string)\":{\"notice\":\"Sets the base URI for token metadata\"},\"setIsPublicMintingPaused(bool)\":{\"notice\":\"Sets the public minting pause status\"},\"setMaxLevel(uint256)\":{\"notice\":\"Sets the maximum level\"},\"setNodeToFreeUpgradeLevel(uint8,uint256)\":{\"notice\":\"Sets the free upgrade level for a node level\"},\"setStargateNFTAddress(address)\":{\"notice\":\"Sets the StargateNFT contract address\"},\"setXAllocationsGovernorAddress(address)\":{\"notice\":\"Sets the X-Allocations governor address\"},\"stargateNFT()\":{\"notice\":\"Returns the StargateNFT contract address\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if the contract supports an interface\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token collection\"},\"tokenByIndex(uint256)\":{\"notice\":\"Returns a token by its index\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"notice\":\"Returns a token owned by an address by index\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI for a token's metadata\"},\"totalSupply()\":{\"notice\":\"Returns the total supply of tokens\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers a token\"},\"treasury()\":{\"notice\":\"Returns the treasury address\"},\"unpause()\":{\"notice\":\"Unpauses all token transfers\"},\"upgrade(uint256)\":{\"notice\":\"Upgrades a token's level\"},\"upgradeToAndCall(address,bytes)\":{\"notice\":\"Upgrades the contract implementation\"},\"version()\":{\"notice\":\"Returns the contract version\"},\"xAllocationsGovernor()\":{\"notice\":\"Returns the X-Allocations governor address\"}},\"notice\":\"Interface for the GalaxyMember contract which handles NFT membership and governance functionality\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IGalaxyMember.sol\":\"IGalaxyMember\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]}},\"version\":1}"}},"contracts/interfaces/IVeBetterPassport.sol":{"IVeBetterPassport":{"abi":[{"inputs":[{"internalType":"address","name":"entity","type":"address"}],"name":"AlreadyDelegated","type":"error"},{"inputs":[{"internalType":"address","name":"entity","type":"address"}],"name":"AlreadyLinked","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"CannotDelegateToSelf","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"CannotLinkToSelf","type":"error"},{"inputs":[{"internalType":"address","name":"entity","type":"address"}],"name":"DelegatedEntity","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"MaxEntitiesPerPassportReached","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"NotDelegated","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"NotLinked","type":"error"},{"inputs":[],"name":"OnlyOneLinkAllowed","type":"error"},{"inputs":[],"name":"OnlyOneUserAllowed","type":"error"},{"inputs":[],"name":"PassportDelegationFromEntity","type":"error"},{"inputs":[],"name":"PassportDelegationToEntity","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"PassportDelegationUnauthorizedUser","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"UnauthorizedUser","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"VeBetterPassportUnauthorizedUser","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"checkName","type":"string"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"CheckToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"delegatee","type":"address"}],"name":"DelegationCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"delegatee","type":"address"}],"name":"DelegationPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"delegatee","type":"address"}],"name":"DelegationRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"entity","type":"address"},{"indexed":true,"internalType":"address","name":"passport","type":"address"}],"name":"LinkCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"entity","type":"address"},{"indexed":true,"internalType":"address","name":"passport","type":"address"}],"name":"LinkPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"entity","type":"address"},{"indexed":true,"internalType":"address","name":"passport","type":"address"}],"name":"LinkRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minimumGalaxyMemberLevel","type":"uint256"}],"name":"MinimumGalaxyMemberLevelSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"passport","type":"address"},{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"actionScore","type":"uint256"}],"name":"RegisteredAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"removedBy","type":"address"}],"name":"RemovedUserFromBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"passport","type":"address"},{"indexed":true,"internalType":"address","name":"removedBy","type":"address"}],"name":"RemovedUserFromWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signaler","type":"address"},{"indexed":true,"internalType":"bytes32","name":"app","type":"bytes32"}],"name":"SignalerAssignedToApp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signaler","type":"address"},{"indexed":true,"internalType":"bytes32","name":"app","type":"bytes32"}],"name":"SignalerRemovedFromApp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"blacklistedBy","type":"address"}],"name":"UserBlacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"signaler","type":"address"},{"indexed":true,"internalType":"bytes32","name":"app","type":"bytes32"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"UserSignaled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"UserSignalsReset","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"bytes32","name":"app","type":"bytes32"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"UserSignalsResetForApp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"whitelistedBy","type":"address"}],"name":"UserWhitelisted","type":"event"},{"inputs":[],"name":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"acceptDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"entity","type":"address"}],"name":"acceptEntityLink","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"round","type":"uint256"}],"name":"appRoundActionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"appSecurity","outputs":[{"internalType":"enum PassportTypes.APP_SECURITY","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"app","type":"bytes32"}],"name":"appTotalSignalsCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"app","type":"bytes32"},{"internalType":"address","name":"user","type":"address"}],"name":"assignSignalerToApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blacklistThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelOutgoingPendingDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOutgoingPendingEntityLink","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decayRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegatePassport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"denyIncomingPendingDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"entity","type":"address"}],"name":"denyIncomingPendingEntityLink","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"signatureVersion","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"lastRound","type":"uint256"}],"name":"getCumulativeScoreWithDecay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"getDelegatee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"getDelegateeInTimepoint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"getDelegator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"getDelegatorInTimepoint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"passport","type":"address"}],"name":"getEntitiesLinkedToPassport","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumGalaxyMemberLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"entity","type":"address"}],"name":"getPassportForEntity","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"entity","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"getPassportForEntityAtTimepoint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getPendingDelegations","outputs":[{"internalType":"address[]","name":"incoming","type":"address[]"},{"internalType":"address","name":"outgoing","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getPendingLinkings","outputs":[{"internalType":"address[]","name":"incoming","type":"address[]"},{"internalType":"address","name":"outgoing","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IXAllocationVotingGovernor","name":"xAllocationVoting","type":"address"},{"internalType":"contract IX2EarnApps","name":"x2EarnApps","type":"address"},{"internalType":"contract IGalaxyMember","name":"galaxyMember","type":"address"},{"internalType":"uint256","name":"signalingThreshold","type":"uint256"},{"internalType":"uint256","name":"roundsForCumulativeScore","type":"uint256"},{"internalType":"uint256","name":"minimumGalaxyMemberLevel","type":"uint256"},{"internalType":"uint256","name":"blacklistThreshold","type":"uint256"},{"internalType":"uint256","name":"whitelistThreshold","type":"uint256"},{"internalType":"uint256","name":"maxEntitiesPerPassport","type":"uint256"},{"internalType":"uint256","name":"decayRate","type":"uint256"}],"internalType":"struct PassportTypes.InitializationData","name":"data","type":"tuple"},{"components":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"botSignaler","type":"address"},{"internalType":"address","name":"upgrader","type":"address"},{"internalType":"address","name":"settingsManager","type":"address"},{"internalType":"address","name":"roleGranter","type":"address"},{"internalType":"address","name":"blacklister","type":"address"},{"internalType":"address","name":"whitelister","type":"address"},{"internalType":"address","name":"actionRegistrar","type":"address"},{"internalType":"address","name":"actionScoreManager","type":"address"},{"internalType":"address","name":"resetSignaler","type":"address"}],"internalType":"struct PassportTypes.InitializationRoleData","name":"roles","type":"tuple"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum PassportTypes.CheckType","name":"check","type":"uint8"}],"name":"isCheckEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isDelegatee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"isDelegateeInTimepoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isDelegator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"isDelegatorInTimepoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"isEntityInTimepoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isPassport","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"isPassportInTimepoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isPerson","outputs":[{"internalType":"bool","name":"person","type":"bool"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint48","name":"timepoint","type":"uint48"}],"name":"isPersonAtTimepoint","outputs":[{"internalType":"bool","name":"person","type":"bool"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"passport","type":"address"}],"name":"linkEntityToPassport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"entity","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"linkEntityToPassportWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxEntitiesPerPassport","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumGalaxyMemberLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"registerAction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"round","type":"uint256"}],"name":"registerActionForRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"entity","type":"address"}],"name":"removeEntityLink","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"removeSignalerFromApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"name":"resetUserSignalsWithReason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"roundsForCumulativeScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum PassportTypes.APP_SECURITY","name":"security","type":"uint8"}],"name":"securityMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"enum PassportTypes.APP_SECURITY","name":"security","type":"uint8"}],"name":"setAppSecurity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setBlacklistThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"decayRate","type":"uint256"}],"name":"setDecayRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxEntities","type":"uint256"}],"name":"setMaxEntitiesPerPassport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rounds","type":"uint256"}],"name":"setRoundsForCumulativeScore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum PassportTypes.APP_SECURITY","name":"security","type":"uint8"},{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"setSecurityMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setSignalingThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint208","name":"threshold","type":"uint208"}],"name":"setThresholdPoPScore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setWhitelistThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IX2EarnApps","name":"_x2EarnApps","type":"address"}],"name":"setX2EarnApps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IXAllocationVotingGovernor","name":"xAllocationVoting","type":"address"}],"name":"setXAllocationVoting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"signalUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"name":"signalUserWithReason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signalingThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thresholdPoPScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint48","name":"timepoint","type":"uint48"}],"name":"thresholdPoPScoreAtTimepoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum PassportTypes.CheckType","name":"check","type":"uint8"}],"name":"toggleCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"userAppTotalScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userInteractedApps","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"round","type":"uint256"}],"name":"userRoundActionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"userRoundActionCountApp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"round","type":"uint256"}],"name":"userRoundAppCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"round","type":"uint256"}],"name":"userRoundScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"userRoundScoreApp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userTotalScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"userUniqueAppInteraction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"whitelistThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"CLOCK_MODE()":"4bf5d7e9","acceptDelegation(address)":"b48a9634","acceptEntityLink(address)":"d1143f3a","appRoundActionCount(bytes32,uint256)":"00362016","appSecurity(bytes32)":"b292864a","appTotalSignalsCounter(bytes32)":"3bf451a9","assignSignalerToApp(bytes32,address)":"26b320ab","blacklistThreshold()":"5ce33093","cancelOutgoingPendingDelegation()":"36db28b3","cancelOutgoingPendingEntityLink()":"15b75cf0","clock()":"91ddadf4","decayRate()":"a9c1f2f1","delegatePassport(address)":"49599712","denyIncomingPendingDelegation(address)":"2be4d14d","denyIncomingPendingEntityLink(address)":"1332de46","eip712Domain()":"84b0196e","getCumulativeScoreWithDecay(address,uint256)":"e18c10d3","getDelegatee(address)":"9b4e735f","getDelegateeInTimepoint(address,uint256)":"bc6237ff","getDelegator(address)":"a64ad595","getDelegatorInTimepoint(address,uint256)":"f9561f67","getEntitiesLinkedToPassport(address)":"e60fd76c","getMinimumGalaxyMemberLevel()":"c817dcec","getPassportForEntity(address)":"467b99b6","getPassportForEntityAtTimepoint(address,uint256)":"38d8d688","getPendingDelegations(address)":"ca3f511f","getPendingLinkings(address)":"f9cfdfcc","grantRole(bytes32,address)":"2f2ff15d","initialize((address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256),(address,address,address,address,address,address,address,address,address,address))":"52ba35c4","isBlacklisted(address)":"fe575a87","isCheckEnabled(uint8)":"ccc3ced3","isDelegatee(address)":"080abb4c","isDelegateeInTimepoint(address,uint256)":"08b76b3a","isDelegator(address)":"fd8ab482","isDelegatorInTimepoint(address,uint256)":"f4079c1f","isEntity(address)":"14887c58","isEntityInTimepoint(address,uint256)":"6e6a304c","isPassport(address)":"5a1dcf2c","isPassportInTimepoint(address,uint256)":"e4325044","isPerson(address)":"0f73927a","isPersonAtTimepoint(address,uint48)":"d0ebb0ee","isWhitelisted(address)":"3af32abf","linkEntityToPassport(address)":"e0b23db4","linkEntityToPassportWithSignature(address,uint256,bytes)":"c791e937","maxEntitiesPerPassport()":"4f69de08","minimumGalaxyMemberLevel()":"9687f511","registerAction(address,bytes32)":"b7af0690","registerActionForRound(address,bytes32,uint256)":"5801b70f","removeEntityLink(address)":"0070f93d","removeSignalerFromApp(address)":"dc8debb0","resetUserSignalsWithReason(address,string)":"1ee76323","revokeDelegation()":"a4d31805","revokeRole(bytes32,address)":"d547741f","roundsForCumulativeScore()":"664d6e9e","securityMultiplier(uint8)":"3e420ce3","setAppSecurity(bytes32,uint8)":"0e668aac","setBlacklistThreshold(uint256)":"453b8b07","setDecayRate(uint256)":"04e7e0b9","setMaxEntitiesPerPassport(uint256)":"d2a98f8b","setRoundsForCumulativeScore(uint256)":"bb004e93","setSecurityMultiplier(uint8,uint256)":"9f14e0e2","setSignalingThreshold(uint256)":"ebd695c3","setThresholdPoPScore(uint208)":"a26596de","setWhitelistThreshold(uint256)":"97d88868","setX2EarnApps(address)":"40a6fc0b","setXAllocationVoting(address)":"3d47fe94","signalUser(address)":"c60ef11d","signalUserWithReason(address,string)":"ce371f06","signalingThreshold()":"7fd4f54f","thresholdPoPScore()":"315b8bd0","thresholdPoPScoreAtTimepoint(uint48)":"3c8c8f79","toggleCheck(uint8)":"d6cfbe1b","userAppTotalScore(address,bytes32)":"3910d657","userInteractedApps(address)":"a8165f86","userRoundActionCount(address,uint256)":"886d15d2","userRoundActionCountApp(address,uint256,bytes32)":"9352d272","userRoundAppCount(address,uint256)":"d7ce41eb","userRoundScore(address,uint256)":"8919b6e5","userRoundScoreApp(address,uint256,bytes32)":"8d38b50f","userTotalScore(address)":"d0023fcb","userUniqueAppInteraction(address,bytes32)":"428cce44","version()":"54fd4d50","whitelistThreshold()":"b5dadb17"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AlreadyDelegated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AlreadyLinked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"CannotDelegateToSelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"CannotLinkToSelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"DelegatedEntity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxEntitiesPerPassportReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"NotDelegated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"NotLinked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOneLinkAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOneUserAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PassportDelegationFromEntity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PassportDelegationToEntity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"PassportDelegationUnauthorizedUser\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"UnauthorizedUser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"VeBetterPassportUnauthorizedUser\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"checkName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"CheckToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"DelegationCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"DelegationPending\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"DelegationRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"passport\",\"type\":\"address\"}],\"name\":\"LinkCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"passport\",\"type\":\"address\"}],\"name\":\"LinkPending\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"passport\",\"type\":\"address\"}],\"name\":\"LinkRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minimumGalaxyMemberLevel\",\"type\":\"uint256\"}],\"name\":\"MinimumGalaxyMemberLevelSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"passport\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actionScore\",\"type\":\"uint256\"}],\"name\":\"RegisteredAction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"removedBy\",\"type\":\"address\"}],\"name\":\"RemovedUserFromBlacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"passport\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"removedBy\",\"type\":\"address\"}],\"name\":\"RemovedUserFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signaler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"app\",\"type\":\"bytes32\"}],\"name\":\"SignalerAssignedToApp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signaler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"app\",\"type\":\"bytes32\"}],\"name\":\"SignalerRemovedFromApp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"blacklistedBy\",\"type\":\"address\"}],\"name\":\"UserBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signaler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"app\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"UserSignaled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"UserSignalsReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"app\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"UserSignalsResetForApp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"whitelistedBy\",\"type\":\"address\"}],\"name\":\"UserWhitelisted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"acceptDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"acceptEntityLink\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"appRoundActionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"appSecurity\",\"outputs\":[{\"internalType\":\"enum PassportTypes.APP_SECURITY\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"app\",\"type\":\"bytes32\"}],\"name\":\"appTotalSignalsCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"app\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"assignSignalerToApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blacklistThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelOutgoingPendingDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelOutgoingPendingEntityLink\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decayRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegatePassport\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"denyIncomingPendingDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"denyIncomingPendingEntityLink\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"signatureVersion\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lastRound\",\"type\":\"uint256\"}],\"name\":\"getCumulativeScoreWithDecay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getDelegatee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getDelegateeInTimepoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"getDelegator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getDelegatorInTimepoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"passport\",\"type\":\"address\"}],\"name\":\"getEntitiesLinkedToPassport\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumGalaxyMemberLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"getPassportForEntity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getPassportForEntityAtTimepoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getPendingDelegations\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"incoming\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"outgoing\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getPendingLinkings\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"incoming\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"outgoing\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IXAllocationVotingGovernor\",\"name\":\"xAllocationVoting\",\"type\":\"address\"},{\"internalType\":\"contract IX2EarnApps\",\"name\":\"x2EarnApps\",\"type\":\"address\"},{\"internalType\":\"contract IGalaxyMember\",\"name\":\"galaxyMember\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"signalingThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"roundsForCumulativeScore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumGalaxyMemberLevel\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blacklistThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"whitelistThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxEntitiesPerPassport\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayRate\",\"type\":\"uint256\"}],\"internalType\":\"struct PassportTypes.InitializationData\",\"name\":\"data\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"botSignaler\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settingsManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleGranter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"blacklister\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"whitelister\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actionRegistrar\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actionScoreManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resetSignaler\",\"type\":\"address\"}],\"internalType\":\"struct PassportTypes.InitializationRoleData\",\"name\":\"roles\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"isBlacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum PassportTypes.CheckType\",\"name\":\"check\",\"type\":\"uint8\"}],\"name\":\"isCheckEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isDelegatee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"isDelegateeInTimepoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isDelegator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"isDelegatorInTimepoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"isEntityInTimepoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isPassport\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"isPassportInTimepoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isPerson\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"person\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timepoint\",\"type\":\"uint48\"}],\"name\":\"isPersonAtTimepoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"person\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"passport\",\"type\":\"address\"}],\"name\":\"linkEntityToPassport\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"linkEntityToPassportWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxEntitiesPerPassport\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumGalaxyMemberLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"registerAction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"registerActionForRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"removeEntityLink\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"removeSignalerFromApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"resetUserSignalsWithReason\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revokeDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundsForCumulativeScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum PassportTypes.APP_SECURITY\",\"name\":\"security\",\"type\":\"uint8\"}],\"name\":\"securityMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"enum PassportTypes.APP_SECURITY\",\"name\":\"security\",\"type\":\"uint8\"}],\"name\":\"setAppSecurity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"}],\"name\":\"setBlacklistThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decayRate\",\"type\":\"uint256\"}],\"name\":\"setDecayRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxEntities\",\"type\":\"uint256\"}],\"name\":\"setMaxEntitiesPerPassport\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rounds\",\"type\":\"uint256\"}],\"name\":\"setRoundsForCumulativeScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum PassportTypes.APP_SECURITY\",\"name\":\"security\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"multiplier\",\"type\":\"uint256\"}],\"name\":\"setSecurityMultiplier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"name\":\"setSignalingThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint208\",\"name\":\"threshold\",\"type\":\"uint208\"}],\"name\":\"setThresholdPoPScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"}],\"name\":\"setWhitelistThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IX2EarnApps\",\"name\":\"_x2EarnApps\",\"type\":\"address\"}],\"name\":\"setX2EarnApps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IXAllocationVotingGovernor\",\"name\":\"xAllocationVoting\",\"type\":\"address\"}],\"name\":\"setXAllocationVoting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"signalUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"signalUserWithReason\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signalingThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"thresholdPoPScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"timepoint\",\"type\":\"uint48\"}],\"name\":\"thresholdPoPScoreAtTimepoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum PassportTypes.CheckType\",\"name\":\"check\",\"type\":\"uint8\"}],\"name\":\"toggleCheck\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"userAppTotalScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userInteractedApps\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"userRoundActionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"userRoundActionCountApp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"userRoundAppCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"userRoundScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"userRoundScoreApp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userTotalScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"userUniqueAppInteraction\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"whitelistThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"CheckToggled(string,bool)\":{\"params\":{\"checkName\":\"The name of the check being toggled.\",\"enabled\":\"True if the check is enabled, false if disabled.\"}},\"MinimumGalaxyMemberLevelSet(uint256)\":{\"params\":{\"minimumGalaxyMemberLevel\":\"The new minimum galaxy member level.\"}},\"RegisteredAction(address,address,bytes32,uint256,uint256)\":{\"params\":{\"actionScore\":\"- the score of the action\",\"appId\":\"- the app id of the action\",\"passport\":\"- the passport address of the user\",\"round\":\"- the round of the action\",\"user\":\"- the user that registered the action\"}},\"RemovedUserFromBlacklist(address,address)\":{\"params\":{\"removedBy\":\"- the user that removed the user from the blacklist\",\"user\":\"- the user that is removed from the blacklist\"}},\"RemovedUserFromWhitelist(address,address,address)\":{\"params\":{\"removedBy\":\"- the user that removed the user from the whitelist\",\"user\":\"- the user that is removed from the whitelist\"}},\"SignalerAssignedToApp(address,bytes32)\":{\"params\":{\"app\":\"The app that the signaler was associated with.\",\"signaler\":\"The address of the signaler.\"}},\"SignalerRemovedFromApp(address,bytes32)\":{\"params\":{\"app\":\"The app that the signaler was removed from.\",\"signaler\":\"The address of the signaler.\"}},\"UserBlacklisted(address,address)\":{\"params\":{\"blacklistedBy\":\"- the user that blacklisted the user\",\"user\":\"- the user that is blacklisted\"}},\"UserSignaled(address,address,bytes32,string)\":{\"params\":{\"app\":\"The app that the user was signaled for.\",\"reason\":\"The reason for signaling the user.\",\"signaler\":\"The address of the user that signaled the user.\",\"user\":\"The address of the user that was signaled.\"}},\"UserSignalsReset(address,string)\":{\"params\":{\"reason\":\"The reason for resetting the signals.\",\"user\":\"The address of the user that had their signals reset.\"}},\"UserSignalsResetForApp(address,bytes32,string)\":{\"params\":{\"app\":\"The app that the user had their signals reset for.\",\"reason\":\"- The reason for resetting the signals.\",\"user\":\"The address of the user that had their signals reset.\"}},\"UserWhitelisted(address,address)\":{\"params\":{\"user\":\"- the user that is whitelisted\",\"whitelistedBy\":\"- the user that whitelisted the user\"}}},\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"returns\":{\"_0\":\"The clock mode as a string\"}},\"acceptDelegation(address)\":{\"params\":{\"delegator\":\"- the delegator address\"}},\"acceptEntityLink(address)\":{\"params\":{\"entity\":\"- the entity address\"}},\"appRoundActionCount(bytes32,uint256)\":{\"params\":{\"appId\":\"The app ID\",\"round\":\"The round to check\"},\"returns\":{\"_0\":\"The number of actions\"}},\"appSecurity(bytes32)\":{\"params\":{\"appId\":\"The app ID\"},\"returns\":{\"_0\":\"The security level of the app\"}},\"appTotalSignalsCounter(bytes32)\":{\"params\":{\"app\":\"The app ID\"},\"returns\":{\"_0\":\"The total number of signals for the app\"}},\"assignSignalerToApp(bytes32,address)\":{\"params\":{\"app\":\"The app ID\",\"user\":\"The signaler address\"}},\"clock()\":{\"returns\":{\"_0\":\"The current block number\"}},\"delegatePassport(address)\":{\"params\":{\"delegatee\":\"- the delegatee address\"}},\"denyIncomingPendingDelegation(address)\":{\"params\":{\"delegator\":\"- the user who is delegating to me (aka the delegator)\"}},\"denyIncomingPendingEntityLink(address)\":{\"params\":{\"entity\":\"- the entity address\"}},\"getCumulativeScoreWithDecay(address,uint256)\":{\"params\":{\"lastRound\":\"The round to consider as a starting point for the cumulative score\",\"user\":\"The user address\"},\"returns\":{\"_0\":\"The cumulative score of the user\"}},\"getDelegatee(address)\":{\"params\":{\"delegator\":\"The delegator's address\"},\"returns\":{\"_0\":\"The address of the delegatee\"}},\"getDelegateeInTimepoint(address,uint256)\":{\"params\":{\"delegator\":\"The delegator's address\",\"timepoint\":\"The timepoint to query\"}},\"getDelegator(address)\":{\"params\":{\"delegatee\":\"The delegatee's address\"},\"returns\":{\"_0\":\"The address of the delegator\"}},\"getDelegatorInTimepoint(address,uint256)\":{\"params\":{\"delegatee\":\"The delegatee's address\",\"timepoint\":\"The timepoint to query\"}},\"getEntitiesLinkedToPassport(address)\":{\"params\":{\"passport\":\"The passport's address\"},\"returns\":{\"_0\":\"The address of the entity\"}},\"getMinimumGalaxyMemberLevel()\":{\"returns\":{\"_0\":\"The minimum galaxy member level\"}},\"getPassportForEntity(address)\":{\"params\":{\"entity\":\"The entity's address\"},\"returns\":{\"_0\":\"The address of the passport\"}},\"getPassportForEntityAtTimepoint(address,uint256)\":{\"params\":{\"entity\":\"The entity's address\",\"timepoint\":\"The timepoint to query\"}},\"getPendingDelegations(address)\":{\"params\":{\"user\":\"- the user address\"},\"returns\":{\"incoming\":\"The address[] memory of users that are delegating to the user.\",\"outgoing\":\"The address that the user is delegating to.\"}},\"getPendingLinkings(address)\":{\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"incoming\":\"The addresss of users that want to link to the user.\",\"outgoing\":\"The address that the user wants to link to.\"}},\"grantRole(bytes32,address)\":{\"params\":{\"account\":\"The account to grant the role to\",\"role\":\"The role to grant\"}},\"initialize((address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256),(address,address,address,address,address,address,address,address,address,address))\":{\"params\":{\"data\":\"The initialization data for the contract\",\"roles\":\"The roles data for initialization\"}},\"isBlacklisted(address)\":{\"params\":{\"_user\":\"The user to check\"},\"returns\":{\"_0\":\"True if the user is blacklisted\"}},\"isDelegatee(address)\":{\"params\":{\"user\":\"The user address\"}},\"isDelegateeInTimepoint(address,uint256)\":{\"params\":{\"timepoint\":\"The timepoint to query\",\"user\":\"The user address\"}},\"isDelegator(address)\":{\"params\":{\"user\":\"The user address\"}},\"isDelegatorInTimepoint(address,uint256)\":{\"params\":{\"timepoint\":\"The timepoint to query\",\"user\":\"The user address\"}},\"isEntity(address)\":{\"params\":{\"user\":\"The user address\"}},\"isEntityInTimepoint(address,uint256)\":{\"params\":{\"timepoint\":\"The timepoint to query\",\"user\":\"The user address\"}},\"isPassport(address)\":{\"params\":{\"user\":\"The user address\"}},\"isPassportInTimepoint(address,uint256)\":{\"params\":{\"timepoint\":\"The timepoint to query\",\"user\":\"The user address\"}},\"isPerson(address)\":{\"params\":{\"user\":\"The address of the user to check\"},\"returns\":{\"person\":\"True if the user is a valid person\",\"reason\":\"Reason why the user is not a person\"}},\"isPersonAtTimepoint(address,uint48)\":{\"details\":\"Checks if a wallet is a person or not at a specific timepoint based on the participation score, blacklisting, and GM holdings\",\"params\":{\"timepoint\":\"- the timepoint to query\",\"user\":\"- the user address\"},\"returns\":{\"person\":\"- true if the user is a person\",\"reason\":\"- the reason why the user is not a person\"}},\"isWhitelisted(address)\":{\"params\":{\"_user\":\"The user to check\"},\"returns\":{\"_0\":\"True if the user is whitelisted\"}},\"linkEntityToPassport(address)\":{\"details\":\"The passport must accept the delegation\"},\"linkEntityToPassportWithSignature(address,uint256,bytes)\":{\"params\":{\"deadline\":\"The deadline for the signature\",\"entity\":\"The entity's address\",\"signature\":\"The signature of the delegation\"}},\"registerAction(address,bytes32)\":{\"params\":{\"appId\":\"- the app id of the action\",\"user\":\"- the user that performed the action\"}},\"registerActionForRound(address,bytes32,uint256)\":{\"params\":{\"appId\":\"- the app id of the action\",\"round\":\"- the round id of the action\",\"user\":\"- the user that performed the action\"}},\"removeEntityLink(address)\":{\"params\":{\"entity\":\"- the entity address\"}},\"removeSignalerFromApp(address)\":{\"params\":{\"user\":\"The signaler address\"}},\"resetUserSignalsWithReason(address,string)\":{\"params\":{\"reason\":\"The reason for resetting the signals\",\"user\":\"The user address\"}},\"revokeRole(bytes32,address)\":{\"params\":{\"account\":\"The account to revoke the role from\",\"role\":\"The role to revoke\"}},\"roundsForCumulativeScore()\":{\"returns\":{\"_0\":\"The number of rounds\"}},\"securityMultiplier(uint8)\":{\"params\":{\"security\":\"The app security level (LOW, MEDIUM, HIGH)\"},\"returns\":{\"_0\":\"The security multiplier for the app\"}},\"setAppSecurity(bytes32,uint8)\":{\"params\":{\"appId\":\"The app ID\",\"security\":\"The security level\"}},\"setDecayRate(uint256)\":{\"params\":{\"decayRate\":\"The decay rate\"}},\"setMaxEntitiesPerPassport(uint256)\":{\"params\":{\"maxEntities\":\"- the maximum number of entities\"}},\"setRoundsForCumulativeScore(uint256)\":{\"params\":{\"rounds\":\"The number of rounds\"}},\"setSecurityMultiplier(uint8,uint256)\":{\"params\":{\"multiplier\":\"The security multiplier\",\"security\":\"The app security level\"}},\"setSignalingThreshold(uint256)\":{\"params\":{\"threshold\":\"The new signaling threshold\"}},\"setThresholdPoPScore(uint208)\":{\"params\":{\"threshold\":\"The threshold score\"}},\"setX2EarnApps(address)\":{\"params\":{\"_x2EarnApps\":\"The X2EarnApps contract address\"}},\"setXAllocationVoting(address)\":{\"params\":{\"xAllocationVoting\":\"The xAllocationVoting contract address\"}},\"signalUser(address)\":{\"params\":{\"_user\":\"The user to signal\"}},\"signalUserWithReason(address,string)\":{\"params\":{\"_user\":\"The user to signal\",\"reason\":\"The reason for the signal\"}},\"signalingThreshold()\":{\"returns\":{\"_0\":\"The signaling threshold\"}},\"thresholdPoPScore()\":{\"returns\":{\"_0\":\"The threshold participation score\"}},\"userAppTotalScore(address,bytes32)\":{\"params\":{\"appId\":\"The app ID\",\"user\":\"The user address\"},\"returns\":{\"_0\":\"The total score of the user for the app\"}},\"userRoundActionCount(address,uint256)\":{\"params\":{\"round\":\"The round to check\",\"user\":\"The user address\"},\"returns\":{\"_0\":\"The number of registered actions for that user and round\"}},\"userRoundActionCountApp(address,uint256,bytes32)\":{\"params\":{\"appId\":\"The app ID\",\"round\":\"The round to check\",\"user\":\"The user address\"},\"returns\":{\"_0\":\"The number of registered actions for that user, app, and round\"}},\"userRoundAppCount(address,uint256)\":{\"params\":{\"round\":\"The round to check\",\"user\":\"The user address\"},\"returns\":{\"_0\":\"The number of distinct apps\"}},\"userRoundScore(address,uint256)\":{\"params\":{\"round\":\"The round to check\",\"user\":\"The user address\"},\"returns\":{\"_0\":\"The round score of the user\"}},\"userRoundScoreApp(address,uint256,bytes32)\":{\"params\":{\"appId\":\"The app ID\",\"round\":\"The round to check\",\"user\":\"The user address\"},\"returns\":{\"_0\":\"The score of the user for the app in the round\"}},\"userTotalScore(address)\":{\"params\":{\"user\":\"The user address\"},\"returns\":{\"_0\":\"The total score of the user\"}},\"version()\":{\"returns\":{\"_0\":\"The version of the contract as a string\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyDelegated(address)\":[{\"notice\":\"Emitted when a user tries to delegate personhood to a user that has already been delegated to.\"}],\"AlreadyLinked(address)\":[{\"notice\":\"Emitted when an an entity is linked to a passport\"}],\"CannotDelegateToSelf(address)\":[{\"notice\":\"Emitted when a user tries to delegate passport to themselves.\"}],\"CannotLinkToSelf(address)\":[{\"notice\":\"Emitted when a user tries to delegate personhood to themselves.\"}],\"DelegatedEntity(address)\":[{\"notice\":\"Thrown when a user tries to link a entity to a passport that is already delegated.\"}],\"InvalidSignature()\":[{\"notice\":\"Emitted when a user tries to sign a message with an invalid signature\"}],\"MaxEntitiesPerPassportReached()\":[{\"notice\":\"Thrown when a user tries to link a entity to a passport that has reached the maximum number of entities.\"}],\"NotDelegated(address)\":[{\"notice\":\"Emitted when a user tries to revoke a delegation that does not exist.\"}],\"NotLinked(address)\":[{\"notice\":\"Thrown when a user tries to link a entity to a passport that is already linked to another entity.\"}],\"OnlyOneLinkAllowed()\":[{\"notice\":\"Emitted when a user tries to delegate personhood to more than one user.\"}],\"OnlyOneUserAllowed()\":[{\"notice\":\"Emitted when a user tries to delegate passport to more than one user.\"}],\"PassportDelegationFromEntity()\":[{\"notice\":\"Emiited when a user tries to delegate a passport to another passport or entity.\"}],\"PassportDelegationToEntity()\":[{\"notice\":\"Emitted when a user tries to delegate a passport to another entity.\"}],\"PassportDelegationUnauthorizedUser(address)\":[{\"notice\":\"Emitted when a user does not have permission to delegate passport.\"}],\"SignatureExpired()\":[{\"notice\":\"Emitted when a user tries to sign a message with an expired signature\"}],\"UnauthorizedUser(address)\":[{\"notice\":\"Emitted when a user does not have permission to delegate personhood.\"}],\"VeBetterPassportUnauthorizedUser(address)\":[{\"notice\":\"Emitted when a user tries to call a function that they are not authorized to call.\"}]},\"events\":{\"CheckToggled(string,bool)\":{\"notice\":\"Emitted when a specific check is toggled.\"},\"DelegationCreated(address,address)\":{\"notice\":\"Emitted when a user delegates passport to another user.\"},\"DelegationPending(address,address)\":{\"notice\":\"Emitted when a user delegates passport to another user pending acceptance.\"},\"DelegationRevoked(address,address)\":{\"notice\":\"Emitted when a user revokes the delegation of passport to another user.\"},\"LinkCreated(address,address)\":{\"notice\":\"Emitted when a user delegates personhood to another user.\"},\"LinkPending(address,address)\":{\"notice\":\"Emitted when a user delegates personhood to another user pending acceptance.\"},\"LinkRemoved(address,address)\":{\"notice\":\"Emitted when a user revokes the delegation of personhood to another user.\"},\"MinimumGalaxyMemberLevelSet(uint256)\":{\"notice\":\"Emitted when the minimum galaxy member level is set.\"},\"RegisteredAction(address,address,bytes32,uint256,uint256)\":{\"notice\":\"Emitted when a user registers an action\"},\"RemovedUserFromBlacklist(address,address)\":{\"notice\":\"Emitted when a user is removed from the blacklist\"},\"RemovedUserFromWhitelist(address,address,address)\":{\"notice\":\"Emitted when a user is removed from the whitelist\"},\"SignalerAssignedToApp(address,bytes32)\":{\"notice\":\"Emited when an address is associated with an app.\"},\"SignalerRemovedFromApp(address,bytes32)\":{\"notice\":\"Emitted when an address is removed from an app.\"},\"UserBlacklisted(address,address)\":{\"notice\":\"Emitted when a user is blacklisted\"},\"UserSignaled(address,address,bytes32,string)\":{\"notice\":\"Emitted when a user is signaled.\"},\"UserSignalsReset(address,string)\":{\"notice\":\"Emitted when a user's signals are reset.\"},\"UserSignalsResetForApp(address,bytes32,string)\":{\"notice\":\"Emitted when a user's signals are reset for an app.\"},\"UserWhitelisted(address,address)\":{\"notice\":\"Emitted when a user is whitelisted\"}},\"kind\":\"user\",\"methods\":{\"CLOCK_MODE()\":{\"notice\":\"Returns the clock mode for the contract\"},\"acceptDelegation(address)\":{\"notice\":\"Allow the delegatee to accept the delegation\"},\"acceptEntityLink(address)\":{\"notice\":\"Allow the passport to accept the delegation\"},\"appRoundActionCount(bytes32,uint256)\":{\"notice\":\"Gets the number of actions distributed by an app in a round\"},\"appSecurity(bytes32)\":{\"notice\":\"Gets the security level of an app\"},\"appTotalSignalsCounter(bytes32)\":{\"notice\":\"Gets the total number of signals for an app\"},\"assignSignalerToApp(bytes32,address)\":{\"notice\":\"Assigns a signaler to an app\"},\"blacklistThreshold()\":{\"notice\":\"Gets the threshold percentage of blacklisted entities for a passport to be considered blacklisted\"},\"cancelOutgoingPendingDelegation()\":{\"notice\":\"Allows a delegator to cancel (and remove) the outgoing pending delegation.\"},\"cancelOutgoingPendingEntityLink()\":{\"notice\":\"Cancel an outgoing pending entity link from the sender.\"},\"clock()\":{\"notice\":\"Returns the current block number\"},\"decayRate()\":{\"notice\":\"Gets the decay rate for the cumulative score\"},\"delegatePassport(address)\":{\"notice\":\"Delegate the personhood to another address\"},\"denyIncomingPendingDelegation(address)\":{\"notice\":\"Allows a delegator to deny (and remove) an incoming pending delegation.\"},\"denyIncomingPendingEntityLink(address)\":{\"notice\":\"Deny an incoming pending entity link to the sender's passport.\"},\"eip712Domain()\":{\"notice\":\"Returns the domain for EIP-712 signature\"},\"getCumulativeScoreWithDecay(address,uint256)\":{\"notice\":\"Gets the cumulative score of a user based on exponential decay for a number of last rounds\"},\"getDelegatee(address)\":{\"notice\":\"Returns the delegatee address for a delegator\"},\"getDelegateeInTimepoint(address,uint256)\":{\"notice\":\"Returns the delegatee address for a delegator at a specific timepoint\"},\"getDelegator(address)\":{\"notice\":\"Returns the delegator address for a delegatee\"},\"getDelegatorInTimepoint(address,uint256)\":{\"notice\":\"Returns the delegator address for a delegatee at a specific timepoint\"},\"getEntitiesLinkedToPassport(address)\":{\"notice\":\"Returns the entity address for a passport\"},\"getMinimumGalaxyMemberLevel()\":{\"notice\":\"Gets the minimum galaxy member level required\"},\"getPassportForEntity(address)\":{\"notice\":\"Returns the passport address for a entity\"},\"getPassportForEntityAtTimepoint(address,uint256)\":{\"notice\":\"Returns the passport address for a entity at a specific timepoint\"},\"getPendingDelegations(address)\":{\"notice\":\"Returns the incoming and outgoing pending delegations for a user\"},\"getPendingLinkings(address)\":{\"notice\":\"Returns the pending links for a user (both incoming and outgoing)\"},\"grantRole(bytes32,address)\":{\"notice\":\"Grants a role to a specific account\"},\"initialize((address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256),(address,address,address,address,address,address,address,address,address,address))\":{\"notice\":\"Initializes the contract with the required data and roles\"},\"isBlacklisted(address)\":{\"notice\":\"Checks if a user is blacklisted\"},\"isCheckEnabled(uint8)\":{\"notice\":\"Returns if the specific check is enabled\"},\"isDelegatee(address)\":{\"notice\":\"Returns if a user is a delegatee\"},\"isDelegateeInTimepoint(address,uint256)\":{\"notice\":\"Returns if a user is a delegatee at a specific timepoint\"},\"isDelegator(address)\":{\"notice\":\"Returns if a user is a delegator\"},\"isDelegatorInTimepoint(address,uint256)\":{\"notice\":\"Returns if a user is a delegator at a specific timepoint\"},\"isEntity(address)\":{\"notice\":\"Returns if a user is a entity\"},\"isEntityInTimepoint(address,uint256)\":{\"notice\":\"Returns if a user is a entity at a specific timepoint\"},\"isPassport(address)\":{\"notice\":\"Returns if a user is a passport\"},\"isPassportInTimepoint(address,uint256)\":{\"notice\":\"Returns if a user is a passport at a specific timepoint\"},\"isPerson(address)\":{\"notice\":\"Checks if a user is a person based on the participation score and other criteria\"},\"isPersonAtTimepoint(address,uint48)\":{\"notice\":\"Checks if a user is a person\"},\"isWhitelisted(address)\":{\"notice\":\"Checks if a user is whitelisted\"},\"linkEntityToPassport(address)\":{\"notice\":\"Link an account (which will become an entity) to a passport (an address that is not an enitity) After linking, the scores of the enitity will be stored to the linked account (passport) Balance is not transferred and the entity will not be able to vote after linking.\"},\"linkEntityToPassportWithSignature(address,uint256,bytes)\":{\"notice\":\"Link an account (which will become an entity) to a passport (an address that is not an enitity) After linking, the scores of the enitity will be stored to the linked account (passport) Balance is not transferred and the entity will not be able to vote after linking.\"},\"maxEntitiesPerPassport()\":{\"notice\":\"Returns the maximum number of entities per passport\"},\"minimumGalaxyMemberLevel()\":{\"notice\":\"Gets the minimum galaxy member level to be considered a person\"},\"registerAction(address,bytes32)\":{\"notice\":\"Registers an action for a user\"},\"registerActionForRound(address,bytes32,uint256)\":{\"notice\":\"Registers an action for a user in a round\"},\"removeEntityLink(address)\":{\"notice\":\"Remove the linked enitity from the passport\"},\"removeSignalerFromApp(address)\":{\"notice\":\"Removes a signaler from an app\"},\"resetUserSignalsWithReason(address,string)\":{\"notice\":\"Resets the signals of a user with a given reason\"},\"revokeDelegation()\":{\"notice\":\"Revoke the delegation (can be done by the delegator or the delegatee)\"},\"revokeRole(bytes32,address)\":{\"notice\":\"Revokes a role from a specific account\"},\"roundsForCumulativeScore()\":{\"notice\":\"Gets the number of rounds to be considered for the cumulative score\"},\"securityMultiplier(uint8)\":{\"notice\":\"Gets the security multiplier for an app security\"},\"setAppSecurity(bytes32,uint8)\":{\"notice\":\"Sets the app security level for a specific app\"},\"setBlacklistThreshold(uint256)\":{\"notice\":\"Sets the threshold percentage of blacklisted entities for a passport to be considered blacklisted\"},\"setDecayRate(uint256)\":{\"notice\":\"Sets the decay rate for exponential decay scoring\"},\"setMaxEntitiesPerPassport(uint256)\":{\"notice\":\"Sets the maximum number of entities that can be linked to a passport\"},\"setRoundsForCumulativeScore(uint256)\":{\"notice\":\"Sets the number of rounds to consider for cumulative score calculation\"},\"setSecurityMultiplier(uint8,uint256)\":{\"notice\":\"Sets the security multiplier for an app security level\"},\"setSignalingThreshold(uint256)\":{\"notice\":\"Sets the signaling threshold\"},\"setThresholdPoPScore(uint208)\":{\"notice\":\"Sets the threshold score for a user to be considered a person\"},\"setWhitelistThreshold(uint256)\":{\"notice\":\"Sets the threshold percentage of whitelisted entities for a passport to be considered whitelisted\"},\"setX2EarnApps(address)\":{\"notice\":\"Sets the X2EarnApps contract address\"},\"setXAllocationVoting(address)\":{\"notice\":\"Sets the xAllocationVoting contract address\"},\"signalUser(address)\":{\"notice\":\"Signals a user\"},\"signalUserWithReason(address,string)\":{\"notice\":\"Signals a user with a reason\"},\"signalingThreshold()\":{\"notice\":\"Returns the signaling threshold\"},\"thresholdPoPScore()\":{\"notice\":\"Gets the threshold score for a user to be considered a person\"},\"thresholdPoPScoreAtTimepoint(uint48)\":{\"notice\":\"Gets the threshold score for a user to be considered a person at a specific timepoint\"},\"toggleCheck(uint8)\":{\"notice\":\"Toggles the specified check\"},\"userAppTotalScore(address,bytes32)\":{\"notice\":\"Gets the total score of a user for an app\"},\"userInteractedApps(address)\":{\"notice\":\"Gets the list of apps a user has interacted with\"},\"userRoundActionCount(address,uint256)\":{\"notice\":\"Gets how many actions a user registered in a specific round\"},\"userRoundActionCountApp(address,uint256,bytes32)\":{\"notice\":\"Gets how many actions a user registered for an app in a specific round\"},\"userRoundAppCount(address,uint256)\":{\"notice\":\"Gets the number of distinct apps a user has interacted with in a round\"},\"userRoundScore(address,uint256)\":{\"notice\":\"Gets the round score of a user\"},\"userRoundScoreApp(address,uint256,bytes32)\":{\"notice\":\"Gets the score of a user for an app in a specific round\"},\"userTotalScore(address)\":{\"notice\":\"Gets the total score of a user\"},\"userUniqueAppInteraction(address,bytes32)\":{\"notice\":\"Checks if a user has ever interacted with a specific app\"},\"version()\":{\"notice\":\"Gets the version of the contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IVeBetterPassport.sol\":\"IVeBetterPassport\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]},\"contracts/interfaces/IVeBetterPassport.sol\":{\"keccak256\":\"0x1094bcf1a7f61ad26e5d49a6efd7302419a1d2475fa0723f62f24757c7a1655c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a25e330da50daf45f56fe4c496da2ea6695fb4de491c112980deb385f0f3ac\",\"dweb:/ipfs/QmaPE4T6UR91WxnGkqGp85d6YB9UGQceGGtSTCres1Y2Ut\"]},\"contracts/interfaces/IX2EarnApps.sol\":{\"keccak256\":\"0xf476e628b4037c16d44c833c9f0f4db9a3abc48f60ad4654574bce31ca9c759c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8c183bbd394bb708a637dca7626f6beb7a78e5111674e3ccea6f98140580172\",\"dweb:/ipfs/Qmar8Za1an3ZGP6B5wcCZSmY6g6MKzPcGeVYetRhiPFm7e\"]},\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]},\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]},\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]},\"contracts/ve-better-passport/libraries/PassportTypes.sol\":{\"keccak256\":\"0x0250b067d550cd85bd77278c705bd8d28db1bce6829e084cbe65b74353483ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://176022bfb06a2c03efe880a13a97cea66e25e9b31fe164936b5845a57a299be8\",\"dweb:/ipfs/QmS2kQnhxdjkrnNGfFyBdtThpmvyT2B7tF1owW2vF2hmbz\"]},\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":{\"keccak256\":\"0x1830b8438f0b6b516cc22ebbfcc7cff9db478c9a2a44fedf5926e63bd77d5aa7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aad5b08dbb03f727b8b74b10d1d00e796ece111f3aa23ef48ad27f54dd3f7b58\",\"dweb:/ipfs/QmfZZoP44EZ3Ts81BgvRuG9AXuTAxCqCbFqHoKEspFsPSa\"]},\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":{\"keccak256\":\"0x8a44d64c1e998dad0d21b928c499b7b624623cb26a30df541c493641191f6091\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751749980251dd9cda3e77654fafa229dab8a9bc74992dee9e8b3adee9595b72\",\"dweb:/ipfs/QmSHViJSMCbr25KBPap8VB38SjrLojRTnC3JUDCvf3rRBB\"]}},\"version\":1}"}},"contracts/interfaces/IX2EarnApps.sol":{"IX2EarnApps":{"abi":[{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"CooldownNotExpired","type":"error"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"CreatorNFTAlreadyUsed","type":"error"},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"},{"internalType":"uint48","name":"clock","type":"uint48"}],"name":"ERC5805FutureLookup","type":"error"},{"inputs":[],"name":"ERC6372InconsistentClock","type":"error"},{"inputs":[],"name":"EndorsementsPaused","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"current","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ExceedsMaxPointsPerApp","type":"error"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ExceedsMaxPointsPerNode","type":"error"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientAvailablePoints","type":"error"},{"inputs":[],"name":"InvalidPointsAmount","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"NodeManagementXAppAlreadyIncluded","type":"error"},{"inputs":[],"name":"NodeNotAllowedToEndorse","type":"error"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"X2EarnAlreadyCreator","type":"error"},{"inputs":[],"name":"X2EarnAlreadyEndorser","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnAppAlreadyEndorsed","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnAppAlreadyExists","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnAppBlacklisted","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"X2EarnInvalidAddress","type":"error"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"X2EarnInvalidAllocationPercentage","type":"error"},{"inputs":[],"name":"X2EarnInvalidStartIndex","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnMaxCreatorsReached","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnMaxManagersReached","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnMaxModeratorsReached","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnMaxRewardDistributorsReached","type":"error"},{"inputs":[],"name":"X2EarnNodeCooldownActive","type":"error"},{"inputs":[],"name":"X2EarnNonEndorser","type":"error"},{"inputs":[],"name":"X2EarnNonNodeHolder","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnNonexistentApp","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"creator","type":"address"}],"name":"X2EarnNonexistentCreator","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"moderator","type":"address"}],"name":"X2EarnNonexistentModerator","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"distributorAddress","type":"address"}],"name":"X2EarnNonexistentRewardDistributor","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"X2EarnUnauthorizedUser","type":"error"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"X2EarnUnverifiedCreator","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"bool","name":"appAvailableForAllocationVoting","type":"bool"}],"name":"AppAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AppAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"nodeId","type":"uint256"},{"indexed":false,"internalType":"address","name":"endorser","type":"address"},{"indexed":false,"internalType":"uint256","name":"points","type":"uint256"}],"name":"AppEndorsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"endorsed","type":"bool"}],"name":"AppEndorsementStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"string","name":"oldMetadataURI","type":"string"},{"indexed":false,"internalType":"string","name":"newMetadataURI","type":"string"}],"name":"AppMetadataURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AppSelfBlacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"nodeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"points","type":"uint256"}],"name":"AppUnendorsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"uint48","name":"startBlock","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"endBlock","type":"uint48"}],"name":"AppUnendorsedGracePeriodStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"oldBaseURI","type":"string"},{"indexed":false,"internalType":"string","name":"newBaseURI","type":"string"}],"name":"BaseURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCooldownPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCooldownPeriod","type":"uint256"}],"name":"CooldownPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"creatorAddress","type":"address"}],"name":"CreatorAddedToApp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"creator","type":"address"}],"name":"CreatorRemovedFromApp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"EndorsementScoreThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"EndorsementsPausedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldGracePeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newGracePeriod","type":"uint256"}],"name":"GracePeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"MaxPointsPerAppUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"MaxPointsPerNodePerAppUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"moderator","type":"address"}],"name":"ModeratorAddedToApp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"moderator","type":"address"}],"name":"ModeratorRemovedFromApp","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"strength","type":"uint256"},{"internalType":"uint256","name":"thunder","type":"uint256"},{"internalType":"uint256","name":"mjolnir","type":"uint256"},{"internalType":"uint256","name":"veThorX","type":"uint256"},{"internalType":"uint256","name":"strengthX","type":"uint256"},{"internalType":"uint256","name":"thunderX","type":"uint256"},{"internalType":"uint256","name":"mjolnirX","type":"uint256"}],"indexed":true,"internalType":"struct EndorsementUtils.NodeStrengthScores","name":"nodeStrengthScores","type":"tuple"}],"name":"NodeStrengthScoresUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"distributorAddress","type":"address"}],"name":"RewardDistributorAddedToApp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"distributorAddress","type":"address"}],"name":"RewardDistributorRemovedFromApp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"oldPercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"TeamAllocationPercentageUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"oldTeamWalletAddress","type":"address"},{"indexed":false,"internalType":"address","name":"newTeamWalletAddress","type":"address"}],"name":"TeamWalletAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"isAvailable","type":"bool"}],"name":"VotingEligibilityUpdated","type":"event"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"moderator","type":"address"}],"name":"addAppModerator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"creator","type":"address"}],"name":"addCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"distributorAddress","type":"address"}],"name":"addRewardDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allEligibleApps","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"app","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"teamWalletAddress","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"},{"internalType":"uint256","name":"createdAtTimestamp","type":"uint256"},{"internalType":"bool","name":"appAvailableForAllocationVoting","type":"bool"}],"internalType":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"appAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"appCreators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"appExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apps","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"teamWalletAddress","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"},{"internalType":"uint256","name":"createdAtTimestamp","type":"uint256"},{"internalType":"bool","name":"appAvailableForAllocationVoting","type":"bool"}],"internalType":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"canUnendorse","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"checkEndorsement","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"creatorApps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"enableRewardsPoolForNewApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"}],"name":"endorseApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endorsementScoreThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endorsementsPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"getEndorserNodes","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"getEndorsers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeActiveEndorsements","outputs":[{"components":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"endorsedAtRound","type":"uint256"}],"internalType":"struct X2EarnAppsStorageTypes.Endorsement[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeAvailablePoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeEndorsementScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodePointsInfo","outputs":[{"components":[{"internalType":"uint256","name":"totalPoints","type":"uint256"},{"internalType":"uint256","name":"usedPoints","type":"uint256"},{"internalType":"uint256","name":"availablePoints","type":"uint256"},{"internalType":"uint256","name":"lockedPoints","type":"uint256"}],"internalType":"struct X2EarnAppsStorageTypes.NodePointsInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"getScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"getScoreAtTimepoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUsersEndorsementScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gracePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"hashAppName","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxPointsPerNodePerApp","type":"uint256"},{"internalType":"uint256","name":"_maxPointsPerApp","type":"uint256"}],"name":"initializeV8","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"isAppAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"isAppUnendorsed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"isCreatorOfAnyApp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"isEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"distributorAddress","type":"address"}],"name":"isRewardDistributor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"markMigrationComplete","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxPointsPerApp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPointsPerNodePerApp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"nodeLevel","type":"uint8"}],"name":"nodeLevelEndorsementScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseEndorsements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"creator","type":"address"}],"name":"removeAppCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"moderator","type":"address"}],"name":"removeAppModerator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_appId","type":"bytes32"},{"internalType":"uint256","name":"_nodeId","type":"uint256"}],"name":"removeNodeEndorsement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"distributorAddress","type":"address"}],"name":"removeRewardDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_appId","type":"bytes32"}],"name":"removeXAppSubmission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"}],"name":"seedEndorsement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_appId","type":"bytes32"}],"name":"selfBlacklistApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"admin","type":"address"}],"name":"setAppAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxPoints","type":"uint256"}],"name":"setMaxPointsPerApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxPoints","type":"uint256"}],"name":"setMaxPointsPerNodePerApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setTeamAllocationPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_appId","type":"bytes32"},{"internalType":"bool","name":"_isEligible","type":"bool"}],"name":"setVotingEligibility","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamWalletAddress","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"string","name":"_appName","type":"string"},{"internalType":"string","name":"_appMetadataURI","type":"string"}],"name":"submitApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"teamAllocationPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"teamWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"}],"name":"unendorseApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unendorsedAppIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unendorsedApps","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"teamWalletAddress","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"},{"internalType":"uint256","name":"createdAtTimestamp","type":"uint256"},{"internalType":"bool","name":"appAvailableForAllocationVoting","type":"bool"}],"internalType":"struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpauseEndorsements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"string","name":"metadataURI","type":"string"}],"name":"updateAppMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCooldownPeriod","type":"uint256"}],"name":"updateCooldownPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_scoreThreshold","type":"uint256"}],"name":"updateEndorsementScoreThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint48","name":"_newGracePeriod","type":"uint48"}],"name":"updateGracePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"strength","type":"uint256"},{"internalType":"uint256","name":"thunder","type":"uint256"},{"internalType":"uint256","name":"mjolnir","type":"uint256"},{"internalType":"uint256","name":"veThorX","type":"uint256"},{"internalType":"uint256","name":"strengthX","type":"uint256"},{"internalType":"uint256","name":"thunderX","type":"uint256"},{"internalType":"uint256","name":"mjolnirX","type":"uint256"}],"internalType":"struct EndorsementUtils.NodeStrengthScores","name":"_nodeStrengthScores","type":"tuple"}],"name":"updateNodeEndorsementScores","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"address","name":"newTeamWalletAddress","type":"address"}],"name":"updateTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addAppModerator(bytes32,address)":"0cb212e1","addCreator(bytes32,address)":"993f8d36","addRewardDistributor(bytes32,address)":"83802165","allEligibleApps()":"c04cff19","app(bytes32)":"785d6e18","appAdmin(bytes32)":"2c35f428","appCreators(bytes32)":"b747e2e9","appExists(bytes32)":"607bfb24","apps()":"f7703379","baseURI()":"6c0360eb","canUnendorse(uint256,bytes32)":"ccd4baca","checkEndorsement(bytes32)":"a099a192","cooldownPeriod()":"04646a49","creatorApps(address)":"6912f1f6","enableRewardsPoolForNewApp(bytes32)":"1a25071f","endorseApp(bytes32,uint256,uint256)":"109eea01","endorsementScoreThreshold()":"f1a962ac","endorsementsPaused()":"b90a30ea","getEndorserNodes(bytes32)":"5cfdd470","getEndorsers(bytes32)":"44bb58f7","getNodeActiveEndorsements(uint256)":"44532be2","getNodeAvailablePoints(uint256)":"e9f9739d","getNodeEndorsementScore(uint256)":"42c89f52","getNodePointsInfo(uint256)":"5dd3a4f1","getScore(bytes32)":"7ba53285","getScoreAtTimepoint(bytes32,uint256)":"9ab17c9b","getUsersEndorsementScore(address)":"c996c624","gracePeriod()":"a06db7dc","hashAppName(string)":"34b0e6b3","initializeV8(uint256,uint256)":"27d91b0e","isAppAdmin(bytes32,address)":"8e3a29dc","isAppUnendorsed(bytes32)":"c7b24f30","isBlacklisted(bytes32)":"6b623bbe","isCreatorOfAnyApp(address)":"bcbd410c","isEligible(bytes32,uint256)":"d2570b94","isRewardDistributor(bytes32,address)":"b58a7547","markMigrationComplete()":"c296b1d2","maxPointsPerApp()":"5cbc2ffb","maxPointsPerNodePerApp()":"4a0c4a42","nodeLevelEndorsementScore(uint8)":"acdb9f05","pauseEndorsements()":"9294b7a4","removeAppCreator(bytes32,address)":"9fa949ad","removeAppModerator(bytes32,address)":"2589a49d","removeNodeEndorsement(bytes32,uint256)":"e123cd0c","removeRewardDistributor(bytes32,address)":"a06bb129","removeXAppSubmission(bytes32)":"0ab12e14","seedEndorsement(bytes32,uint256,uint256)":"ee9419cf","selfBlacklistApp(bytes32)":"76cd2fa5","setAppAdmin(bytes32,address)":"833d29b4","setMaxPointsPerApp(uint256)":"51d2a6e3","setMaxPointsPerNodePerApp(uint256)":"6fb44f5f","setTeamAllocationPercentage(bytes32,uint256)":"54933bf0","setVotingEligibility(bytes32,bool)":"0765ef60","submitApp(address,address,string,string)":"169efd47","teamAllocationPercentage(bytes32)":"826b9a4e","teamWalletAddress(bytes32)":"1772503b","unendorseApp(bytes32,uint256,uint256)":"6939cec8","unendorsedAppIds()":"d6418b8a","unendorsedApps()":"03bc087f","unpauseEndorsements()":"1d6dbc78","updateAppMetadata(bytes32,string)":"e9a1fee4","updateCooldownPeriod(uint256)":"861f6bfd","updateEndorsementScoreThreshold(uint256)":"4f77fe12","updateGracePeriod(uint48)":"0bf4f68e","updateNodeEndorsementScores((uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"0e1fb61a","updateTeamWalletAddress(bytes32,address)":"6165267c","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"CooldownNotExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"CreatorNFTAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"name\":\"ERC5805FutureLookup\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC6372InconsistentClock\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EndorsementsPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"current\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxPointsPerApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxPointsPerNode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientAvailablePoints\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPointsAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"NodeManagementXAppAlreadyIncluded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NodeNotAllowedToEndorse\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"X2EarnAlreadyCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"X2EarnAlreadyEndorser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnAppAlreadyEndorsed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnAppAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnAppBlacklisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"X2EarnInvalidAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"X2EarnInvalidAllocationPercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"X2EarnInvalidStartIndex\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnMaxCreatorsReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnMaxManagersReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnMaxModeratorsReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnMaxRewardDistributorsReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"X2EarnNodeCooldownActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"X2EarnNonEndorser\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"X2EarnNonNodeHolder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnNonexistentApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"X2EarnNonexistentCreator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"moderator\",\"type\":\"address\"}],\"name\":\"X2EarnNonexistentModerator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"distributorAddress\",\"type\":\"address\"}],\"name\":\"X2EarnNonexistentRewardDistributor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"X2EarnUnauthorizedUser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"X2EarnUnverifiedCreator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"appAvailableForAllocationVoting\",\"type\":\"bool\"}],\"name\":\"AppAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AppAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"endorser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"name\":\"AppEndorsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"endorsed\",\"type\":\"bool\"}],\"name\":\"AppEndorsementStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"oldMetadataURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newMetadataURI\",\"type\":\"string\"}],\"name\":\"AppMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AppSelfBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"name\":\"AppUnendorsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"startBlock\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"endBlock\",\"type\":\"uint48\"}],\"name\":\"AppUnendorsedGracePeriodStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"oldBaseURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newBaseURI\",\"type\":\"string\"}],\"name\":\"BaseURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isBlacklisted\",\"type\":\"bool\"}],\"name\":\"BlacklistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldCooldownPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCooldownPeriod\",\"type\":\"uint256\"}],\"name\":\"CooldownPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creatorAddress\",\"type\":\"address\"}],\"name\":\"CreatorAddedToApp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"CreatorRemovedFromApp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldThreshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"EndorsementScoreThresholdUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"EndorsementsPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldGracePeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newGracePeriod\",\"type\":\"uint256\"}],\"name\":\"GracePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMax\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMax\",\"type\":\"uint256\"}],\"name\":\"MaxPointsPerAppUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMax\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMax\",\"type\":\"uint256\"}],\"name\":\"MaxPointsPerNodePerAppUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moderator\",\"type\":\"address\"}],\"name\":\"ModeratorAddedToApp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moderator\",\"type\":\"address\"}],\"name\":\"ModeratorRemovedFromApp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"strength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thunder\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mjolnir\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"veThorX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"strengthX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thunderX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mjolnirX\",\"type\":\"uint256\"}],\"indexed\":true,\"internalType\":\"struct EndorsementUtils.NodeStrengthScores\",\"name\":\"nodeStrengthScores\",\"type\":\"tuple\"}],\"name\":\"NodeStrengthScoresUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"distributorAddress\",\"type\":\"address\"}],\"name\":\"RewardDistributorAddedToApp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"distributorAddress\",\"type\":\"address\"}],\"name\":\"RewardDistributorRemovedFromApp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldPercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPercentage\",\"type\":\"uint256\"}],\"name\":\"TeamAllocationPercentageUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldTeamWalletAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTeamWalletAddress\",\"type\":\"address\"}],\"name\":\"TeamWalletAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isAvailable\",\"type\":\"bool\"}],\"name\":\"VotingEligibilityUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"moderator\",\"type\":\"address\"}],\"name\":\"addAppModerator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"addCreator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"distributorAddress\",\"type\":\"address\"}],\"name\":\"addRewardDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allEligibleApps\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"app\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"teamWalletAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"createdAtTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"appAvailableForAllocationVoting\",\"type\":\"bool\"}],\"internalType\":\"struct X2EarnAppsDataTypes.AppWithDetailsReturnType\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"appAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"appCreators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"appExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"apps\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"teamWalletAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"createdAtTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"appAvailableForAllocationVoting\",\"type\":\"bool\"}],\"internalType\":\"struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"canUnendorse\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"checkEndorsement\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cooldownPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"creatorApps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"enableRewardsPoolForNewApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"name\":\"endorseApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endorsementScoreThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endorsementsPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"getEndorserNodes\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"getEndorsers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeActiveEndorsements\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endorsedAtRound\",\"type\":\"uint256\"}],\"internalType\":\"struct X2EarnAppsStorageTypes.Endorsement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeAvailablePoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeEndorsementScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodePointsInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalPoints\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usedPoints\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availablePoints\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockedPoints\",\"type\":\"uint256\"}],\"internalType\":\"struct X2EarnAppsStorageTypes.NodePointsInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"getScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getScoreAtTimepoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUsersEndorsementScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gracePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"hashAppName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxPointsPerNodePerApp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPointsPerApp\",\"type\":\"uint256\"}],\"name\":\"initializeV8\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAppAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"isAppUnendorsed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"isBlacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"isCreatorOfAnyApp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"isEligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"distributorAddress\",\"type\":\"address\"}],\"name\":\"isRewardDistributor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"markMigrationComplete\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPointsPerApp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPointsPerNodePerApp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nodeLevel\",\"type\":\"uint8\"}],\"name\":\"nodeLevelEndorsementScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseEndorsements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"removeAppCreator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"moderator\",\"type\":\"address\"}],\"name\":\"removeAppModerator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_nodeId\",\"type\":\"uint256\"}],\"name\":\"removeNodeEndorsement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"distributorAddress\",\"type\":\"address\"}],\"name\":\"removeRewardDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_appId\",\"type\":\"bytes32\"}],\"name\":\"removeXAppSubmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"name\":\"seedEndorsement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_appId\",\"type\":\"bytes32\"}],\"name\":\"selfBlacklistApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"setAppAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxPoints\",\"type\":\"uint256\"}],\"name\":\"setMaxPointsPerApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxPoints\",\"type\":\"uint256\"}],\"name\":\"setMaxPointsPerNodePerApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"setTeamAllocationPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_appId\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_isEligible\",\"type\":\"bool\"}],\"name\":\"setVotingEligibility\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_teamWalletAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_appName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_appMetadataURI\",\"type\":\"string\"}],\"name\":\"submitApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"teamAllocationPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"teamWalletAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"name\":\"unendorseApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unendorsedAppIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unendorsedApps\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"teamWalletAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"createdAtTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"appAvailableForAllocationVoting\",\"type\":\"bool\"}],\"internalType\":\"struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseEndorsements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateAppMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newCooldownPeriod\",\"type\":\"uint256\"}],\"name\":\"updateCooldownPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_scoreThreshold\",\"type\":\"uint256\"}],\"name\":\"updateEndorsementScoreThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"_newGracePeriod\",\"type\":\"uint48\"}],\"name\":\"updateGracePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"strength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thunder\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mjolnir\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"veThorX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"strengthX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thunderX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mjolnirX\",\"type\":\"uint256\"}],\"internalType\":\"struct EndorsementUtils.NodeStrengthScores\",\"name\":\"_nodeStrengthScores\",\"type\":\"tuple\"}],\"name\":\"updateNodeEndorsementScores\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newTeamWalletAddress\",\"type\":\"address\"}],\"name\":\"updateTeamWalletAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The contract inheriting this interface should be able to manage the x2earn apps and their Eligibility for allocation voting.\",\"errors\":{\"CooldownNotExpired(uint256,bytes32)\":[{\"details\":\"Cooldown period not expired for the specified node-app endorsement.\"}],\"CreatorNFTAlreadyUsed(address)\":[{\"details\":\"The creator NFT is already used for another app.\"}],\"ERC5805FutureLookup(uint256,uint48)\":[{\"details\":\"Lookup to future votes is not available.\"}],\"ERC6372InconsistentClock()\":[{\"details\":\"The clock was incorrectly modified.\"}],\"EndorsementsPaused()\":[{\"details\":\"Endorsements are currently paused (during migration).\"}],\"ExceedsMaxPointsPerApp(bytes32,uint256,uint256)\":[{\"details\":\"Exceeds maximum points allowed per app.\"}],\"ExceedsMaxPointsPerNode(uint256,bytes32,uint256)\":[{\"details\":\"Exceeds maximum points a single node can endorse to one app.\"}],\"InsufficientAvailablePoints(uint256,uint256,uint256)\":[{\"details\":\"Node doesn't have enough available points.\"}],\"InvalidPointsAmount()\":[{\"details\":\"Invalid points amount provided.\"}],\"NodeNotAllowedToEndorse()\":[{\"details\":\"The user has a node that cannot be used to endorse\"}],\"X2EarnAlreadyCreator(address)\":[{\"details\":\"The caller is already the creator of the app.\"}],\"X2EarnAlreadyEndorser()\":[{\"details\":\"The caller is already an endorser.\"}],\"X2EarnAppAlreadyEndorsed(bytes32)\":[{\"details\":\"The `appId` is already endorsed.\"}],\"X2EarnAppAlreadyExists(bytes32)\":[{\"details\":\"An app with the specified `appId` already exists.\"}],\"X2EarnAppBlacklisted(bytes32)\":[{\"details\":\"The app is blacklisted.\"}],\"X2EarnInvalidAddress(address)\":[{\"details\":\"The `addr` is not valid (eg: is the ZERO ADDRESS).\"}],\"X2EarnInvalidAllocationPercentage(uint256)\":[{\"details\":\"The `percentage` is not valid.\"}],\"X2EarnInvalidStartIndex()\":[{\"details\":\"Invalid start index for get apps pagination\"}],\"X2EarnMaxCreatorsReached(bytes32)\":[{\"details\":\"The maximum number of creators has been reached.\"}],\"X2EarnMaxManagersReached(bytes32)\":[{\"details\":\"The maximum number of managers has been reached.\"}],\"X2EarnMaxModeratorsReached(bytes32)\":[{\"details\":\"The maximum number of moderators has been reached.\"}],\"X2EarnMaxRewardDistributorsReached(bytes32)\":[{\"details\":\"The maximum number of reward distributors has been reached.\"}],\"X2EarnNodeCooldownActive()\":[{\"details\":\"The Vechain Node is in a cooldown period, and the action cannot be performed.\"}],\"X2EarnNonEndorser()\":[{\"details\":\"The caller is not an endorser.\"}],\"X2EarnNonNodeHolder()\":[{\"details\":\"The caller is not a node holder.\"}],\"X2EarnNonexistentApp(bytes32)\":[{\"details\":\"The `appId` doesn't exist.\"}],\"X2EarnNonexistentCreator(bytes32,address)\":[{\"details\":\"The creator of the app doesn't exist.\"}],\"X2EarnNonexistentModerator(bytes32,address)\":[{\"details\":\"The `moderator` is not valid.\"}],\"X2EarnNonexistentRewardDistributor(bytes32,address)\":[{\"details\":\"The `distributorAddress` is not valid.\"}],\"X2EarnUnauthorizedUser(address)\":[{\"details\":\"The user is not authorized to perform the action.\"}],\"X2EarnUnverifiedCreator(address)\":[{\"details\":\"The caller is an unverified creator.\"}]},\"events\":{\"AppAdded(bytes32,address,string,bool)\":{\"details\":\"Event fired when a new app is added.\"},\"AppAdminUpdated(bytes32,address,address)\":{\"details\":\"Event fired when the admin of an app changes.\"},\"AppEndorsed(bytes32,uint256,address,uint256)\":{\"details\":\"V8: Event fired when an app is endorsed with points.\"},\"AppEndorsementStatusUpdated(bytes32,bool)\":{\"details\":\"Event fired when the app endorsement status is updated.\"},\"AppMetadataURIUpdated(bytes32,string,string)\":{\"details\":\"Event fired when the metadata URI of the app is changed.\"},\"AppSelfBlacklisted(bytes32,address)\":{\"details\":\"V8: Event fired when an app admin voluntarily delists their app.\"},\"AppUnendorsed(bytes32,uint256,uint256)\":{\"details\":\"V8: Event fired when an app is unendorsed.\"},\"AppUnendorsedGracePeriodStarted(bytes32,uint48,uint48)\":{\"details\":\"Event fired when the app endorsement grace period is started.\"},\"BaseURIUpdated(string,string)\":{\"details\":\"Event fired when the base URI is updated.\"},\"BlacklistUpdated(bytes32,bool)\":{\"details\":\"Event fired when an app is blacklisted or unblacklisted.\"},\"CooldownPeriodUpdated(uint256,uint256)\":{\"details\":\"Event fired when the cooldown period duration is updated.\"},\"CreatorAddedToApp(bytes32,address)\":{\"details\":\"Event fired when the admin adds a new creator to the app and new creator NFT is minted.\"},\"CreatorRemovedFromApp(bytes32,address)\":{\"details\":\"Event fired when the admin removes a creator from the app.\"},\"EndorsementScoreThresholdUpdated(uint256,uint256)\":{\"details\":\"Event fired when the score threshold is updated.\"},\"EndorsementsPausedUpdated(bool)\":{\"details\":\"V8: Event fired when endorsements paused state changes.\"},\"GracePeriodUpdated(uint256,uint256)\":{\"details\":\"Event fired when the grace period duration is updated.\"},\"MaxPointsPerAppUpdated(uint256,uint256)\":{\"details\":\"V8: Event fired when max points per app is updated.\"},\"MaxPointsPerNodePerAppUpdated(uint256,uint256)\":{\"details\":\"V8: Event fired when max points per node per app is updated.\"},\"ModeratorAddedToApp(bytes32,address)\":{\"details\":\"Event fired when the admin adds a new moderator to the app.\"},\"ModeratorRemovedFromApp(bytes32,address)\":{\"details\":\"Event fired when the admin removes a moderator from the app.\"},\"NodeStrengthScoresUpdated((uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"details\":\"Event fired when the node strength scores are updated.\"},\"RewardDistributorAddedToApp(bytes32,address)\":{\"details\":\"Event fired when the admin adds a new reward distributor to the app.\"},\"RewardDistributorRemovedFromApp(bytes32,address)\":{\"details\":\"Event fired when the admin removes a reward distributor from the app.\"},\"TeamAllocationPercentageUpdated(bytes32,uint256,uint256)\":{\"details\":\"Event fired when the team allocation percentage is updated.\"},\"TeamWalletAddressUpdated(bytes32,address,address)\":{\"details\":\"Event fired when the address where the x2earn app receives allocation funds is changed.\"},\"VotingEligibilityUpdated(bytes32,bool)\":{\"details\":\"Event fired when an app Eligibility for allocation voting changes.\"}},\"kind\":\"dev\",\"methods\":{\"addAppModerator(bytes32,address)\":{\"details\":\"Add a new moderator to the app.\",\"params\":{\"appId\":\"the id of the app\",\"moderator\":\"the address of the moderator Emits a {ModeratorAddedToApp} event.\"}},\"addCreator(bytes32,address)\":{\"details\":\"Add a new creator to the app.\",\"params\":{\"appId\":\"the id of the app\",\"creator\":\"the address of the creator Emits a {CreatorAddedToApp} event.\"}},\"addRewardDistributor(bytes32,address)\":{\"details\":\"Add a new reward distributor to the app.\",\"params\":{\"appId\":\"the id of the app\",\"distributorAddress\":\"the address of the reward distributor Emits a {RewardDistributorAddedToApp} event.\"}},\"allEligibleApps()\":{\"details\":\"Get all the app ids that are eligible for voting in the next allocation rounds.\"},\"app(bytes32)\":{\"details\":\"Get the app data by its id.\",\"params\":{\"appId\":\"the id of the app\"}},\"appAdmin(bytes32)\":{\"details\":\"Get the app admin.\",\"params\":{\"appId\":\"the id of the app\"}},\"appCreators(bytes32)\":{\"details\":\"Get the creators of an app.\",\"params\":{\"appId\":\"the id of the app\"}},\"appExists(bytes32)\":{\"details\":\"Check if there is an app with the specified `appId`.This function should be used to check if an app exists is part of the VeBetter DAO ecosystem.\",\"params\":{\"appId\":\"the id of the app\"}},\"apps()\":{\"details\":\"An XApp must have been included in at least one allocation round to be considered an existing app.\"},\"baseURI()\":{\"details\":\"return the base URI for the contract\"},\"checkEndorsement(bytes32)\":{\"details\":\"This function is intended to be called by a cron job prior to the start of each voting round. If the app has less than 100 points, the grace period elasped is checked. If the grace period elapsed by the app is greater than the threshold grace period, the app is marked as not eligible for voting. If an endorser has lost its node status (level 0), it is removed from the endorsers list.\",\"params\":{\"appId\":\"The unique identifier of the app being checked.\"},\"returns\":{\"_0\":\"True if the app is eligible for voting.\"}},\"cooldownPeriod()\":{\"details\":\"Get the cooldown period for a node in seconds.\"},\"creatorApps(address)\":{\"details\":\"Get the number of apps created by an account.\",\"params\":{\"creator\":\"the address of the creator\"}},\"enableRewardsPoolForNewApp(bytes32)\":{\"details\":\"Enable the rewards pool for a new app.\",\"params\":{\"appId\":\"the id of the app\"}},\"endorseApp(bytes32,uint256,uint256)\":{\"params\":{\"appId\":\"The app to endorse.\",\"nodeId\":\"The node endorsing.\",\"points\":\"Number of points to endorse.\"}},\"endorsementScoreThreshold()\":{\"details\":\"Get the score threshold.\"},\"getEndorsers(bytes32)\":{\"details\":\"Get the endorsers of an app.\",\"params\":{\"appId\":\"the id of the app\"}},\"getNodeEndorsementScore(uint256)\":{\"details\":\"Get the endorsersment score of a node ID.\",\"params\":{\"nodeId\":\"the ID of a node.\"}},\"getScore(bytes32)\":{\"details\":\"Get the endorsement score of an app.\",\"params\":{\"appId\":\"the id of the app\"}},\"getScoreAtTimepoint(bytes32,uint256)\":{\"params\":{\"appId\":\"The unique identifier of the app.\",\"timepoint\":\"The block number to query.\"},\"returns\":{\"_0\":\"The endorsement score at the given timepoint.\"}},\"getUsersEndorsementScore(address)\":{\"details\":\"Get the endorsersment score of an individual.\",\"params\":{\"user\":\"the address of the user who holds a NODE\"}},\"gracePeriod()\":{\"details\":\"return the grace period for an XApp to find new endorsers after the previous one was removed.\"},\"hashAppName(string)\":{\"details\":\"Generates the hash of the app name to be used as the app id.\",\"params\":{\"name\":\"the name of the app\"}},\"isAppAdmin(bytes32,address)\":{\"details\":\"Check if an account is the admin of the app\",\"params\":{\"account\":\"the address of the account\",\"appId\":\"the hashed name of the app\"}},\"isAppUnendorsed(bytes32)\":{\"details\":\"return true if an app is pending for endorsement.\"},\"isBlacklisted(bytes32)\":{\"details\":\"Check if an app is blacklisted.\",\"params\":{\"appId\":\"the id of the app\"}},\"isCreatorOfAnyApp(address)\":{\"details\":\"Check if a creator has already been used for another app.\",\"params\":{\"creator\":\"the address of the creator\"}},\"isEligible(bytes32,uint256)\":{\"details\":\"Check if an app was allowed to participate in the allocation rounds in a specific timepoint. XAllocationVoting contract can use this function to check if an app was eligible for voting in the block when the round starts.\",\"params\":{\"appId\":\"the id of the app\",\"timepoint\":\"the timepoint when the app should be checked for Eligibility\"}},\"isRewardDistributor(bytes32,address)\":{\"details\":\"Returns true if an account is a reward distributor of the app\",\"params\":{\"appId\":\"the id of the app\",\"distributorAddress\":\"the address of the account\"}},\"nodeLevelEndorsementScore(uint8)\":{\"params\":{\"nodeLevel\":\"The strength level of the node.\"},\"returns\":{\"_0\":\"uint256 The endorsement score of the node level.\"}},\"removeAppCreator(bytes32,address)\":{\"details\":\"Remove a creator from the app.\",\"params\":{\"appId\":\"the id of the app\",\"creator\":\"the address of the creator Emits a {CreatorRemovedFromApp} event.\"}},\"removeAppModerator(bytes32,address)\":{\"details\":\"Remove a moderator from the app.\",\"params\":{\"appId\":\"the id of the app\",\"moderator\":\"the address of the moderator Emits a {ModeratorRemovedFromApp} event.\"}},\"removeNodeEndorsement(bytes32,uint256)\":{\"details\":\"Can only be valled by DEFAULT_ADMIN or XAPP admin\",\"params\":{\"_appId\":\"The unique identifier of the app that wishes to be unendorsed.\",\"_nodeId\":\"The unique identifier of the node they wish to remove from their list of endorsers.\"}},\"removeRewardDistributor(bytes32,address)\":{\"details\":\"Remove a reward distributor from the app.\",\"params\":{\"appId\":\"the id of the app\",\"distributorAddress\":\"the address of the reward distributor Emits a {RewardDistributorRemovedFromApp} event.\"}},\"removeXAppSubmission(bytes32)\":{\"details\":\"Remove an XApps submission.\"},\"selfBlacklistApp(bytes32)\":{\"details\":\"Blacklists the app and revokes creator NFTs. Only governance can restore.\",\"params\":{\"_appId\":\"The unique identifier of the app.\"}},\"setAppAdmin(bytes32,address)\":{\"details\":\"Set the app admin.\",\"params\":{\"admin\":\"the address of the admin Emits a {AppAdminUpdated} event.\",\"appId\":\"the id of the app\"}},\"setTeamAllocationPercentage(bytes32,uint256)\":{\"details\":\"Update the allocation percentage to be sent to the team\",\"params\":{\"appId\":\"the id of the app\",\"percentage\":\"the new percentage of the allocation\"}},\"setVotingEligibility(bytes32,bool)\":{\"details\":\"Allow or deny an app to participate in the next allocation voting rounds.\",\"params\":{\"_appId\":\"the id of the app\",\"_isEligible\":\"true if the app should be eligible for voting, false otherwise Emits a {VotingEligibilityUpdated} event.\"}},\"submitApp(address,address,string,string)\":{\"details\":\"Register a new app.\",\"params\":{\"_admin\":\"the address of the admin\",\"_appMetadataURI\":\"the metadata URI of the app Emits a {AppAdded} event.\",\"_appName\":\"the name of the app\",\"_teamWalletAddress\":\"the address where the app will receive the allocation funds\"}},\"teamAllocationPercentage(bytes32)\":{\"details\":\"Function to get the percentage of the allocation sent to the team address each round.\",\"params\":{\"appId\":\"the app id\"}},\"teamWalletAddress(bytes32)\":{\"details\":\"Get the address where the x2earn app receives allocation funds.\",\"params\":{\"appId\":\"the id of the app\"}},\"unendorseApp(bytes32,uint256,uint256)\":{\"params\":{\"appId\":\"The app to unendorse.\",\"nodeId\":\"The node unendorsing.\",\"points\":\"Number of points to remove (0 = remove all).\"}},\"unendorsedAppIds()\":{\"returns\":{\"_0\":\"the ids of the apps that are pending for endorsement\"}},\"unendorsedApps()\":{\"returns\":{\"_0\":\"the information about the apps that are pending for endorsement\"}},\"updateAppMetadata(bytes32,string)\":{\"details\":\"Update the metadata URI of the app.\",\"params\":{\"appId\":\"the id of the app\",\"metadataURI\":\"the new metadata URI of the app containing details about the app Emits a {AppMetadataURIUpdated} event.\"}},\"updateCooldownPeriod(uint256)\":{\"params\":{\"_newCooldownPeriod\":\"The new cooldown period. Emits a {CooldownPeriodUpdated} event.\"}},\"updateEndorsementScoreThreshold(uint256)\":{\"details\":\"This should be minimum endorsement score required for an app to be eligible for voting.\",\"params\":{\"_scoreThreshold\":\"the new score threshold Emits a {EndorsementScoreThresholdUpdated} event.\"}},\"updateGracePeriod(uint48)\":{\"params\":{\"_newGracePeriod\":\"The new grace period. Emits a {GracePeriodUpdated} event.\"}},\"updateNodeEndorsementScores((uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"details\":\"Update the the endorsement scores of each node level.\",\"params\":{\"_nodeStrengthScores\":\"The node level scores to update. Emits a {NodeStrengthScoreUpdated} event.\"}},\"updateTeamWalletAddress(bytes32,address)\":{\"details\":\"Update the address where the x2earn app receives allocation funds.\",\"params\":{\"appId\":\"the id of the app\",\"newTeamWalletAddress\":\"the new address where the app should receive allocation funds Emits a {TeamWalletAddressUpdated} event.\"}},\"version()\":{\"details\":\"This should be updated every time a new version of implementation is deployed.\"}},\"title\":\"IX2EarnApps\",\"version\":1},\"userdoc\":{\"errors\":{\"NodeManagementXAppAlreadyIncluded(bytes32)\":[{\"notice\":\"Error indicating that an XAPP has already been included in a XAllocation Voting round and submission cant be removed.\"}]},\"kind\":\"user\",\"methods\":{\"appExists(bytes32)\":{\"notice\":\"An app is considered to exist if it has been included in at least one allocation round.\"},\"apps()\":{\"notice\":\"Get all the apps that exist in the VeBetter DAO ecosystem.\"},\"canUnendorse(uint256,bytes32)\":{\"notice\":\"Check if node can unendorse an app (cooldown expired).\"},\"checkEndorsement(bytes32)\":{\"notice\":\"Checks endorsements for a given app and updates its voting eligibility based on the endorsements' scores.\"},\"endorseApp(bytes32,uint256,uint256)\":{\"notice\":\"Endorse an app with a specified number of points.\"},\"endorsementsPaused()\":{\"notice\":\"Check if endorsements are paused.\"},\"getEndorserNodes(bytes32)\":{\"notice\":\"Get all endorser node IDs for an app.\"},\"getNodeActiveEndorsements(uint256)\":{\"notice\":\"Get all active endorsements for a node.\"},\"getNodeAvailablePoints(uint256)\":{\"notice\":\"Get available endorsement points for a node.\"},\"getNodePointsInfo(uint256)\":{\"notice\":\"Get comprehensive info about a node's endorsement points.\"},\"getScoreAtTimepoint(bytes32,uint256)\":{\"notice\":\"Returns the endorsement score for an app at a specific block number.\"},\"initializeV8(uint256,uint256)\":{\"notice\":\"V8 initializer for flexible endorsement config.\"},\"markMigrationComplete()\":{\"notice\":\"Mark migration as complete.\"},\"maxPointsPerApp()\":{\"notice\":\"Get max points per app.\"},\"maxPointsPerNodePerApp()\":{\"notice\":\"Get max points per node per app.\"},\"nodeLevelEndorsementScore(uint8)\":{\"notice\":\"this function returns the endorsement score of a node level\"},\"pauseEndorsements()\":{\"notice\":\"Pause endorsement operations.\"},\"removeNodeEndorsement(bytes32,uint256)\":{\"notice\":\"This function can be called by an XAPP admin that wishes to remove an endorserment from a specific node ID\"},\"seedEndorsement(bytes32,uint256,uint256)\":{\"notice\":\"Seed endorsement during migration.\"},\"selfBlacklistApp(bytes32)\":{\"notice\":\"Allows an app admin to voluntarily blacklist their app from allocation voting.\"},\"setMaxPointsPerApp(uint256)\":{\"notice\":\"Set max total points per app.\"},\"setMaxPointsPerNodePerApp(uint256)\":{\"notice\":\"Set max points per node per app.\"},\"unendorseApp(bytes32,uint256,uint256)\":{\"notice\":\"Unendorse an app by removing points.\"},\"unendorsedAppIds()\":{\"notice\":\"Gets the ids of all apps that are looking for endorsement.\"},\"unendorsedApps()\":{\"notice\":\"Gets the information about all apps that are looking for endorsement.\"},\"unpauseEndorsements()\":{\"notice\":\"Unpause endorsement operations.\"},\"updateCooldownPeriod(uint256)\":{\"notice\":\"Function to update the cooldown period.\"},\"updateEndorsementScoreThreshold(uint256)\":{\"notice\":\"Update the endorsement score threshold\"},\"updateGracePeriod(uint48)\":{\"notice\":\"Function to update the grace period.\"},\"version()\":{\"notice\":\"Get the version of the contract.\"}},\"notice\":\"Interface for the X2EarnApps contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IX2EarnApps.sol\":\"IX2EarnApps\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]},\"contracts/interfaces/IVeBetterPassport.sol\":{\"keccak256\":\"0x1094bcf1a7f61ad26e5d49a6efd7302419a1d2475fa0723f62f24757c7a1655c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a25e330da50daf45f56fe4c496da2ea6695fb4de491c112980deb385f0f3ac\",\"dweb:/ipfs/QmaPE4T6UR91WxnGkqGp85d6YB9UGQceGGtSTCres1Y2Ut\"]},\"contracts/interfaces/IX2EarnApps.sol\":{\"keccak256\":\"0xf476e628b4037c16d44c833c9f0f4db9a3abc48f60ad4654574bce31ca9c759c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8c183bbd394bb708a637dca7626f6beb7a78e5111674e3ccea6f98140580172\",\"dweb:/ipfs/Qmar8Za1an3ZGP6B5wcCZSmY6g6MKzPcGeVYetRhiPFm7e\"]},\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]},\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]},\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]},\"contracts/ve-better-passport/libraries/PassportTypes.sol\":{\"keccak256\":\"0x0250b067d550cd85bd77278c705bd8d28db1bce6829e084cbe65b74353483ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://176022bfb06a2c03efe880a13a97cea66e25e9b31fe164936b5845a57a299be8\",\"dweb:/ipfs/QmS2kQnhxdjkrnNGfFyBdtThpmvyT2B7tF1owW2vF2hmbz\"]},\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":{\"keccak256\":\"0x1830b8438f0b6b516cc22ebbfcc7cff9db478c9a2a44fedf5926e63bd77d5aa7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aad5b08dbb03f727b8b74b10d1d00e796ece111f3aa23ef48ad27f54dd3f7b58\",\"dweb:/ipfs/QmfZZoP44EZ3Ts81BgvRuG9AXuTAxCqCbFqHoKEspFsPSa\"]},\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":{\"keccak256\":\"0x8a44d64c1e998dad0d21b928c499b7b624623cb26a30df541c493641191f6091\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751749980251dd9cda3e77654fafa229dab8a9bc74992dee9e8b3adee9595b72\",\"dweb:/ipfs/QmSHViJSMCbr25KBPap8VB38SjrLojRTnC3JUDCvf3rRBB\"]}},\"version\":1}"}},"contracts/interfaces/IX2EarnCreator.sol":{"IX2EarnCreator":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"selfMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"selfMintEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"balanceOf(address)":"70a08231","burn(uint256)":"42966c68","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","pause()":"8456cb59","paused()":"5c975abb","revokeRole(bytes32,address)":"d547741f","safeMint(address)":"40d097c3","selfMint()":"e495d3e5","selfMintEnabled()":"e6e05f88","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"selfMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"selfMintEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address)\":{\"params\":{\"owner\":\"Address to query the balance of\"},\"returns\":{\"_0\":\"Balance of tokens held by `owner`\"}},\"burn(uint256)\":{\"params\":{\"tokenId\":\"The ID of the token to burn\"}},\"grantRole(bytes32,address)\":{\"params\":{\"account\":\"The account to grant the role to\",\"role\":\"The role to assign\"}},\"hasRole(bytes32,address)\":{\"params\":{\"account\":\"The account to check\",\"role\":\"The role identifier\"},\"returns\":{\"_0\":\"Boolean indicating if the account has the role\"}},\"paused()\":{\"returns\":{\"_0\":\"Boolean indicating whether the contract is paused\"}},\"revokeRole(bytes32,address)\":{\"params\":{\"account\":\"The account to revoke the role from\",\"role\":\"The role to revoke\"}},\"safeMint(address)\":{\"params\":{\"to\":\"The address to receive the token\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"The interface identifier\"},\"returns\":{\"_0\":\"Boolean indicating if the interface is supported\"}},\"tokenByIndex(uint256)\":{\"params\":{\"index\":\"Index of the token in the total supply\"},\"returns\":{\"_0\":\"Token ID at the specified `index`\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"params\":{\"index\":\"Index of the token in the owner's list of tokens\",\"owner\":\"Address owning the tokens\"},\"returns\":{\"_0\":\"Token ID owned by `owner` at the specified `index`\"}},\"tokenURI(uint256)\":{\"params\":{\"tokenId\":\"The ID of the token\"},\"returns\":{\"_0\":\"The URI pointing to the token's metadata\"}},\"totalSupply()\":{\"returns\":{\"_0\":\"Total supply of tokens\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"Returns the balance of tokens held by `owner`\"},\"burn(uint256)\":{\"notice\":\"Burns a specified token, removing it from circulation\"},\"grantRole(bytes32,address)\":{\"notice\":\"Grants a role to an account\"},\"hasRole(bytes32,address)\":{\"notice\":\"Checks if an account has a specific role\"},\"pause()\":{\"notice\":\"Pauses all minting and burning functions\"},\"paused()\":{\"notice\":\"Returns whether the contract is paused\"},\"revokeRole(bytes32,address)\":{\"notice\":\"Revokes a role from an account\"},\"safeMint(address)\":{\"notice\":\"Mints a new token to the specified address\"},\"selfMint()\":{\"notice\":\"Allows a user to mint a Creator NFT to themselves when self-minting is enabled\"},\"selfMintEnabled()\":{\"notice\":\"Returns whether self-minting is enabled\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if the contract supports a specific interface\"},\"tokenByIndex(uint256)\":{\"notice\":\"Gets the token ID at a specific global `index`\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"notice\":\"Gets the token ID owned by `owner` at a specific `index`\"},\"tokenURI(uint256)\":{\"notice\":\"Retrieves the token URI for a given token ID\"},\"totalSupply()\":{\"notice\":\"Gets the total number of tokens in existence\"},\"unpause()\":{\"notice\":\"Unpauses minting and burning functions\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IX2EarnCreator.sol\":\"IX2EarnCreator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]}},\"version\":1}"}},"contracts/interfaces/IX2EarnRewardsPool.sol":{"IX2EarnRewardsPool":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AppPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AppUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"depositor","type":"address"}],"name":"NewDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"lowLevelData","type":"bytes"}],"name":"RegisterActionFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"string","name":"proof","type":"string"},{"indexed":true,"internalType":"address","name":"distributor","type":"address"}],"name":"RewardDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"string","name":"metadata","type":"string"},{"indexed":true,"internalType":"address","name":"distributor","type":"address"}],"name":"RewardMetadata","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"enable","type":"bool"}],"name":"RewardsPoolBalanceEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"availableFunds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardsPoolBalance","type":"uint256"}],"name":"RewardsPoolBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"teamWallet","type":"address"},{"indexed":false,"internalType":"address","name":"withdrawer","type":"address"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"TeamWithdrawal","type":"event"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"availableFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"proofTypes","type":"string[]"},{"internalType":"string[]","name":"proofValues","type":"string[]"},{"internalType":"string[]","name":"impactCodes","type":"string[]"},{"internalType":"uint256[]","name":"impactValues","type":"uint256[]"},{"internalType":"string","name":"description","type":"string"}],"name":"buildProof","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"deposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"string","name":"proof","type":"string"}],"name":"distributeReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"string","name":"proof","type":"string"}],"name":"distributeRewardDeprecated","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"string","name":"proof","type":"string"},{"internalType":"uint256","name":"actionRound","type":"uint256"}],"name":"distributeRewardForRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"string[]","name":"proofTypes","type":"string[]"},{"internalType":"string[]","name":"proofValues","type":"string[]"},{"internalType":"string[]","name":"impactCodes","type":"string[]"},{"internalType":"uint256[]","name":"impactValues","type":"uint256[]"},{"internalType":"string","name":"description","type":"string"}],"name":"distributeRewardWithProof","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"string[]","name":"proofTypes","type":"string[]"},{"internalType":"string[]","name":"proofValues","type":"string[]"},{"internalType":"string[]","name":"impactCodes","type":"string[]"},{"internalType":"uint256[]","name":"impactValues","type":"uint256[]"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadata","type":"string"}],"name":"distributeRewardWithProofAndMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"string[]","name":"proofTypes","type":"string[]"},{"internalType":"string[]","name":"proofValues","type":"string[]"},{"internalType":"string[]","name":"impactCodes","type":"string[]"},{"internalType":"uint256[]","name":"impactValues","type":"uint256[]"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadata","type":"string"},{"internalType":"uint256","name":"actionRound","type":"uint256"}],"name":"distributeRewardWithProofAndMetadataForRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"string[]","name":"proofTypes","type":"string[]"},{"internalType":"string[]","name":"proofValues","type":"string[]"},{"internalType":"string[]","name":"impactCodes","type":"string[]"},{"internalType":"uint256[]","name":"impactValues","type":"uint256[]"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"actionRound","type":"uint256"}],"name":"distributeRewardWithProofForRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"enableRewardsPoolForNewApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"isDistributionPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"isRewardsPoolEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"rewardsPoolBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"string","name":"reason","type":"string"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"availableFunds(bytes32)":"f2744334","buildProof(string[],string[],string[],uint256[],string)":"4879ed08","deposit(uint256,bytes32)":"c9630cb0","distributeReward(bytes32,uint256,address,string)":"f7335f11","distributeRewardDeprecated(bytes32,uint256,address,string)":"69933c78","distributeRewardForRound(bytes32,uint256,address,string,uint256)":"ad0f96b1","distributeRewardWithProof(bytes32,uint256,address,string[],string[],string[],uint256[],string)":"7b924532","distributeRewardWithProofAndMetadata(bytes32,uint256,address,string[],string[],string[],uint256[],string,string)":"0eb11eb8","distributeRewardWithProofAndMetadataForRound(bytes32,uint256,address,string[],string[],string[],uint256[],string,string,uint256)":"2a308afa","distributeRewardWithProofForRound(bytes32,uint256,address,string[],string[],string[],uint256[],string,uint256)":"6b2c1bb8","enableRewardsPoolForNewApp(bytes32)":"1a25071f","isDistributionPaused(bytes32)":"8a7793b1","isRewardsPoolEnabled(bytes32)":"b81ddb2e","rewardsPoolBalance(bytes32)":"60dbdd08","totalBalance(bytes32)":"b51fc445","version()":"54fd4d50","withdraw(uint256,bytes32,string)":"cfe706b3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AppPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AppUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"}],\"name\":\"NewDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"lowLevelData\",\"type\":\"bytes\"}],\"name\":\"RegisterActionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"proof\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"RewardDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"RewardMetadata\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"}],\"name\":\"RewardsPoolBalanceEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"availableFunds\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardsPoolBalance\",\"type\":\"uint256\"}],\"name\":\"RewardsPoolBalanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"teamWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"TeamWithdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"availableFunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"proofTypes\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"proofValues\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"impactCodes\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"impactValues\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"buildProof\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"proof\",\"type\":\"string\"}],\"name\":\"distributeReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"proof\",\"type\":\"string\"}],\"name\":\"distributeRewardDeprecated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"proof\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"actionRound\",\"type\":\"uint256\"}],\"name\":\"distributeRewardForRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"proofTypes\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"proofValues\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"impactCodes\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"impactValues\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"distributeRewardWithProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"proofTypes\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"proofValues\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"impactCodes\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"impactValues\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"distributeRewardWithProofAndMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"proofTypes\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"proofValues\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"impactCodes\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"impactValues\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"actionRound\",\"type\":\"uint256\"}],\"name\":\"distributeRewardWithProofAndMetadataForRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"proofTypes\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"proofValues\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"impactCodes\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"impactValues\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"actionRound\",\"type\":\"uint256\"}],\"name\":\"distributeRewardWithProofForRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"enableRewardsPoolForNewApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"isDistributionPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"isRewardsPoolEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"rewardsPoolBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"totalBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface designed to be used by a contract that allows x2Earn apps to reward users that performed sustainable actions. Funds can be deposited into this contract by specifying the app id that can access the funds. Admins of x2EarnApps can withdraw funds from the rewards pool, whihc are sent to the team wallet.\",\"events\":{\"AppPaused(bytes32,address)\":{\"details\":\"Event emitted when an app's reward distribution is paused.\",\"params\":{\"admin\":\"The address of the admin who paused the app.\",\"appId\":\"The ID of the app that was paused.\"}},\"AppUnpaused(bytes32,address)\":{\"details\":\"Event emitted when an app's reward distribution is unpaused.\",\"params\":{\"admin\":\"The address of the admin who unpaused the app.\",\"appId\":\"The ID of the app that was unpaused.\"}},\"NewDeposit(uint256,bytes32,address)\":{\"details\":\"Event emitted when a new deposit is made into the rewards pool.\",\"params\":{\"amount\":\"The amount of $B3TR deposited.\",\"appId\":\"The ID of the app for which the deposit was made.\",\"depositor\":\"The address of the user that deposited the funds.\"}},\"RegisterActionFailed(string,bytes)\":{\"details\":\"Event emitted when the proof of sustainability external contract call fails.\",\"params\":{\"lowLevelData\":\"The low level data returned by the external contract.\",\"reason\":\"The reason for the failure.\"}},\"RewardDistributed(uint256,bytes32,address,string,address)\":{\"details\":\"Event emitted when a reward is emitted by an app.\",\"params\":{\"amount\":\"The amount of $B3TR rewarded.\",\"appId\":\"The ID of the app that emitted the reward.\",\"distributor\":\"The address of the user that distributed the reward.\",\"proof\":\"The proof of the sustainable action that was performed.\",\"receiver\":\"The address of the user that received the reward.\"}},\"RewardMetadata(uint256,bytes32,address,string,address)\":{\"details\":\"Event emitted when a reward is emitted by an app with proof and metadata.\",\"params\":{\"amount\":\"The amount of $B3TR rewarded.\",\"appId\":\"The ID of the app that emitted the reward.\",\"distributor\":\"The address of the user that distributed the reward.\",\"metadata\":\"The metadata of the sustainable action that was performed.\",\"receiver\":\"The address of the user that received the reward.\"}},\"RewardsPoolBalanceEnabled(bytes32,bool)\":{\"details\":\"Event emitted when the admin configure the rewards pool balance\",\"params\":{\"appId\":\"- the app ID\",\"enable\":\"- true to enable, false to disable\"}},\"RewardsPoolBalanceUpdated(bytes32,uint256,uint256,uint256)\":{\"details\":\"Event emitted when the balance of the rewards pool for an app is initialized or updated.\",\"params\":{\"amount\":\"The amount being added or removed from the rewards pool.\",\"appId\":\"The ID of the app for which the balance was updated.\",\"availableFunds\":\"The current balance of the available funds for the app.\",\"rewardsPoolBalance\":\"The current balance of the rewards pool for the app.\"}},\"TeamWithdrawal(uint256,bytes32,address,address,string)\":{\"details\":\"Event emitted when a team withdraws funds from the rewards pool.\",\"params\":{\"amount\":\"The amount of $B3TR withdrawn.\",\"appId\":\"The ID of the app for which the withdrawal was made.\",\"reason\":\"The reason for the withdrawal.\",\"teamWallet\":\"The address of the team wallet that received the funds.\",\"withdrawer\":\"The address of the user that withdrew the funds.\"}}},\"kind\":\"dev\",\"methods\":{\"availableFunds(bytes32)\":{\"details\":\"Gets the amount of funds available for an app to withdraw and reward user if the dual-pool is disabled.\",\"params\":{\"appId\":\"The ID of the app.\"}},\"buildProof(string[],string[],string[],uint256[],string)\":{\"details\":\"Builds the JSON proof string that will be stored on chain regarding the proofs, impacts and description of the sustainable action.\",\"params\":{\"description\":\"the description of the sustainable action\",\"impactCodes\":\"the codes of the impacts of the sustainable action\",\"impactValues\":\"the values of the impacts of the sustainable action\",\"proofTypes\":\"the types of the proof of the sustainable action\",\"proofValues\":\"the values of the proof of the sustainable action\"}},\"deposit(uint256,bytes32)\":{\"details\":\"Function used by x2earn apps to deposit funds into the rewards pool.\",\"params\":{\"amount\":\"The amount of $B3TR to deposit.\",\"appId\":\"The ID of the app.\"}},\"distributeReward(bytes32,uint256,address,string)\":{\"details\":\"Function used by x2earn apps to reward users that performed sustainable actions.\",\"params\":{\"amount\":\"the amount of B3TR token the user is rewarded with\",\"appId\":\"the app id that is emitting the reward\",\"proof\":\"deprecated argument, pass an empty string instead\",\"receiver\":\"the address of the user that performed the sustainable action and is rewarded\"}},\"distributeRewardDeprecated(bytes32,uint256,address,string)\":{\"details\":\"Function used by x2earn apps to reward users that performed sustainable actions.\",\"params\":{\"amount\":\"the amount of B3TR token the user is rewarded with\",\"appId\":\"the app id that is emitting the reward\",\"proof\":\"the JSON string that contains the proof and impact of the sustainable action\",\"receiver\":\"the address of the user that performed the sustainable action and is rewarded\"}},\"distributeRewardForRound(bytes32,uint256,address,string,uint256)\":{\"details\":\"Function used by x2earn apps to reward users and attribute the action to a specific round.\",\"params\":{\"actionRound\":\"the round in which the action was actually performed\",\"amount\":\"the amount of B3TR token the user is rewarded with\",\"appId\":\"the app id that is emitting the reward\",\"proof\":\"deprecated argument, pass an empty string instead\",\"receiver\":\"the address of the user that performed the sustainable action and is rewarded\"}},\"distributeRewardWithProof(bytes32,uint256,address,string[],string[],string[],uint256[],string)\":{\"details\":\"Function used by x2earn apps to reward users that performed sustainable actions.\",\"params\":{\"amount\":\"the amount of B3TR token the user is rewarded with\",\"appId\":\"the app id that is emitting the reward\",\"description\":\"the description of the sustainable action\",\"impactCodes\":\"the codes of the impacts of the sustainable action\",\"impactValues\":\"the values of the impacts of the sustainable action\",\"proofTypes\":\"the types of the proof of the sustainable action\",\"proofValues\":\"the values of the proof of the sustainable action\",\"receiver\":\"the address of the user that performed the sustainable action and is rewarded\"}},\"distributeRewardWithProofAndMetadata(bytes32,uint256,address,string[],string[],string[],uint256[],string,string)\":{\"details\":\"Function used by x2earn apps to reward users that performed sustainable actions and emit metadata event.\",\"params\":{\"amount\":\"the amount of B3TR token the user is rewarded with\",\"appId\":\"the app id that is emitting the reward\",\"description\":\"the description of the sustainable action\",\"impactCodes\":\"the codes of the impacts of the sustainable action\",\"impactValues\":\"the values of the impacts of the sustainable action\",\"metadata\":\"the metadata of the sustainable action\",\"proofTypes\":\"the types of the proof of the sustainable action\",\"proofValues\":\"the values of the proof of the sustainable action\",\"receiver\":\"the address of the user that performed the sustainable action and is rewarded\"}},\"distributeRewardWithProofAndMetadataForRound(bytes32,uint256,address,string[],string[],string[],uint256[],string,string,uint256)\":{\"details\":\"Function used by x2earn apps to reward users with proof, metadata and attribute the action to a specific round.\",\"params\":{\"actionRound\":\"the round in which the action was actually performed\",\"amount\":\"the amount of B3TR token the user is rewarded with\",\"appId\":\"the app id that is emitting the reward\",\"description\":\"the description of the sustainable action\",\"impactCodes\":\"the codes of the impacts of the sustainable action\",\"impactValues\":\"the values of the impacts of the sustainable action\",\"metadata\":\"the metadata of the sustainable action\",\"proofTypes\":\"the types of the proof of the sustainable action\",\"proofValues\":\"the values of the proof of the sustainable action\",\"receiver\":\"the address of the user that performed the sustainable action and is rewarded\"}},\"distributeRewardWithProofForRound(bytes32,uint256,address,string[],string[],string[],uint256[],string,uint256)\":{\"details\":\"Function used by x2earn apps to reward users with proof and attribute the action to a specific round.\",\"params\":{\"actionRound\":\"the round in which the action was actually performed\",\"amount\":\"the amount of B3TR token the user is rewarded with\",\"appId\":\"the app id that is emitting the reward\",\"description\":\"the description of the sustainable action\",\"impactCodes\":\"the codes of the impacts of the sustainable action\",\"impactValues\":\"the values of the impacts of the sustainable action\",\"proofTypes\":\"the types of the proof of the sustainable action\",\"proofValues\":\"the values of the proof of the sustainable action\",\"receiver\":\"the address of the user that performed the sustainable action and is rewarded\"}},\"enableRewardsPoolForNewApp(bytes32)\":{\"details\":\"Enables the rewards pool for a newly created app.\",\"params\":{\"appId\":\"The ID of the app.\"}},\"isDistributionPaused(bytes32)\":{\"details\":\"Gets whether the distribution is paused or not for a specific xApp\",\"params\":{\"appId\":\"The ID of the app.\"}},\"isRewardsPoolEnabled(bytes32)\":{\"details\":\"Gets either the dual-pool rewards pool balance is enabled or not.\",\"params\":{\"appId\":\"The ID of the app.\"}},\"rewardsPoolBalance(bytes32)\":{\"details\":\"Gets the amount of funds available for an app to reward users if the dual-pool is enabled.\",\"params\":{\"appId\":\"The ID of the app.\"}},\"totalBalance(bytes32)\":{\"details\":\"Gets the total of funds available for withdrawal and rewards distribution.\",\"params\":{\"appId\":\"The ID of the app.\"}},\"version()\":{\"details\":\"Retrieves the current version of the contract.\",\"returns\":{\"_0\":\"The version of the contract.\"}},\"withdraw(uint256,bytes32,string)\":{\"details\":\"Function used by x2earn apps to withdraw funds from the rewards pool.\",\"params\":{\"amount\":\"The amount of $B3TR to withdraw.\",\"appId\":\"The ID of the app.\",\"reason\":\"The reason for the withdrawal.\"}}},\"title\":\"IX2EarnRewardsPool\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"distributeRewardDeprecated(bytes32,uint256,address,string)\":{\"notice\":\"This function is depracted in favor of distributeRewardWithProof.\"},\"enableRewardsPoolForNewApp(bytes32)\":{\"notice\":\"This function can only be called by the X2EarnApps contract during app submission\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IX2EarnRewardsPool.sol\":\"IX2EarnRewardsPool\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]}},\"version\":1}"}},"contracts/interfaces/IXAllocationVotingGovernor.sol":{"IXAllocationVotingGovernor":{"abi":[{"inputs":[{"internalType":"address","name":"voter","type":"address"}],"name":"AutoVotingEnabled","type":"error"},{"inputs":[{"internalType":"address","name":"voter","type":"address"}],"name":"AutoVotingNotEnabled","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"B3TRGovernorOnlyExecutor","type":"error"},{"inputs":[{"internalType":"address","name":"citizen","type":"address"}],"name":"DelegatedToNavigator","type":"error"},{"inputs":[],"name":"DuplicateAppVote","type":"error"},{"inputs":[{"internalType":"address","name":"voter","type":"address"}],"name":"GovernorAlreadyCastVote","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"GovernorAppNotAvailableForVoting","type":"error"},{"inputs":[],"name":"GovernorInsufficientVotingPower","type":"error"},{"inputs":[{"internalType":"uint256","name":"votingPeriod","type":"uint256"}],"name":"GovernorInvalidVotingPeriod","type":"error"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"GovernorNonexistentRound","type":"error"},{"inputs":[{"internalType":"address","name":"person","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"name":"GovernorPersonhoodVerificationFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"enum IXAllocationVotingGovernor.RoundState","name":"current","type":"uint8"},{"internalType":"bytes32","name":"expectedStates","type":"bytes32"}],"name":"GovernorUnexpectedRoundState","type":"error"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"votes","type":"uint256"}],"name":"GovernorVotingThresholdNotMet","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"InvalidCaller","type":"error"},{"inputs":[{"internalType":"string","name":"contractName","type":"string"}],"name":"InvalidContractAddress","type":"error"},{"inputs":[{"internalType":"address","name":"navigator","type":"address"}],"name":"NavigatorCannotEnableAutoVoting","type":"error"},{"inputs":[{"internalType":"address","name":"navigator","type":"address"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"NavigatorPreferencesNotSet","type":"error"},{"inputs":[{"internalType":"address","name":"citizen","type":"address"}],"name":"NotDelegatedToNavigator","type":"error"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"SkipWindowNotReached","type":"error"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"VoteAlreadyProcessed","type":"error"},{"inputs":[{"internalType":"address","name":"person","type":"address"}],"name":"XAllocationVotingPersonhoodVerificationFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"bytes32[]","name":"appsIds","type":"bytes32[]"},{"indexed":false,"internalType":"uint256[]","name":"voteWeights","type":"uint256[]"}],"name":"AllocationAutoVoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"bytes32[]","name":"appsIds","type":"bytes32[]"},{"indexed":false,"internalType":"uint256[]","name":"voteWeights","type":"uint256[]"}],"name":"AllocationVoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isPerson","type":"bool"},{"indexed":false,"internalType":"uint256","name":"appCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"votingPower","type":"uint256"}],"name":"AutoVoteSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"AutoVotingToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"fingerprint","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"lastChangedRound","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"FreshnessMultiplierApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"citizen","type":"address"},{"indexed":true,"internalType":"address","name":"navigator","type":"address"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"bytes32[]","name":"appsIds","type":"bytes32[]"},{"indexed":false,"internalType":"uint256[]","name":"voteWeights","type":"uint256[]"}],"name":"NavigatorVoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"citizen","type":"address"},{"indexed":true,"internalType":"address","name":"navigator","type":"address"},{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"NavigatorVoteSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bytes32[]","name":"apps","type":"bytes32[]"}],"name":"PreferredAppsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"uint256","name":"voteStart","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"voteEnd","type":"uint256"},{"indexed":false,"internalType":"bytes32[]","name":"appsIds","type":"bytes32[]"}],"name":"RoundCreated","type":"event"},{"inputs":[],"name":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"bytes32[]","name":"appsIds","type":"bytes32[]"},{"internalType":"uint256[]","name":"voteWeights","type":"uint256[]"}],"name":"castVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRoundDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRoundSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"disableAutoVotingFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getAppIdsOfRound","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"getAppVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"bytes32","name":"app","type":"bytes32"}],"name":"getAppVotesQF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getRoundAppSharesCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"getRoundBaseAllocationPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAutoVotingUsersAtRoundStart","outputs":[{"internalType":"uint208","name":"","type":"uint208"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"roundStart","type":"uint256"}],"name":"getTotalVotingPower","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"hasVotedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"isEligibleForVote","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserAutoVotingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint48","name":"timepoint","type":"uint48"}],"name":"isUserAutoVotingEnabledAtTimepoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"isUserAutoVotingEnabledForRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isUserAutoVotingEnabledInCurrentRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"latestSucceededRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"quorumReached","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"roundDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"roundQuorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"roundSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startNewRound","outputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IXAllocationVotingGovernor.RoundState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"toggleAutoVoting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"totalVoters","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"totalVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundId","type":"uint256"}],"name":"totalVotesQF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"validatePersonhoodForCurrentRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"CLOCK_MODE()":"4bf5d7e9","castVote(uint256,bytes32[],uint256[])":"53ed6399","clock()":"91ddadf4","currentRoundDeadline()":"59372812","currentRoundId()":"9cbe5efd","currentRoundSnapshot()":"561b64ef","disableAutoVotingFor(address)":"673fc724","getAppIdsOfRound(uint256)":"7ace2485","getAppVotes(uint256,bytes32)":"4bb5181a","getAppVotesQF(uint256,bytes32)":"bed73010","getRoundAppSharesCap(uint256)":"0a0e74ef","getRoundBaseAllocationPercentage(uint256)":"0eca87fb","getTotalAutoVotingUsersAtRoundStart()":"a022756b","getTotalVotingPower(address,uint256)":"4cadad2f","getVotes(address,uint256)":"eb9019d4","hasVoted(uint256,address)":"43859632","hasVotedOnce(address)":"9aeb962b","isActive(uint256)":"82afd23b","isEligibleForVote(bytes32,uint256)":"d68b4c36","isUserAutoVotingEnabled(address)":"802d2709","isUserAutoVotingEnabledAtTimepoint(address,uint48)":"a461a94d","isUserAutoVotingEnabledForRound(address,uint256)":"3d4fd3c7","isUserAutoVotingEnabledInCurrentRound(address)":"5fb26367","latestSucceededRoundId(uint256)":"30097377","quorum(uint256)":"f8ce560a","quorumReached(uint256)":"d4a8dd98","roundDeadline(uint256)":"d3a368bd","roundQuorum(uint256)":"59529edd","roundSnapshot(uint256)":"d06efeda","startNewRound()":"bd85948c","state(uint256)":"3e4f49e6","supportsInterface(bytes4)":"01ffc9a7","toggleAutoVoting(address)":"8a829eda","totalVoters(uint256)":"498d91bf","totalVotes(uint256)":"19e6e158","totalVotesQF(uint256)":"fb03ec6f","validatePersonhoodForCurrentRound(address)":"cfea80ed","version()":"54fd4d50","votingPeriod()":"02a251a3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"AutoVotingEnabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"AutoVotingNotEnabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"B3TRGovernorOnlyExecutor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"citizen\",\"type\":\"address\"}],\"name\":\"DelegatedToNavigator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateAppVote\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"GovernorAlreadyCastVote\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"GovernorAppNotAvailableForVoting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GovernorInsufficientVotingPower\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"votingPeriod\",\"type\":\"uint256\"}],\"name\":\"GovernorInvalidVotingPeriod\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"GovernorNonexistentRound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"person\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"GovernorPersonhoodVerificationFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"internalType\":\"enum IXAllocationVotingGovernor.RoundState\",\"name\":\"current\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedStates\",\"type\":\"bytes32\"}],\"name\":\"GovernorUnexpectedRoundState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"name\":\"GovernorVotingThresholdNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"}],\"name\":\"InvalidContractAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"navigator\",\"type\":\"address\"}],\"name\":\"NavigatorCannotEnableAutoVoting\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"navigator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"NavigatorPreferencesNotSet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"citizen\",\"type\":\"address\"}],\"name\":\"NotDelegatedToNavigator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"SkipWindowNotReached\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"VoteAlreadyProcessed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"person\",\"type\":\"address\"}],\"name\":\"XAllocationVotingPersonhoodVerificationFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"appsIds\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"voteWeights\",\"type\":\"uint256[]\"}],\"name\":\"AllocationAutoVoteCast\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"appsIds\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"voteWeights\",\"type\":\"uint256[]\"}],\"name\":\"AllocationVoteCast\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPerson\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"appCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"votingPower\",\"type\":\"uint256\"}],\"name\":\"AutoVoteSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"AutoVotingToggled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"fingerprint\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastChangedRound\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplier\",\"type\":\"uint256\"}],\"name\":\"FreshnessMultiplierApplied\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"citizen\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"navigator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"appsIds\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"voteWeights\",\"type\":\"uint256[]\"}],\"name\":\"NavigatorVoteCast\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"citizen\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"navigator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"NavigatorVoteSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"apps\",\"type\":\"bytes32[]\"}],\"name\":\"PreferredAppsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voteStart\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voteEnd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"appsIds\",\"type\":\"bytes32[]\"}],\"name\":\"RoundCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"appsIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"voteWeights\",\"type\":\"uint256[]\"}],\"name\":\"castVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRoundDeadline\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRoundId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRoundSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"disableAutoVotingFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"getAppIdsOfRound\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"getAppVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"app\",\"type\":\"bytes32\"}],\"name\":\"getAppVotesQF\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"getRoundAppSharesCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"getRoundBaseAllocationPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalAutoVotingUsersAtRoundStart\",\"outputs\":[{\"internalType\":\"uint208\",\"name\":\"\",\"type\":\"uint208\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"roundStart\",\"type\":\"uint256\"}],\"name\":\"getTotalVotingPower\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasVoted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"hasVotedOnce\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"isActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"isEligibleForVote\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isUserAutoVotingEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"timepoint\",\"type\":\"uint48\"}],\"name\":\"isUserAutoVotingEnabledAtTimepoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"isUserAutoVotingEnabledForRound\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isUserAutoVotingEnabledInCurrentRound\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"latestSucceededRoundId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"quorum\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"quorumReached\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"roundDeadline\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"roundQuorum\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"roundSnapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startNewRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"state\",\"outputs\":[{\"internalType\":\"enum IXAllocationVotingGovernor.RoundState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"toggleAutoVoting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"totalVoters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"totalVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roundId\",\"type\":\"uint256\"}],\"name\":\"totalVotesQF\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"validatePersonhoodForCurrentRound\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"votingPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the distribution allocation voting for the x-allocation pool reward distributions. This interface was forked from OpenZeppelin's IGovernor.sol and modified to fit the needs of a voting mechanism where a user can vote on multpile x-apps belonging to the ecosystem and fractionalize their votes accross the x-apps. There can be only one round per time. After the round is created  it becomes immediately active. There can be only two possible outcomes of a round: it succeeds or it fails. To succeed the only requirement is that the quorum is reached. New allocation rounds can be started only by the Emissions contract, this way we can align the duration of emission cycles and allocation rounds. If the round fails, we will need to \\u201cfinalize\\u201d it, which means we will create a pointer to the last succeeded round where shares should be calculated. Anyone can finalize the failed round, but it will be automatically done when a new round starts.\",\"errors\":{\"AutoVotingEnabled(address)\":[{\"details\":\"The `voter` has auto-voting enabled.\"}],\"AutoVotingNotEnabled(address)\":[{\"details\":\"The `voter` has auto-voting not enabled.\"}],\"B3TRGovernorOnlyExecutor(address)\":[{\"details\":\"The `account` is not the governance executor.\"}],\"DelegatedToNavigator(address)\":[{\"details\":\"Citizen is delegated to a navigator and cannot vote manually\"}],\"DuplicateAppVote()\":[{\"details\":\"The `voter` has voted for the same app multiple times in the same transaction.\"}],\"GovernorAlreadyCastVote(address)\":[{\"details\":\"The vote was already cast.\"}],\"GovernorAppNotAvailableForVoting(bytes32)\":[{\"details\":\"The `appId` is not present in the list with the available x-apps for voting in this round.\"}],\"GovernorInsufficientVotingPower()\":[{\"details\":\"The `voter` has insufficient voting power for this round to cast the votes.\"}],\"GovernorInvalidVotingPeriod(uint256)\":[{\"details\":\"The voting period set is not a valid period.\"}],\"GovernorNonexistentRound(uint256)\":[{\"details\":\"The `roundId` doesn't exist.\"}],\"GovernorUnexpectedRoundState(uint256,uint8,bytes32)\":[{\"details\":\"The current state of a round is not the required for performing an operation. The `expectedStates` is a bitmap with the bits enabled for each RoundState enum position counting from right to left. NOTE: If `expectedState` is `bytes32(0)`, the round is expected to not be in any state (i.e. not exist). This is the case when a round that is expected to be unset is already initiated (the round is duplicated). See {Governor-_encodeStateBitmap}.\"}],\"GovernorVotingThresholdNotMet(uint256,uint256)\":[{\"details\":\"The `votingThreshold` is not met.\"}],\"InvalidCaller(address)\":[{\"details\":\"The `caller` is not valid\"}],\"InvalidContractAddress(string)\":[{\"details\":\"Thrown when a zero address is provided for a contract address parameter\",\"params\":{\"contractName\":\"The name/type of the contract that cannot be zero address\"}}],\"NavigatorCannotEnableAutoVoting(address)\":[{\"details\":\"Navigator cannot enable auto-voting\"}],\"NavigatorPreferencesNotSet(address,uint256)\":[{\"details\":\"Navigator has not set allocation preferences for the round\"}],\"NotDelegatedToNavigator(address)\":[{\"details\":\"Citizen is not delegated to any navigator\"}],\"SkipWindowNotReached(uint256)\":[{\"details\":\"The skip window (minimum time into the round before skips are allowed) has not been reached\"}],\"VoteAlreadyProcessed(address,uint256)\":[{\"details\":\"The voter has already been processed (voted or skipped) for this round\"}],\"XAllocationVotingPersonhoodVerificationFailed(address)\":[{\"details\":\"The `person` is not identified as a person via the VeBetterPassport.\"}]},\"events\":{\"AllocationAutoVoteCast(address,uint256,bytes32[],uint256[])\":{\"details\":\"Emitted when a vote is cast on behalf of an account.\"},\"AllocationVoteCast(address,uint256,bytes32[],uint256[])\":{\"details\":\"Emitted when votes are cast.\"},\"AutoVoteSkipped(address,uint256,bool,uint256,uint256)\":{\"details\":\"Emitted when auto-voting is skipped.\"},\"AutoVotingToggled(address,bool)\":{\"details\":\"Emitted when autovoting is toggled for an account.\"},\"FreshnessMultiplierApplied(address,uint256,bytes32,uint256,uint256)\":{\"details\":\"Emitted when a freshness multiplier is applied to a vote.\",\"params\":{\"fingerprint\":\"The XOR fingerprint of the voted apps\",\"lastChangedRound\":\"The round when the voter's fingerprint last changed\",\"multiplier\":\"The freshness multiplier applied (basis points, 10000 = 1x)\",\"roundId\":\"The round in which the vote was cast\",\"voter\":\"The voter address\"}},\"NavigatorVoteCast(address,address,uint256,bytes32[],uint256[])\":{\"details\":\"Emitted when a navigator casts a vote on behalf of a delegated citizen\"},\"NavigatorVoteSkipped(address,address,uint256)\":{\"details\":\"Emitted when a navigator vote is skipped (navigator dead or no preferences set)\"},\"PreferredAppsUpdated(address,bytes32[])\":{\"details\":\"Emitted when the preferred apps are updated for an account.\"},\"RoundCreated(uint256,address,uint256,uint256,bytes32[])\":{\"details\":\"Emitted when a round is created.\"}},\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Description of the clock\"},\"castVote(uint256,bytes32[],uint256[])\":{\"details\":\"Cast multiple votes at once Emits a {AllocationVoteCast} event.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting).\"},\"currentRoundDeadline()\":{\"details\":\"Returns the current allocation round block when it ends.\"},\"currentRoundId()\":{\"details\":\"Returns the current allocation round round.\"},\"currentRoundSnapshot()\":{\"details\":\"Returns the current allocation round block when it starts.\"},\"disableAutoVotingFor(address)\":{\"details\":\"Disable autovoting for a user. Called by NavigatorRegistry when a citizen delegates.\",\"params\":{\"user\":\"The address to disable autovoting for\"}},\"getAppIdsOfRound(uint256)\":{\"details\":\"Returns the ids of apps that are available for voting in a specific round.\"},\"getAppVotes(uint256,bytes32)\":{\"details\":\"Number of votes cast for a specific app in an allocation round.\"},\"getAppVotesQF(uint256,bytes32)\":{\"details\":\"Sum of the square roots of the votes cast for a specific app in an allocation round used for Quadatic Funding.\"},\"getRoundAppSharesCap(uint256)\":{\"details\":\"Returns the max amount of shares an app can get in a round.\"},\"getRoundBaseAllocationPercentage(uint256)\":{\"details\":\"Returns the base allocation percentage for funds distribution in a round.\"},\"getTotalAutoVotingUsersAtRoundStart()\":{\"details\":\"Get the total number of users who enabled auto-voting at the round start\"},\"getTotalVotingPower(address,uint256)\":{\"details\":\"Deprecated: use getVotes instead, which now includes deposit voting power.\"},\"getVotes(address,uint256)\":{\"details\":\"Voting power of an `account` at a specific `timepoint`. Note: this can be implemented in a number of ways, for example by reading the delegated balance from one (or multiple), {ERC20Votes} tokens.\"},\"hasVoted(uint256,address)\":{\"details\":\"Returns whether `account` has cast a vote on `roundId`.\"},\"hasVotedOnce(address)\":{\"details\":\"Returns true if an account has voted at least one time in any round.\"},\"isActive(uint256)\":{\"details\":\"Checks if the state of the round is {RoundState.Active}.\"},\"isEligibleForVote(bytes32,uint256)\":{\"details\":\"Returns if an app can be voted in a specific round.\"},\"isUserAutoVotingEnabled(address)\":{\"details\":\"Check if autovoting is enabled for an account\",\"params\":{\"user\":\"The address to check\"},\"returns\":{\"_0\":\"Whether autovoting is enabled for the account\"}},\"isUserAutoVotingEnabledAtTimepoint(address,uint48)\":{\"details\":\"Check if autovoting is enabled for an account at a specific timepoint\"},\"isUserAutoVotingEnabledForRound(address,uint256)\":{\"details\":\"Check if autovoting is enabled for an account at a specific round\",\"params\":{\"account\":\"The address to check\",\"roundId\":\"The round id to check\"},\"returns\":{\"_0\":\"Whether autovoting is enabled for the account at the specific round\"}},\"isUserAutoVotingEnabledInCurrentRound(address)\":{\"details\":\"Check if autovoting is enabled for an account\",\"params\":{\"account\":\"The address to check\"},\"returns\":{\"_0\":\"Whether autovoting is enabled for the account\"}},\"latestSucceededRoundId(uint256)\":{\"details\":\"Returns the id of the last round that succeeded.\"},\"quorum(uint256)\":{\"details\":\"Minimum number of cast voted required for a round to be successful. NOTE: The `timepoint` parameter corresponds to the snapshot used for counting vote. This allows to scale the quorum depending on values such as the totalSupply of a token at this timepoint (see {ERC20Votes}).\"},\"quorumReached(uint256)\":{\"details\":\"Returns if quorum was reached for a specific round.\"},\"roundDeadline(uint256)\":{\"details\":\"Timepoint at which votes close. If using block number, votes close at the end of this block, so it is possible to cast a vote during this block.\"},\"roundQuorum(uint256)\":{\"details\":\"Minimum number of cast voted required for a round to be successful. NOTE: The `roundId` parameter corresponds to the round for which the quorum is calculated.\"},\"roundSnapshot(uint256)\":{\"details\":\"Timepoint used to retrieve user's votes and quorum. If using block number (as per Compound's Comp), the snapshot is performed at the end of this block. Hence, voting for this round starts at the beginning of the following block.\"},\"startNewRound()\":{\"details\":\"Create a new allocation round (round). Vote starts immediatly and lasts for a duration specified by {votingPeriod}. Emits a {RoundCreated} event.\"},\"state(uint256)\":{\"details\":\"Current state of a round\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"toggleAutoVoting(address)\":{\"details\":\"Toggle autovoting for a user\",\"params\":{\"user\":\"The address to toggle autovoting for\"}},\"totalVoters(uint256)\":{\"details\":\"Total number of voters in an allocation round.\"},\"totalVotes(uint256)\":{\"details\":\"Total number of votes cast in an allocation round.\"},\"totalVotesQF(uint256)\":{\"details\":\"Calculates the total sum of the squares of the total Quadratic Funding (QF) votes for all apps in an allocation round.\"},\"validatePersonhoodForCurrentRound(address)\":{\"details\":\"Validates if an account is a person\"},\"version()\":{\"details\":\"Version of the governor instance (used in building the ERC712 domain separator). Default: \\\"1\\\"\"},\"votingPeriod()\":{\"details\":\"Delay between the vote start and vote end. The unit this duration is expressed in depends on the clock (see EIP-6372) this contract uses. NOTE: This value is stored when the round is submitted so that possible changes to the value do not affect proposals that have already been submitted. The type used to save it is a uint32. Consequently, while this interface returns a uint256, the value it returns should fit in a uint32.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"GovernorPersonhoodVerificationFailed(address,string)\":[{\"notice\":\"The `voter` is not identified as a person via the VeBetterPassport.\"}]},\"kind\":\"user\",\"methods\":{\"getAppVotes(uint256,bytes32)\":{\"notice\":\"module:reputation\"},\"getAppVotesQF(uint256,bytes32)\":{\"notice\":\"module:reputation\"},\"getVotes(address,uint256)\":{\"notice\":\"module:reputation\"},\"hasVoted(uint256,address)\":{\"notice\":\"module:voting\"},\"quorum(uint256)\":{\"notice\":\"module:user-config\"},\"roundDeadline(uint256)\":{\"notice\":\"module:core\"},\"roundQuorum(uint256)\":{\"notice\":\"module:user-config\"},\"roundSnapshot(uint256)\":{\"notice\":\"module:core\"},\"state(uint256)\":{\"notice\":\"module:core\"},\"toggleAutoVoting(address)\":{\"notice\":\"This function is only callable by the VOT3 contract or the user themselves\"},\"totalVoters(uint256)\":{\"notice\":\"module:reputation\"},\"totalVotes(uint256)\":{\"notice\":\"module:reputation\"},\"totalVotesQF(uint256)\":{\"notice\":\"module:reputation\"},\"version()\":{\"notice\":\"module:core\"},\"votingPeriod()\":{\"notice\":\"module:user-config\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IXAllocationVotingGovernor.sol\":\"IXAllocationVotingGovernor\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]}},\"version\":1}"}},"contracts/libraries/X2EarnAppsDataTypes.sol":{"X2EarnAppsDataTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220acab15f39e09a008e7a66d72b873c382d6a6c950c8de571617e21d7a0c21dbb964736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC 0xAB ISZERO RETURN SWAP15 MULMOD LOG0 ADDMOD 0xE7 0xA6 PUSH14 0x72B873C382D6A6C950C8DE571617 0xE2 SAR PUSH27 0xC21DBB964736F6C63430008140033000000000000000000000000 ","sourceMap":"57:318:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;57:318:35;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220acab15f39e09a008e7a66d72b873c382d6a6c950c8de571617e21d7a0c21dbb964736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC 0xAB ISZERO RETURN SWAP15 MULMOD LOG0 ADDMOD 0xE7 0xA6 PUSH14 0x72B873C382D6A6C950C8DE571617 0xE2 SAR PUSH27 0xC21DBB964736F6C63430008140033000000000000000000000000 ","sourceMap":"57:318:35:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/X2EarnAppsDataTypes.sol\":\"X2EarnAppsDataTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]}},\"version\":1}"}},"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol":{"VechainNodesDataTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e5c6f09859c4bd4cf70fce4b17d8524c0614d6be548805985d0722eb666fa46164736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 0xC6 CREATE SWAP9 MSIZE 0xC4 0xBD 0x4C 0xF7 0xF 0xCE 0x4B OR 0xD8 MSTORE 0x4C MOD EQ 0xD6 0xBE SLOAD DUP9 SDIV SWAP9 0x5D SMOD 0x22 0xEB PUSH7 0x6FA46164736F6C PUSH4 0x43000814 STOP CALLER ","sourceMap":"57:754:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;57:754:36;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e5c6f09859c4bd4cf70fce4b17d8524c0614d6be548805985d0722eb666fa46164736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 0xC6 CREATE SWAP9 MSIZE 0xC4 0xBD 0x4C 0xF7 0xF 0xCE 0x4B OR 0xD8 MSTORE 0x4C MOD EQ 0xD6 0xBE SLOAD DUP9 SDIV SWAP9 0x5D SMOD 0x22 0xEB PUSH7 0x6FA46164736F6C PUSH4 0x43000814 STOP CALLER ","sourceMap":"57:754:36:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":\"VechainNodesDataTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]}},\"version\":1}"}},"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol":{"DataTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eab28b7ddeb2788b28cffda0d6b21dc9b00b790284a67757368ea1b3bfec13d164736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA 0xB2 DUP12 PUSH30 0xDEB2788B28CFFDA0D6B21DC9B00B790284A67757368EA1B3BFEC13D16473 PUSH16 0x6C634300081400330000000000000000 ","sourceMap":"1459:3888:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1459:3888:37;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eab28b7ddeb2788b28cffda0d6b21dc9b00b790284a67757368ea1b3bfec13d164736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA 0xB2 DUP12 PUSH30 0xDEB2788B28CFFDA0D6B21DC9B00B790284A67757368EA1B3BFEC13D16473 PUSH16 0x6C634300081400330000000000000000 ","sourceMap":"1459:3888:37:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"DataTypes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for the StargateNFT contract to store data structure definitions used across the contract and libraries\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":\"DataTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]}},\"version\":1}"}},"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol":{"INodeManagementV3":{"abi":[{"inputs":[],"name":"NodeManagementInvalidNodeId","type":"error"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"address","name":"delegatee","type":"address"}],"name":"NodeManagementNodeAlreadyDelegated","type":"error"},{"inputs":[],"name":"NodeManagementNodeNotDelegated","type":"error"},{"inputs":[],"name":"NodeManagementNonNodeHolder","type":"error"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"NodeManagementNotNodeOwner","type":"error"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"NodeManagementNotNodeOwnerOrManager","type":"error"},{"inputs":[],"name":"NodeManagementSelfDelegation","type":"error"},{"inputs":[],"name":"NodeManagementZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nodeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"delegatee","type":"address"},{"indexed":false,"internalType":"bool","name":"delegated","type":"bool"}],"name":"NodeDelegated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldContractAddress","type":"address"},{"indexed":false,"internalType":"address","name":"newContractAddress","type":"address"}],"name":"StargateNftSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldContractAddress","type":"address"},{"indexed":false,"internalType":"address","name":"newContractAddress","type":"address"}],"name":"VechainNodeContractSet","type":"event"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"delegateNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"enum VechainNodesDataTypes.NodeSource","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getDirectNodeOwnership","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getDirectNodesOwnership","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNodeIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeLevel","outputs":[{"internalType":"uint8","name":"levelId","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNodesDelegatedTo","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserNodes","outputs":[{"components":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"uint8","name":"nodeLevel","type":"uint8"},{"internalType":"address","name":"xNodeOwner","type":"address"},{"internalType":"bool","name":"isXNodeHolder","type":"bool"},{"internalType":"bool","name":"isXNodeDelegated","type":"bool"},{"internalType":"bool","name":"isXNodeDelegator","type":"bool"},{"internalType":"bool","name":"isXNodeDelegatee","type":"bool"},{"internalType":"address","name":"delegatee","type":"address"}],"internalType":"struct INodeManagementV3.NodeInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserStargateNFTsInfo","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint8","name":"levelId","type":"uint8"},{"internalType":"uint64","name":"mintedAtBlock","type":"uint64"},{"internalType":"uint256","name":"vetAmountStaked","type":"uint256"},{"internalType":"uint48","name":"lastVetGeneratedVthoClaimTimestamp_deprecated","type":"uint48"}],"internalType":"struct DataTypes.Token[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUsersNodeLevels","outputs":[{"internalType":"uint8[]","name":"","type":"uint8[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vechainNodesContract","type":"address"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"upgrader","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"isDirectNodeOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"isLegacyNode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"isNodeDelegated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isNodeDelegator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isNodeHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"isNodeManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"removeNodeDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stargateNft","type":"address"}],"name":"setStargateNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vechainNodesContract","type":"address"}],"name":"setVechainNodesContract","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"delegateNode(address,uint256)":"c79bb94b","exists(uint256)":"4f558e79","getDirectNodeOwnership(address)":"97a4f3c4","getDirectNodesOwnership(address)":"0470bfcc","getNodeIds(address)":"2e4e2531","getNodeLevel(uint256)":"1ceae42f","getNodeManager(uint256)":"9e2c2f3e","getNodeOwner(uint256)":"5d3c373f","getNodesDelegatedTo(address)":"766b2a60","getUserNodes(address)":"2130fe23","getUserStargateNFTsInfo(address)":"a7c928cc","getUsersNodeLevels(address)":"d466d80b","initialize(address,address,address)":"c0c53b8b","isDirectNodeOwner(address,uint256)":"3b276ecc","isLegacyNode(uint256)":"b721e8e0","isNodeDelegated(uint256)":"53fff87c","isNodeDelegator(address)":"4f444d25","isNodeHolder(address)":"beba8408","isNodeManager(address,uint256)":"3258cc2f","removeNodeDelegation(uint256)":"61302213","setStargateNft(address)":"b9349c90","setVechainNodesContract(address)":"0df9dff8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NodeManagementInvalidNodeId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"NodeManagementNodeAlreadyDelegated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NodeManagementNodeNotDelegated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NodeManagementNonNodeHolder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"NodeManagementNotNodeOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"NodeManagementNotNodeOwnerOrManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NodeManagementSelfDelegation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NodeManagementZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"delegated\",\"type\":\"bool\"}],\"name\":\"NodeDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newContractAddress\",\"type\":\"address\"}],\"name\":\"StargateNftSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newContractAddress\",\"type\":\"address\"}],\"name\":\"VechainNodeContractSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"delegateNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"enum VechainNodesDataTypes.NodeSource\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getDirectNodeOwnership\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getDirectNodesOwnership\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNodeIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeLevel\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNodesDelegatedTo\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserNodes\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nodeLevel\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"xNodeOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isXNodeHolder\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isXNodeDelegated\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isXNodeDelegator\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isXNodeDelegatee\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"internalType\":\"struct INodeManagementV3.NodeInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserStargateNFTsInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"mintedAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"vetAmountStaked\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"lastVetGeneratedVthoClaimTimestamp_deprecated\",\"type\":\"uint48\"}],\"internalType\":\"struct DataTypes.Token[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUsersNodeLevels\",\"outputs\":[{\"internalType\":\"uint8[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vechainNodesContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"isDirectNodeOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"isLegacyNode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"isNodeDelegated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isNodeDelegator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isNodeHolder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"isNodeManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"removeNodeDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stargateNft\",\"type\":\"address\"}],\"name\":\"setStargateNft\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vechainNodesContract\",\"type\":\"address\"}],\"name\":\"setVechainNodesContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"NodeManagementNodeAlreadyDelegated(uint256,address)\":[{\"params\":{\"delegatee\":\"The address of the current delegatee.\",\"nodeId\":\"The ID of the node that is already delegated.\"}}],\"NodeManagementNotNodeOwner(uint256)\":[{\"params\":{\"nodeId\":\"The ID of the node that the user does not own.\"}}],\"NodeManagementNotNodeOwnerOrManager(uint256)\":[{\"params\":{\"nodeId\":\"The ID of the node that the user does not manage.\"}}]},\"events\":{\"NodeDelegated(uint256,address,bool)\":{\"params\":{\"delegated\":\"A boolean indicating whether the node is delegated (true) or the delegation is removed (false).\",\"delegatee\":\"The address to which the node is delegated or from which the delegation is removed.\",\"nodeId\":\"The ID of the node being delegated or having its delegation removed.\"}},\"StargateNftSet(address,address)\":{\"details\":\"Emit when the stargate NFT contract address is set or updated\"},\"VechainNodeContractSet(address,address)\":{\"details\":\"Emit when the vechain node contract address is set or updated\"}},\"kind\":\"dev\",\"methods\":{\"delegateNode(address,uint256)\":{\"params\":{\"delegatee\":\"The address to delegate the node to.\",\"nodeId\":\"The ID of the node to delegate.\"}},\"exists(uint256)\":{\"params\":{\"nodeId\":\"The ID of the node to check.\"},\"returns\":{\"_0\":\"bool True if the node exists, false otherwise.\",\"_1\":\"NodeSource The source of the node.\"}},\"getDirectNodeOwnership(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"uint256 The ID of the owned node (0 if none).\"}},\"getDirectNodesOwnership(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"uint256[] The node IDs directly owned by the user. If no nodes are owned, an empty array is returned.\"}},\"getNodeIds(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"uint256 The node ID associated with the user.\"}},\"getNodeLevel(uint256)\":{\"params\":{\"nodeId\":\"The token ID of the endorsing node.\"},\"returns\":{\"levelId\":\"The node level of the specified token ID.\"}},\"getNodeManager(uint256)\":{\"params\":{\"nodeId\":\"The ID of the node for which the manager address is being retrieved.\"},\"returns\":{\"_0\":\"address The address of the manager of the specified node.\"}},\"getNodeOwner(uint256)\":{\"params\":{\"nodeId\":\"The ID of the node for which the owner address is being retrieved.\"},\"returns\":{\"_0\":\"address The address of the owner of the specified node.\"}},\"getNodesDelegatedTo(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"uint256[] The node IDs delegated to the user.\"}},\"getUserNodes(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"uint256[] The node IDs owned by the user.\"}},\"getUserStargateNFTsInfo(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"uint256[] The node IDs owned by the user.\"}},\"getUsersNodeLevels(address)\":{\"params\":{\"user\":\"The address of the user managing the node.\"},\"returns\":{\"_0\":\"uint8[] The node level of the node managed by the user.\"}},\"initialize(address,address,address)\":{\"params\":{\"admin\":\"The address to be granted the default admin role.\",\"upgrader\":\"The address to be granted the upgrader role.\",\"vechainNodesContract\":\"The address of the VeChain Nodes contract.\"}},\"isDirectNodeOwner(address,uint256)\":{\"params\":{\"nodeId\":\"The ID of the node to check.\",\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"bool True if the user is the direct owner of the node, false otherwise.\"}},\"isLegacyNode(uint256)\":{\"params\":{\"nodeId\":\"The ID of the node to check.\"},\"returns\":{\"_0\":\"bool True if the node is a legacy node, false otherwise.\"}},\"isNodeDelegated(uint256)\":{\"params\":{\"nodeId\":\"The node ID to check for.\"},\"returns\":{\"_0\":\"bool True if the node is delegated.\"}},\"isNodeDelegator(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"bool True if the user is a delegator.\"}},\"isNodeHolder(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"bool True if the user is a node holder.\"}},\"isNodeManager(address,uint256)\":{\"params\":{\"nodeId\":\"The node ID to check for.\",\"user\":\"The address of the user to check.\"},\"returns\":{\"_0\":\"bool True if the user is holding the node ID and it is a valid node.\"}},\"removeNodeDelegation(uint256)\":{\"params\":{\"nodeId\":\"The ID of the node to remove the delegation from.\"}},\"setStargateNft(address)\":{\"params\":{\"stargateNft\":\"The new address of the Stargate NFT contract.\"}},\"setVechainNodesContract(address)\":{\"params\":{\"vechainNodesContract\":\"The new address of the VeChain Nodes contract.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NodeManagementInvalidNodeId()\":[{\"notice\":\"Error indicating that a node ID is not valid.\"}],\"NodeManagementNodeAlreadyDelegated(uint256,address)\":[{\"notice\":\"Error indicating that the node is already delegated to another user.\"}],\"NodeManagementNodeNotDelegated()\":[{\"notice\":\"Error indicating that the node is not currently delegated.\"}],\"NodeManagementNonNodeHolder()\":[{\"notice\":\"Error indicating that the caller does not own a node.\"}],\"NodeManagementNotNodeOwner(uint256)\":[{\"notice\":\"Error indicating that the user does not own the node.\"}],\"NodeManagementNotNodeOwnerOrManager(uint256)\":[{\"notice\":\"Error indicating that the user does not manage the node.\"}],\"NodeManagementSelfDelegation()\":[{\"notice\":\"Error indicating that an address is being set to the zero address.\"}],\"NodeManagementZeroAddress()\":[{\"notice\":\"Error indicating that an address is being set to the zero address.\"}]},\"events\":{\"NodeDelegated(uint256,address,bool)\":{\"notice\":\"Event emitted when a node is delegated or the delegation is removed.\"}},\"kind\":\"user\",\"methods\":{\"delegateNode(address,uint256)\":{\"notice\":\"Delegate a node to another address.\"},\"exists(uint256)\":{\"notice\":\"Check if a node exists in the VeChainNodes contract or the StargateNFT contract\"},\"getDirectNodeOwnership(address)\":{\"notice\":\"Check if a user directly owns a node (not delegated).\"},\"getDirectNodesOwnership(address)\":{\"notice\":\"Retrieves the node IDs directly owned by a user.\"},\"getNodeIds(address)\":{\"notice\":\"Retrieve the node ID associated with a user, either through direct ownership or delegation.\"},\"getNodeLevel(uint256)\":{\"notice\":\"Retrieves the node level of a given node ID.\"},\"getNodeManager(uint256)\":{\"notice\":\"Retrieves the address of the user managing the node ID endorsement either through ownership or delegation.\"},\"getNodeOwner(uint256)\":{\"notice\":\"Retrieves the address of the true owner of a node.\"},\"getNodesDelegatedTo(address)\":{\"notice\":\"Retrieves the node IDs delegated to a user.\"},\"getUserNodes(address)\":{\"notice\":\"Retrieves the node IDs owned by a user.\"},\"getUserStargateNFTsInfo(address)\":{\"notice\":\"Retrieves the node IDs owned by a user.\"},\"getUsersNodeLevels(address)\":{\"notice\":\"Retrieves the node level of a user's managed node.\"},\"initialize(address,address,address)\":{\"notice\":\"Initialize the contract with the specified VeChain Nodes contract, admin, and upgrader addresses.\"},\"isDirectNodeOwner(address,uint256)\":{\"notice\":\"Checks if a user is the direct owner of a node.\"},\"isLegacyNode(uint256)\":{\"notice\":\"Checks if a node is a legacy node.\"},\"isNodeDelegated(uint256)\":{\"notice\":\"Check if a node is delegated.\"},\"isNodeDelegator(address)\":{\"notice\":\"Check if a user is a delegator.\"},\"isNodeHolder(address)\":{\"notice\":\"Check if a user is a node holder (either directly or through delegation).\"},\"isNodeManager(address,uint256)\":{\"notice\":\"Check if a user is holding a specific node ID either directly or through delegation.\"},\"removeNodeDelegation(uint256)\":{\"notice\":\"Remove the delegation of a node.\"},\"setStargateNft(address)\":{\"notice\":\"Set the address of the Stargate NFT contract.\"},\"setVechainNodesContract(address)\":{\"notice\":\"Set the address of the VeChain Nodes contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":\"INodeManagementV3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]}},\"version\":1}"}},"contracts/mocks/Stargate/interfaces/IStargate.sol":{"IStargate":{"abi":[{"inputs":[],"name":"DelegationExitAlreadyRequested","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"DelegationNotFound","type":"error"},{"inputs":[{"internalType":"uint256","name":"contractBalance","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"InsufficientContractBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"enum IStargate.DelegationStatus","name":"status","type":"uint8"}],"name":"InvalidDelegationStatus","type":"error"},{"inputs":[],"name":"InvalidInitializationParams","type":"error"},{"inputs":[],"name":"InvalidMaxClaimablePeriods","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"MaxClaimablePeriodsExceeded","type":"error"},{"inputs":[],"name":"OnlyStargateNFTAndProtocolStaker","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenAlreadyDelegated","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenUnderMaturityPeriod","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"UnauthorizedUser","type":"error"},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"name":"ValidatorNotActiveOrQueued","type":"error"},{"inputs":[{"internalType":"uint8","name":"levelId","type":"uint8"},{"internalType":"uint256","name":"required","type":"uint256"},{"internalType":"uint256","name":"provided","type":"uint256"}],"name":"VetAmountMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"VetTransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"delegationId","type":"uint256"},{"indexed":false,"internalType":"uint48","name":"exitBlock","type":"uint48"}],"name":"DelegationExitRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"delegationId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"levelId","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"probabilityMultiplier","type":"uint8"}],"name":"DelegationInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"delegationId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"firstClaimedPeriod","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"lastClaimedPeriod","type":"uint32"}],"name":"DelegationRewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"delegationId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"levelId","type":"uint8"}],"name":"DelegationWithdrawn","type":"event"},{"inputs":[],"name":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"claimableDelegationPeriods","outputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"claimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint32","name":"_batch","type":"uint32"}],"name":"claimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_validator","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getDelegationDetails","outputs":[{"components":[{"internalType":"uint256","name":"delegationId","type":"uint256"},{"internalType":"address","name":"validator","type":"address"},{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint8","name":"probabilityMultiplier","type":"uint8"},{"internalType":"uint32","name":"startPeriod","type":"uint32"},{"internalType":"uint32","name":"endPeriod","type":"uint32"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"enum IStargate.DelegationStatus","name":"status","type":"uint8"}],"internalType":"struct IStargate.Delegation","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getDelegationIdOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getDelegationStatus","outputs":[{"internalType":"enum IStargate.DelegationStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"},{"internalType":"uint32","name":"_period","type":"uint32"}],"name":"getDelegatorsEffectiveStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getEffectiveStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxClaimablePeriods","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"hasRequestedExit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"lockedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_validator","type":"address"}],"name":"migrateAndDelegate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"requestDelegationExit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_maxClaimablePeriods","type":"uint32"}],"name":"setMaxClaimablePeriods","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_levelId","type":"uint8"}],"name":"stake","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_levelId","type":"uint8"},{"internalType":"address","name":"_validator","type":"address"}],"name":"stakeAndDelegate","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"CLOCK_MODE()":"4bf5d7e9","claimRewards(uint256)":"0962ef79","claimableDelegationPeriods(uint256)":"f040812e","claimableRewards(uint256)":"9835fc7e","claimableRewards(uint256,uint32)":"e2735134","clock()":"91ddadf4","delegate(uint256,address)":"08bbb824","getDelegationDetails(uint256)":"eabfa044","getDelegationIdOfToken(uint256)":"07a9bbbb","getDelegationStatus(uint256)":"f4655cd1","getDelegatorsEffectiveStake(address,uint32)":"f2d804ef","getEffectiveStake(uint256)":"0f20d6f8","getMaxClaimablePeriods()":"b0d76cad","hasRequestedExit(uint256)":"71569e2f","lockedRewards(uint256)":"c728b740","migrateAndDelegate(uint256,address)":"584a983f","pause()":"8456cb59","requestDelegationExit(uint256)":"69e79b7d","setMaxClaimablePeriods(uint32)":"9af02d9d","stake(uint8)":"604f2177","stakeAndDelegate(uint8,address)":"15fa1bdf","unpause()":"3f4ba83a","unstake(uint256)":"2e17de78"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DelegationExitAlreadyRequested\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"DelegationNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contractBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientContractBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum IStargate.DelegationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegationStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationParams\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMaxClaimablePeriods\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxClaimablePeriodsExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyStargateNFTAndProtocolStaker\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenAlreadyDelegated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenUnderMaturityPeriod\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"UnauthorizedUser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"ValidatorNotActiveOrQueued\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"}],\"name\":\"VetAmountMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"VetTransferFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"exitBlock\",\"type\":\"uint48\"}],\"name\":\"DelegationExitRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"probabilityMultiplier\",\"type\":\"uint8\"}],\"name\":\"DelegationInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"firstClaimedPeriod\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"lastClaimedPeriod\",\"type\":\"uint32\"}],\"name\":\"DelegationRewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"}],\"name\":\"DelegationWithdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"claimableDelegationPeriods\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"claimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_batch\",\"type\":\"uint32\"}],\"name\":\"claimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDelegationDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"delegationId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"probabilityMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"startPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endPeriod\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isLocked\",\"type\":\"bool\"},{\"internalType\":\"enum IStargate.DelegationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IStargate.Delegation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDelegationIdOfToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDelegationStatus\",\"outputs\":[{\"internalType\":\"enum IStargate.DelegationStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_period\",\"type\":\"uint32\"}],\"name\":\"getDelegatorsEffectiveStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getEffectiveStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxClaimablePeriods\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"hasRequestedExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"lockedRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"migrateAndDelegate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"requestDelegationExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_maxClaimablePeriods\",\"type\":\"uint32\"}],\"name\":\"setMaxClaimablePeriods\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_levelId\",\"type\":\"uint8\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_levelId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"stakeAndDelegate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DelegationExitRequested(uint256,address,uint256,uint48)\":{\"details\":\"When the delegation is pending, exit is immediate and this event is emitted\",\"params\":{\"delegationId\":\"The ID of the delegation\",\"exitBlock\":\"The block at which the delegation exit will be processed, in case the delegation is pending it will be the current block\",\"tokenId\":\"The ID of the token that was delegated\",\"validator\":\"The validator that was delegated to\"}},\"DelegationInitiated(uint256,address,uint256,uint256,uint8,uint8)\":{\"params\":{\"amount\":\"The amount of VET delegated\",\"delegationId\":\"The ID of the delegation\",\"levelId\":\"The level ID of the token\",\"probabilityMultiplier\":\"The probability multiplier of the delegation\",\"tokenId\":\"The ID of the token that was delegated\",\"validator\":\"The validator that was delegated to\"}},\"DelegationRewardsClaimed(address,uint256,uint256,uint256,uint32,uint32)\":{\"params\":{\"amount\":\"The amount of rewards claimed\",\"delegationId\":\"The ID of the delegation that claimed the rewards\",\"firstClaimedPeriod\":\"The first period that the rewards were claimed for\",\"lastClaimedPeriod\":\"The last period that the rewards were claimed for\",\"receiver\":\"The address that claimed the rewards\",\"tokenId\":\"The ID of the token that claimed the rewards\"}},\"DelegationWithdrawn(uint256,address,uint256,uint256,uint8)\":{\"details\":\"This is emitted when the delegation is withdrawn, either because the user requested to exit or because the delegation is called with a new validator or if requestDelegationExit is called the delegation is still pending.\",\"params\":{\"amount\":\"The amount of VET withdrawn\",\"delegationId\":\"The ID of the delegation\",\"levelId\":\"The level ID of the token\",\"tokenId\":\"The ID of the token that was delegated\",\"validator\":\"The validator that was delegated to\"}}},\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Call clock() to know the current clock\"},\"claimRewards(uint256)\":{\"details\":\"This function will claim the rewards for each period between the last claimed period and the last claimable period.\",\"params\":{\"_tokenId\":\"- the token ID\"}},\"claimableDelegationPeriods(uint256)\":{\"params\":{\"_tokenId\":\"- the token ID\"},\"returns\":{\"_0\":\"lastClaimedPeriod - the latest claimed period\",\"_1\":\"endPeriod - the end period of the latest delegation\"}},\"claimableRewards(uint256)\":{\"details\":\"This is the sum of the claimable rewards for each period between the last claimed period and the last claimable period.\",\"params\":{\"_tokenId\":\"- the token ID\"},\"returns\":{\"_0\":\"The claimable rewards for the token\"}},\"claimableRewards(uint256,uint32)\":{\"details\":\"This is the sum of the claimable rewards for each period between the last claimed period and the last claimable period.\",\"params\":{\"_batch\":\"- the batch to check\",\"_tokenId\":\"- the token ID\"},\"returns\":{\"_0\":\"The claimable rewards for the token\"}},\"clock()\":{\"details\":\"Call CLOCK_MODE() to know if the clock is in timestamp or block mode\"},\"delegate(uint256,address)\":{\"params\":{\"_tokenId\":\"- the token ID to delegate\",\"_validator\":\"- the validator to delegate to\"}},\"getDelegationDetails(uint256)\":{\"details\":\"If the token does not have any delegation, it will return a set of default values\",\"params\":{\"_tokenId\":\"- the token ID\"},\"returns\":{\"_0\":\"The details of the delegation\"}},\"getDelegationIdOfToken(uint256)\":{\"params\":{\"_tokenId\":\"- the token ID\"},\"returns\":{\"_0\":\"The delegation id\"}},\"getDelegationStatus(uint256)\":{\"params\":{\"_tokenId\":\"- the token ID\"},\"returns\":{\"_0\":\"The status of the delegation\"}},\"getDelegatorsEffectiveStake(address,uint32)\":{\"params\":{\"_period\":\"- the period to check\",\"_validator\":\"- the validator address\"},\"returns\":{\"_0\":\"The total effective stake of the delegators of the validator in the period\"}},\"getEffectiveStake(uint256)\":{\"details\":\"The effective stake is the amount of VET that is staked by the token multiplied by the reward multiplier of the level, and is used to calculate the share of the delegator in the period.\",\"params\":{\"_tokenId\":\"- the token ID\"},\"returns\":{\"_0\":\"The effective stake of the token\"}},\"getMaxClaimablePeriods()\":{\"returns\":{\"_0\":\"The max claimable periods\"}},\"hasRequestedExit(uint256)\":{\"details\":\"This will return true even if the delegation is EXITED\",\"params\":{\"_tokenId\":\"- the token ID\"},\"returns\":{\"_0\":\"True if the user has requested to exit the delegation\"}},\"lockedRewards(uint256)\":{\"details\":\"When the delegation is active, the rewards rewards of the current period are locked and cannot be claimed until the next period. This function retur\",\"params\":{\"_tokenId\":\"- the token ID\"},\"returns\":{\"_0\":\"The locked rewards for the token\"}},\"migrateAndDelegate(uint256,address)\":{\"params\":{\"_tokenId\":\"The ID of the token to migrate\",\"_validator\":\"The validator to delegate to\"}},\"pause()\":{\"details\":\"Only the DEFAULT_ADMIN_ROLE can call this functionPausing the contract will prevent minting\"},\"requestDelegationExit(uint256)\":{\"details\":\"Exiting a pending delegation, differs from exiting an active delegation. In the first case, it is enough to withdraw the VET from the protocol, in the second case we will signal to the protocol to exit the delegation.\",\"params\":{\"_tokenId\":\"- the token ID to request the exit for\"}},\"setMaxClaimablePeriods(uint32)\":{\"params\":{\"_maxClaimablePeriods\":\"- the max claimable periods\"}},\"stake(uint8)\":{\"params\":{\"_levelId\":\"The ID of the token level to mint, VET as msg.value\"},\"returns\":{\"tokenId\":\"The ID of the minted NFT\"}},\"stakeAndDelegate(uint8,address)\":{\"params\":{\"_levelId\":\"The ID of the token level to mint, VET as msg.value\",\"_validator\":\"The validator to delegate to\"},\"returns\":{\"tokenId\":\"The ID of the minted NFT\"}},\"unpause()\":{\"details\":\"Only the DEFAULT_ADMIN_ROLE can call this function\"},\"unstake(uint256)\":{\"details\":\"Emits a {IStargate.TokenUnstaked} event\",\"params\":{\"_tokenId\":\"The ID of the token to unstake\"}}},\"version\":1},\"userdoc\":{\"events\":{\"DelegationExitRequested(uint256,address,uint256,uint48)\":{\"notice\":\"Emitted when a delegation exit is requested\"},\"DelegationInitiated(uint256,address,uint256,uint256,uint8,uint8)\":{\"notice\":\"Emitted when a delegation is initiated\"},\"DelegationRewardsClaimed(address,uint256,uint256,uint256,uint32,uint32)\":{\"notice\":\"Emitted when rewards are claimed\"},\"DelegationWithdrawn(uint256,address,uint256,uint256,uint8)\":{\"notice\":\"Emitted when a delegation is withdrawn\"}},\"kind\":\"user\",\"methods\":{\"CLOCK_MODE()\":{\"notice\":\"Returns the clock mode\"},\"claimRewards(uint256)\":{\"notice\":\"Claims all the rewards for a token\"},\"claimableDelegationPeriods(uint256)\":{\"notice\":\"Returns the latestClaimedPeriod and the endPeriod of the latest delegation of a token\"},\"claimableRewards(uint256)\":{\"notice\":\"Returns the claimable rewards for a token for batch 0 (first 832 periods)\"},\"claimableRewards(uint256,uint32)\":{\"notice\":\"Returns the claimable rewards for a token for a specific batch\"},\"clock()\":{\"notice\":\"Returns the current clock\"},\"delegate(uint256,address)\":{\"notice\":\"Delegates the token to the validator to increase its probability of being selected as a validator and accumulate rewards for each mined block. The amount of rewards depends on the effective stake compared to the total effective stake of the validator. The delegation is not active until the start of the next period of the validator. In the meantime, the user can change the validator by calling this function again, cancel the delegation or unstaking the token. Once the delegation is active, the user can request to exit the delegation by calling requestDelegationExit. The token will remain delegated until the end of the validator period end block. This contract will need to move the VET associated to the token from the StargateNFT contract and deposit it in the protocol staking contract. If the token was previously delegated, the VET will be moved from the protocol staking contract to this contract again and then moved back to the protocol staking contract.\"},\"getDelegationDetails(uint256)\":{\"notice\":\"Returns the details of the delegation of a token\"},\"getDelegationIdOfToken(uint256)\":{\"notice\":\"Will return the latest delegation id of a token (regardless of its status)\"},\"getDelegationStatus(uint256)\":{\"notice\":\"Will fetch the latest delegation of a token and will return its status\"},\"getDelegatorsEffectiveStake(address,uint32)\":{\"notice\":\"Returns the total effective stake of the delegators of a validator in a specific period\"},\"getEffectiveStake(uint256)\":{\"notice\":\"Returns the effective stake of a token\"},\"getMaxClaimablePeriods()\":{\"notice\":\"Returns the max claimable periods\"},\"hasRequestedExit(uint256)\":{\"notice\":\"Will return true if the user has requested to exit the latest delegation (regardless of its status)\"},\"lockedRewards(uint256)\":{\"notice\":\"Returns the locked rewards for a token\"},\"migrateAndDelegate(uint256,address)\":{\"notice\":\"Migrates a token from the legacy nodes contract to StargateNFT, and delegates it\"},\"pause()\":{\"notice\":\"Pauses the StargateNFT contract\"},\"requestDelegationExit(uint256)\":{\"notice\":\"Requests a delegation exit by signalling the exit to the protocol staking contract. If the delegation is active, the user will need to wait for then end of the period to actually exit, if instead the delegation is pending the user will exit immediatly. Once the request to exit is signalled, the user cannot undo it and cannot request to exit again.\"},\"setMaxClaimablePeriods(uint32)\":{\"notice\":\"Sets the max claimable periods\"},\"stake(uint8)\":{\"notice\":\"Stakes VET and mints an NFT\"},\"stakeAndDelegate(uint8,address)\":{\"notice\":\"Stakes VET and mints an NFT, and delegates it\"},\"unpause()\":{\"notice\":\"Unpauses the StargateNFT contract\"},\"unstake(uint256)\":{\"notice\":\"Unstakes a token from the Stargate contract, will return the VET to the user and burn the NFT for token to be unstaked, its delegation status must not be ACTIVE\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/Stargate/interfaces/IStargate.sol\":\"IStargate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]}},\"version\":1}"}},"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol":{"IStargateDelegation":{"abi":[{"inputs":[],"name":"AddressCannotBeZero","type":"error"},{"inputs":[],"name":"ArrayCannotBeEmpty","type":"error"},{"inputs":[],"name":"DelegationExitAlreadyRequested","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"name":"InsufficientVthoBalanceForRewardsClaim","type":"error"},{"inputs":[],"name":"InvalidDelegationPeriod","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"}],"name":"InvalidNFTLevel","type":"error"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"InvalidVthoRewardPerBlock","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTAlreadyDelegated","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTNotDelegated","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTUnderMaturityPeriod","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NoLostRewardsToClaim","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NoRewardsToClaim","type":"error"},{"inputs":[],"name":"RewardsAccumulationPeriodEnded","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"UnauthorizedUser","type":"error"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"VthoTransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"delegationEndBlock","type":"uint256"}],"name":"DelegationExitRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewards","type":"uint256"},{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"}],"name":"DelegationRewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardsAccumulationStartBlock","type":"uint256"},{"indexed":true,"internalType":"bool","name":"isDelegationForever","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"DelegationSimulationStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LostRewardsAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LostRewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LostRewardsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardsAccumulationEndBlock","type":"uint256"}],"name":"RewardsAccumulationEndBlockSet","type":"event"},{"inputs":[],"name":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"accumulatedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"claimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"currentDelegationPeriodEndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bool","name":"_delegateForever","type":"bool"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getDelegationDetails","outputs":[{"internalType":"bool","name":"isDelegationActive","type":"bool"},{"internalType":"uint256","name":"claimableRewards","type":"uint256"},{"internalType":"uint256","name":"rewardsAccumulationStartBlock","type":"uint256"},{"internalType":"uint256","name":"delegationEndBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getDelegationEndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelegationPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardsAccumulationEndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getRewardsAccumulationStartBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_level","type":"uint256"}],"name":"getVthoRewardPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"isDelegationActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"requestDelegationExit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"CLOCK_MODE()":"4bf5d7e9","accumulatedRewards(uint256)":"9bc4fd6e","claimRewards(uint256)":"0962ef79","claimableRewards(uint256)":"9835fc7e","clock()":"91ddadf4","currentDelegationPeriodEndBlock(uint256)":"d57610d0","delegate(uint256,bool)":"3207555d","getDelegationDetails(uint256)":"eabfa044","getDelegationEndBlock(uint256)":"a2a96ed4","getDelegationPeriod()":"ebf1fe14","getRewardsAccumulationEndBlock()":"a38e3941","getRewardsAccumulationStartBlock(uint256)":"5be826c5","getVthoRewardPerBlock(uint256)":"dc4dfd46","isDelegationActive(uint256)":"83c04aa2","requestDelegationExit(uint256)":"69e79b7d","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ArrayCannotBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegationExitAlreadyRequested\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"InsufficientVthoBalanceForRewardsClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegationPeriod\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"}],\"name\":\"InvalidNFTLevel\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidVthoRewardPerBlock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NFTAlreadyDelegated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NFTNotDelegated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NFTUnderMaturityPeriod\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NoLostRewardsToClaim\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NoRewardsToClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsAccumulationPeriodEnded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"UnauthorizedUser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"VthoTransferFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegationEndBlock\",\"type\":\"uint256\"}],\"name\":\"DelegationExitRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"DelegationRewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardsAccumulationStartBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isDelegationForever\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"DelegationSimulationStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LostRewardsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LostRewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LostRewardsRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardsAccumulationEndBlock\",\"type\":\"uint256\"}],\"name\":\"RewardsAccumulationEndBlockSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"accumulatedRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"claimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"currentDelegationPeriodEndBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_delegateForever\",\"type\":\"bool\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDelegationDetails\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isDelegationActive\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"claimableRewards\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardsAccumulationStartBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delegationEndBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDelegationEndBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDelegationPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRewardsAccumulationEndBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getRewardsAccumulationStartBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_level\",\"type\":\"uint256\"}],\"name\":\"getVthoRewardPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"isDelegationActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"requestDelegationExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AddressCannotBeZero()\":[{\"notice\":\"Error thrown when an address is the zero address\"}],\"ArrayCannotBeEmpty()\":[{\"notice\":\"Error thrown when an array is empty\"}],\"DelegationExitAlreadyRequested()\":[{\"notice\":\"Error thrown when the user requests to exit delegation repeatedly\"}],\"InsufficientVthoBalanceForRewardsClaim(uint256,uint256)\":[{\"notice\":\"Error thrown when there is insufficient VTHO balance for rewards claim\"}],\"InvalidDelegationPeriod()\":[{\"notice\":\"Error thrown when a delegation period is invalid\"}],\"InvalidNFTLevel(uint256,uint256)\":[{\"notice\":\"Error thrown when an NFT level is invalid\"}],\"InvalidVthoRewardPerBlock(uint256,uint256)\":[{\"notice\":\"Error thrown when a vtho reward per block per NFT level is invalid\"}],\"NFTAlreadyDelegated(uint256)\":[{\"notice\":\"Error thrown when an NFT is already delegated\"}],\"NFTNotDelegated(uint256)\":[{\"notice\":\"Error thrown when an NFT is not delegated\"}],\"NFTUnderMaturityPeriod(uint256)\":[{\"notice\":\"Error thrown when an NFT is under the maturity period\"}],\"NoLostRewardsToClaim(address,uint256)\":[{\"notice\":\"Error thrown when there are no lost rewards to claim\"}],\"NoRewardsToClaim(uint256)\":[{\"notice\":\"Error thrown when there are no rewards to claim\"}],\"RewardsAccumulationPeriodEnded()\":[{\"notice\":\"Error thrown when the rewards accumulation period ended\"}],\"UnauthorizedUser(address)\":[{\"notice\":\"Error thrown when a user is not authorized to perform an action\"}],\"VthoTransferFailed(address,uint256)\":[{\"notice\":\"Error thrown when a VTHO transfer fails\"}]},\"events\":{\"DelegationExitRequested(uint256,uint256)\":{\"notice\":\"Event emitted when a delegation exit is requested\"},\"DelegationRewardsClaimed(uint256,uint256,address,address)\":{\"notice\":\"Event emitted when a delegation rewards are claimed\"},\"DelegationSimulationStarted(uint256,address,uint256,bool,address)\":{\"notice\":\"Event emitted when a delegation simulation is started\"},\"LostRewardsAdded(address,uint256,uint256)\":{\"notice\":\"Event emitted when lost rewards are added\"},\"LostRewardsClaimed(address,uint256,address,uint256)\":{\"notice\":\"Event emitted when lost rewards are claimed\"},\"LostRewardsRemoved(address,uint256,uint256)\":{\"notice\":\"Event emitted when lost rewards are removed\"},\"RewardsAccumulationEndBlockSet(uint256)\":{\"notice\":\"Event emitted when the rewards accumulation end block is set\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":\"IStargateDelegation\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]}},\"version\":1}"}},"contracts/mocks/Stargate/interfaces/IStargateNFT.sol":{"IStargateNFT":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"oldBaseURI","type":"string"},{"indexed":false,"internalType":"string","name":"newBaseURI","type":"string"}],"name":"BaseURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BaseVTHORewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"levelId","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"oldBoostPricePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBoostPricePerBlock","type":"uint256"}],"name":"LevelBoostPricePerBlockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"levelId","type":"uint8"},{"indexed":false,"internalType":"uint32","name":"oldCap","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"newCap","type":"uint32"}],"name":"LevelCapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"levelId","type":"uint8"},{"indexed":false,"internalType":"uint208","name":"oldCirculatingSupply","type":"uint208"},{"indexed":false,"internalType":"uint208","name":"newCirculatingSupply","type":"uint208"}],"name":"LevelCirculatingSupplyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"levelId","type":"uint8"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"bool","name":"isX","type":"bool"},{"indexed":false,"internalType":"uint64","name":"maturityBlocks","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"scaledRewardFactor","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"vetAmountRequiredToStake","type":"uint256"}],"name":"LevelUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint8","name":"levelId","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"vetAmountStaked","type":"uint256"}],"name":"TokenBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"manager","type":"address"}],"name":"TokenManagerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"manager","type":"address"}],"name":"TokenManagerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint8","name":"levelId","type":"uint8"},{"indexed":true,"internalType":"bool","name":"migrated","type":"bool"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"vetAmountStaked","type":"uint256"}],"name":"TokenMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint48","name":"oldVthoGenerationEndTimestamp","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"newVthoGenerationEndTimestamp","type":"uint48"}],"name":"VthoGenerationEndTimestampSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"WhitelistEntryRemoved","type":"event"},{"inputs":[],"name":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_burnCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_safeMintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isX","type":"bool"},{"internalType":"uint8","name":"id","type":"uint8"},{"internalType":"uint64","name":"maturityBlocks","type":"uint64"},{"internalType":"uint64","name":"scaledRewardFactor","type":"uint64"},{"internalType":"uint256","name":"vetAmountRequiredToStake","type":"uint256"}],"internalType":"struct DataTypes.Level","name":"level","type":"tuple"},{"internalType":"uint208","name":"circulatingSupply","type":"uint208"},{"internalType":"uint32","name":"cap","type":"uint32"}],"internalType":"struct DataTypes.LevelAndSupply","name":"_levelAndSupply","type":"tuple"}],"name":"addLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"addTokenManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"boost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"boostAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_levelId","type":"uint8"}],"name":"boostAmountOfLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"boostOnBehalfOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_levelId","type":"uint8"}],"name":"boostPricePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_levelId","type":"uint8"},{"internalType":"uint48","name":"_blockNumber","type":"uint48"}],"name":"getCirculatingSupplyAtBlock","outputs":[{"internalType":"uint208","name":"","type":"uint208"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_levelId","type":"uint8"}],"name":"getLevel","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isX","type":"bool"},{"internalType":"uint8","name":"id","type":"uint8"},{"internalType":"uint64","name":"maturityBlocks","type":"uint64"},{"internalType":"uint64","name":"scaledRewardFactor","type":"uint64"},{"internalType":"uint256","name":"vetAmountRequiredToStake","type":"uint256"}],"internalType":"struct DataTypes.Level","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLevelIds","outputs":[{"internalType":"uint8[]","name":"","type":"uint8[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_levelId","type":"uint8"}],"name":"getLevelSupply","outputs":[{"internalType":"uint208","name":"circulating","type":"uint208"},{"internalType":"uint32","name":"cap","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLevels","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isX","type":"bool"},{"internalType":"uint8","name":"id","type":"uint8"},{"internalType":"uint64","name":"maturityBlocks","type":"uint64"},{"internalType":"uint64","name":"scaledRewardFactor","type":"uint64"},{"internalType":"uint256","name":"vetAmountRequiredToStake","type":"uint256"}],"internalType":"struct DataTypes.Level[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLevelsCirculatingSupplies","outputs":[{"internalType":"uint208[]","name":"","type":"uint208[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint48","name":"_blockNumber","type":"uint48"}],"name":"getLevelsCirculatingSuppliesAtBlock","outputs":[{"internalType":"uint208[]","name":"","type":"uint208[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStargate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getToken","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint8","name":"levelId","type":"uint8"},{"internalType":"uint64","name":"mintedAtBlock","type":"uint64"},{"internalType":"uint256","name":"vetAmountStaked","type":"uint256"},{"internalType":"uint48","name":"lastVetGeneratedVthoClaimTimestamp_deprecated","type":"uint48"}],"internalType":"struct DataTypes.Token","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getTokenLevel","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getTokenManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVthoTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"idsManagedBy","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"idsOwnedBy","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"isManagedByOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"isTokenManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"isUnderMaturityPeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"isXToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"legacyNodes","outputs":[{"internalType":"contract ITokenAuction","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"maturityPeriodEndBlock","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_manager","type":"address"}],"name":"migrateTokenManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_levelId","type":"uint8"},{"internalType":"address","name":"_to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"ownerTotalVetStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"ownsXToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"removeTokenManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseTokenURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timestamp","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"tokensManagedBy","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint8","name":"levelId","type":"uint8"},{"internalType":"uint64","name":"mintedAtBlock","type":"uint64"},{"internalType":"uint256","name":"vetAmountStaked","type":"uint256"},{"internalType":"uint48","name":"lastVetGeneratedVthoClaimTimestamp_deprecated","type":"uint48"}],"internalType":"struct DataTypes.Token[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"tokensOverview","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint8","name":"levelId","type":"uint8"}],"internalType":"struct DataTypes.TokenOverview[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOwnedBy","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint8","name":"levelId","type":"uint8"},{"internalType":"uint64","name":"mintedAtBlock","type":"uint64"},{"internalType":"uint256","name":"vetAmountStaked","type":"uint256"},{"internalType":"uint48","name":"lastVetGeneratedVthoClaimTimestamp_deprecated","type":"uint48"}],"internalType":"struct DataTypes.Token[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xTokensCount","outputs":[{"internalType":"uint208","name":"","type":"uint208"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"CLOCK_MODE()":"4bf5d7e9","_burnCallback(uint256)":"84e66840","_safeMintCallback(address,uint256)":"7aee0158","addLevel(((string,bool,uint8,uint64,uint64,uint256),uint208,uint32))":"e2540d8a","addTokenManager(address,uint256)":"0c72580f","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","baseURI()":"6c0360eb","boost(uint256)":"1b55d19e","boostAmount(uint256)":"13e09e96","boostAmountOfLevel(uint8)":"c1ea9258","boostOnBehalfOf(address,uint256)":"996fa255","boostPricePerBlock(uint8)":"a9fa6f58","burn(uint256)":"42966c68","clock()":"91ddadf4","getApproved(uint256)":"081812fc","getCirculatingSupplyAtBlock(uint8,uint48)":"aef0c8ee","getCurrentTokenId()":"56189236","getLevel(uint8)":"6d779991","getLevelIds()":"724b4fcf","getLevelSupply(uint8)":"0c0f1c84","getLevels()":"0c394a60","getLevelsCirculatingSupplies()":"29f7540b","getLevelsCirculatingSuppliesAtBlock(uint48)":"2c5811da","getStargate()":"736f9035","getToken(uint256)":"e4b50cb8","getTokenLevel(uint256)":"d011645c","getTokenManager(uint256)":"692b26ff","getVthoTokenAddress()":"1e813caf","idsManagedBy(address)":"afad8f5e","idsOwnedBy(address)":"e764c7c4","isApprovedForAll(address,address)":"e985e9c5","isManagedByOwner(uint256)":"8419de89","isTokenManager(address,uint256)":"32ebc612","isUnderMaturityPeriod(uint256)":"d621517e","isXToken(uint256)":"f0572485","legacyNodes()":"59c87d14","maturityPeriodEndBlock(uint256)":"a77ad11d","migrate(uint256)":"454b0608","migrateTokenManager(uint256,address)":"ecf79966","mint(uint8,address)":"7bf75f6c","ownerOf(uint256)":"6352211e","ownerTotalVetStaked(address)":"a780f539","ownsXToken(address)":"a4984009","pause()":"8456cb59","removeTokenManager(uint256)":"d4dfed36","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","setBaseURI(string)":"55f804b3","supportsInterface(bytes4)":"01ffc9a7","timestamp()":"b80777ea","tokenByIndex(uint256)":"4f6ccce7","tokenExists(uint256)":"00923f9e","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokensManagedBy(address)":"cd2c6efe","tokensOverview(address)":"05a03f50","tokensOwnedBy(address)":"ea66aeb3","totalSupply()":"18160ddd","transferBalance(uint256)":"8a60c4c1","transferFrom(address,address,uint256)":"23b872dd","unpause()":"3f4ba83a","version()":"54fd4d50","xTokensCount()":"e1fac594"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"oldBaseURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newBaseURI\",\"type\":\"string\"}],\"name\":\"BaseURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BaseVTHORewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldBoostPricePerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBoostPricePerBlock\",\"type\":\"uint256\"}],\"name\":\"LevelBoostPricePerBlockUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"oldCap\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"newCap\",\"type\":\"uint32\"}],\"name\":\"LevelCapUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint208\",\"name\":\"oldCirculatingSupply\",\"type\":\"uint208\"},{\"indexed\":false,\"internalType\":\"uint208\",\"name\":\"newCirculatingSupply\",\"type\":\"uint208\"}],\"name\":\"LevelCirculatingSupplyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isX\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maturityBlocks\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"scaledRewardFactor\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"vetAmountRequiredToStake\",\"type\":\"uint256\"}],\"name\":\"LevelUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"vetAmountStaked\",\"type\":\"uint256\"}],\"name\":\"TokenBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"TokenManagerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"TokenManagerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"migrated\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"vetAmountStaked\",\"type\":\"uint256\"}],\"name\":\"TokenMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"oldVthoGenerationEndTimestamp\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newVthoGenerationEndTimestamp\",\"type\":\"uint48\"}],\"name\":\"VthoGenerationEndTimestampSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"WhitelistEntryRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"_burnCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"_safeMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isX\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"maturityBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scaledRewardFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"vetAmountRequiredToStake\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.Level\",\"name\":\"level\",\"type\":\"tuple\"},{\"internalType\":\"uint208\",\"name\":\"circulatingSupply\",\"type\":\"uint208\"},{\"internalType\":\"uint32\",\"name\":\"cap\",\"type\":\"uint32\"}],\"internalType\":\"struct DataTypes.LevelAndSupply\",\"name\":\"_levelAndSupply\",\"type\":\"tuple\"}],\"name\":\"addLevel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"addTokenManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"boost\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"boostAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_levelId\",\"type\":\"uint8\"}],\"name\":\"boostAmountOfLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"boostOnBehalfOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_levelId\",\"type\":\"uint8\"}],\"name\":\"boostPricePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_levelId\",\"type\":\"uint8\"},{\"internalType\":\"uint48\",\"name\":\"_blockNumber\",\"type\":\"uint48\"}],\"name\":\"getCirculatingSupplyAtBlock\",\"outputs\":[{\"internalType\":\"uint208\",\"name\":\"\",\"type\":\"uint208\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_levelId\",\"type\":\"uint8\"}],\"name\":\"getLevel\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isX\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"maturityBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scaledRewardFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"vetAmountRequiredToStake\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.Level\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLevelIds\",\"outputs\":[{\"internalType\":\"uint8[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_levelId\",\"type\":\"uint8\"}],\"name\":\"getLevelSupply\",\"outputs\":[{\"internalType\":\"uint208\",\"name\":\"circulating\",\"type\":\"uint208\"},{\"internalType\":\"uint32\",\"name\":\"cap\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLevels\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isX\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"maturityBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scaledRewardFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"vetAmountRequiredToStake\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.Level[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLevelsCirculatingSupplies\",\"outputs\":[{\"internalType\":\"uint208[]\",\"name\":\"\",\"type\":\"uint208[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"_blockNumber\",\"type\":\"uint48\"}],\"name\":\"getLevelsCirculatingSuppliesAtBlock\",\"outputs\":[{\"internalType\":\"uint208[]\",\"name\":\"\",\"type\":\"uint208[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStargate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"mintedAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"vetAmountStaked\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"lastVetGeneratedVthoClaimTimestamp_deprecated\",\"type\":\"uint48\"}],\"internalType\":\"struct DataTypes.Token\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenLevel\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVthoTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"idsManagedBy\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"idsOwnedBy\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"isManagedByOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"isTokenManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"isUnderMaturityPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"isXToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"legacyNodes\",\"outputs\":[{\"internalType\":\"contract ITokenAuction\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maturityPeriodEndBlock\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"}],\"name\":\"migrateTokenManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_levelId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"ownerTotalVetStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"ownsXToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"removeTokenManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_baseTokenURI\",\"type\":\"string\"}],\"name\":\"setBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"tokensManagedBy\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"mintedAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"vetAmountStaked\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"lastVetGeneratedVthoClaimTimestamp_deprecated\",\"type\":\"uint48\"}],\"internalType\":\"struct DataTypes.Token[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"tokensOverview\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"}],\"internalType\":\"struct DataTypes.TokenOverview[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"tokensOwnedBy\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"levelId\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"mintedAtBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"vetAmountStaked\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"lastVetGeneratedVthoClaimTimestamp_deprecated\",\"type\":\"uint48\"}],\"internalType\":\"struct DataTypes.Token[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xTokensCount\",\"outputs\":[{\"internalType\":\"uint208\",\"name\":\"\",\"type\":\"uint208\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BaseURIUpdated(string,string)\":{\"params\":{\"newBaseURI\":\"The new base URI\",\"oldBaseURI\":\"The old base URI\"}},\"BaseVTHORewardsClaimed(address,uint256,uint256)\":{\"details\":\"Not emitted anymore in V3, since we don't generate VTHO anymoreDeprecated in V3\",\"params\":{\"amount\":\"The amount of VTHO rewards claimed\",\"owner\":\"The address that claimed the rewards\",\"tokenId\":\"The ID of the token for which rewards were claimed\"}},\"LevelBoostPricePerBlockUpdated(uint8,uint256,uint256)\":{\"params\":{\"levelId\":\"The ID of the level boost price per block that was updated\",\"newBoostPricePerBlock\":\"The new boost price per block\",\"oldBoostPricePerBlock\":\"The old boost price per block\"}},\"LevelCapUpdated(uint8,uint32,uint32)\":{\"params\":{\"levelId\":\"The ID of the level cap that was updated\",\"newCap\":\"The new cap\",\"oldCap\":\"The old cap\"}},\"LevelCirculatingSupplyUpdated(uint8,uint208,uint208)\":{\"params\":{\"levelId\":\"The ID of the level supply that was updated\",\"newCirculatingSupply\":\"The new circulating supply\",\"oldCirculatingSupply\":\"The old circulating supply\"}},\"LevelUpdated(uint8,string,bool,uint64,uint64,uint256)\":{\"params\":{\"isX\":\"The new X status\",\"levelId\":\"The ID of the level that was updated\",\"maturityBlocks\":\"The new maturity period in blocks\",\"name\":\"The new name of the level\",\"scaledRewardFactor\":\"The new scaled reward multiplier\",\"vetAmountRequiredToStake\":\"The new VET amount required for staking\"}},\"TokenBurned(address,uint8,uint256,uint256)\":{\"params\":{\"levelId\":\"The level ID of the newly burned NFT\",\"owner\":\"The address that owns the newly burned NFT\",\"tokenId\":\"The ID of the newly burned NFT\",\"vetAmountStaked\":\"The amount of VET staked to burn the NFT\"}},\"TokenManagerAdded(uint256,address)\":{\"params\":{\"manager\":\"The address of the manager\",\"tokenId\":\"The ID of the token\"}},\"TokenManagerRemoved(uint256,address)\":{\"params\":{\"manager\":\"The address of the manager\",\"tokenId\":\"The ID of the token\"}},\"TokenMinted(address,uint8,bool,uint256,uint256)\":{\"params\":{\"levelId\":\"The level ID of the newly minted NFT\",\"migrated\":\"Whether the token was migrated from legacy nodes contract\",\"owner\":\"The address that owns the newly minted NFT\",\"tokenId\":\"The ID of the newly minted NFT\",\"vetAmountStaked\":\"The amount of VET staked to mint the NFT\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"},\"VthoGenerationEndTimestampSet(uint48,uint48)\":{\"details\":\"Not emitted anymore in V3, since there is no need to set this value anymore\",\"params\":{\"newVthoGenerationEndTimestamp\":\"The new VTHO generation end timestamp\",\"oldVthoGenerationEndTimestamp\":\"The old VTHO generation end timestamp\"}},\"WhitelistEntryRemoved(address)\":{\"params\":{\"owner\":\"The address of the whitelist entry\"}}},\"kind\":\"dev\",\"methods\":{\"_burnCallback(uint256)\":{\"details\":\"Only the StargateNFT contract can call this function\",\"params\":{\"tokenId\":\"- the token ID of the token to burn\"}},\"_safeMintCallback(address,uint256)\":{\"details\":\"Only the StargateNFT contract can call this function\",\"params\":{\"to\":\"- the address to mint the token to\",\"tokenId\":\"- the token ID of the token to mint\"}},\"addLevel(((string,bool,uint8,uint64,uint64,uint256),uint208,uint32))\":{\"details\":\"Only the LEVEL_OPERATOR_ROLE can call this function Check the {Levels.addLevel} library function for more details Emits a {IStargateNFT.LevelUpdated} event Emits a {IStargateNFT.LevelCirculatingSupplyUpdated} event Emits a {IStargateNFT.LevelCapUpdated} event\",\"params\":{\"_levelAndSupply\":\"- The level and supply to add, see {DataTypes.LevelAndSupply}\"}},\"addTokenManager(address,uint256)\":{\"details\":\"This manager can use the token for voting on VeVote or in B3TR but it cant calim rewards for themselves, transfer, delegate or unstake the tokenIf a token already has a manager, it will be removed and the new manager will be addedEmits a {IStargateNFT.TokenManagerAdded} event\",\"params\":{\"_manager\":\"The address of the manager to add\",\"_tokenId\":\"The ID of the token to add the manager to\"}},\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"baseURI()\":{\"returns\":{\"_0\":\"baseURI - the base URI string\"}},\"boost(uint256)\":{\"details\":\"This can only be called by the Stargate contractEmits a {IStargateNFT.MaturityPeriodBoosted} event\",\"params\":{\"_tokenId\":\"The ID of the token to boost\"}},\"boostAmount(uint256)\":{\"params\":{\"_tokenId\":\"The ID of the token to boost\"},\"returns\":{\"_0\":\"boostAmount The amount of VTHO required to boost the token's maturity period\"}},\"boostAmountOfLevel(uint8)\":{\"params\":{\"_levelId\":\"The level ID of the token to boost\"},\"returns\":{\"_0\":\"boostAmount The amount of VTHO required to boost the token's maturity period\"}},\"boostOnBehalfOf(address,uint256)\":{\"details\":\"This can only be called by the Stargate contractEmits a {IStargateNFT.MaturityPeriodBoosted} event\",\"params\":{\"_sender\":\"The address to boost the token for\",\"_tokenId\":\"The ID of the token to boost\"}},\"boostPricePerBlock(uint8)\":{\"params\":{\"_levelId\":\"The level ID of the token to boost\"},\"returns\":{\"_0\":\"boostPricePerBlock The boost price per block for the level\"}},\"burn(uint256)\":{\"details\":\"This can only be called by the Stargate contractEmits a {IStargateNFT.TokenBurned} event\",\"params\":{\"_tokenId\":\"The ID of the token to burn\"}},\"clock()\":{\"returns\":{\"_0\":\"blockNumber - the current block number\"}},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"getCirculatingSupplyAtBlock(uint8,uint48)\":{\"params\":{\"_blockNumber\":\"The block number to get the supply at\",\"_levelId\":\"The ID of the level to get supply data for\"},\"returns\":{\"_0\":\"circulatingSupply The circulating supply of the level at the specified block\"}},\"getCurrentTokenId()\":{\"details\":\"Ids start from the total supply of the legacy contrat\",\"returns\":{\"_0\":\"currentTokenId the latest token id that was minted\"}},\"getLevel(uint8)\":{\"params\":{\"_levelId\":\"The ID of the token level spec to return\"},\"returns\":{\"_0\":\"Level - The token level spec\"}},\"getLevelIds()\":{\"returns\":{\"_0\":\"levelIds - The list of token level spec IDs\"}},\"getLevelSupply(uint8)\":{\"params\":{\"_levelId\":\"The ID of the token level to get supply data for\"},\"returns\":{\"cap\":\"The cap of the token level\",\"circulating\":\"The circulating supply of the token level\"}},\"getLevels()\":{\"returns\":{\"_0\":\"levels - The list of token level specs\"}},\"getLevelsCirculatingSupplies()\":{\"returns\":{\"_0\":\"circulatingSupplies An array of circulating supply values for all levels, sorted by level id\"}},\"getLevelsCirculatingSuppliesAtBlock(uint48)\":{\"params\":{\"_blockNumber\":\"The block number to get the supply at\"},\"returns\":{\"_0\":\"circulatingSupplies An array of circulating supply values for all levels, sorted by level id\"}},\"getStargate()\":{\"returns\":{\"_0\":\"stargate - the Stargate contract\"}},\"getToken(uint256)\":{\"params\":{\"_tokenId\":\"The ID of the token to get\"},\"returns\":{\"_0\":\"token The token\"}},\"getTokenLevel(uint256)\":{\"params\":{\"_tokenId\":\"- the token ID of the NFT\"},\"returns\":{\"_0\":\"levelId - the level ID of the NFT\"}},\"getTokenManager(uint256)\":{\"params\":{\"_tokenId\":\"The ID of the token to get the manager for\"},\"returns\":{\"_0\":\"manager The manager of the token\"}},\"getVthoTokenAddress()\":{\"returns\":{\"_0\":\"vthoToken - the VTHO token contract\"}},\"idsManagedBy(address)\":{\"params\":{\"_user\":\"The address of the user to get the tokens for\"},\"returns\":{\"_0\":\"tokenIds The list of token ids managed by the user\"}},\"idsOwnedBy(address)\":{\"params\":{\"_owner\":\"The address of the owner to get token IDs for\"},\"returns\":{\"_0\":\"tokenIds The list of token IDs\"}},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"isManagedByOwner(uint256)\":{\"params\":{\"_tokenId\":\"The ID of the token to check\"},\"returns\":{\"_0\":\"True if the token is managed by the owner, false otherwise\"}},\"isTokenManager(address,uint256)\":{\"params\":{\"_manager\":\"The address of the manager to check\",\"_tokenId\":\"The ID of the token to check\"},\"returns\":{\"_0\":\"True if the address is a manager of the token, false otherwise\"}},\"isUnderMaturityPeriod(uint256)\":{\"params\":{\"_tokenId\":\"The ID of the token to check\"},\"returns\":{\"_0\":\"isInMaturityPeriod True if the token is in the maturity period, false otherwise\"}},\"isXToken(uint256)\":{\"params\":{\"_tokenId\":\"The ID of the token to check\"},\"returns\":{\"_0\":\"True if the token is an X token, false otherwise\"}},\"legacyNodes()\":{\"returns\":{\"_0\":\"legacyNodes - the legacy nodes contract\"}},\"maturityPeriodEndBlock(uint256)\":{\"params\":{\"_tokenId\":\"The ID of the token to get maturity period end block for\"},\"returns\":{\"_0\":\"maturityPeriodEndBlock The maturity period end block\"}},\"migrate(uint256)\":{\"details\":\"This can only be called by the Stargate contractEmits a {IStargateNFT.TokenMinted} event and a {IStargateNFT.TokenMigrated} event\",\"params\":{\"_tokenId\":\"The ID of the token to migrate\"}},\"migrateTokenManager(uint256,address)\":{\"params\":{\"_manager\":\"The address of the manager to migrate\",\"_tokenId\":\"The ID of the token to migrate\"}},\"mint(uint8,address)\":{\"details\":\"This can only be called by the Stargate contractEmits a {IStargateNFT.TokenMinted} event\",\"params\":{\"_levelId\":\"The ID of the token level to mint\",\"_to\":\"The address to mint the token to\"}},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"ownerTotalVetStaked(address)\":{\"params\":{\"_owner\":\"The address to get total VET staked for\"},\"returns\":{\"_0\":\"totalVetStaked The total VET staked by the address\"}},\"ownsXToken(address)\":{\"params\":{\"_owner\":\"The address of the owner to check\"},\"returns\":{\"_0\":\"True if the owner owns an X token, false otherwise\"}},\"pause()\":{\"details\":\"Only the PAUSER_ROLE can call this functionPausing the contract will prevent minting\"},\"removeTokenManager(uint256)\":{\"details\":\"This manager can no longer use the token for voting on VeVote or in B3TR but it can still claim rewards for themselves, transfer, delegate or unstake the tokenIf a token has no manager, it will revertEmits a {IStargateNFT.TokenManagerRemoved} event\",\"params\":{\"_tokenId\":\"The ID of the token to remove the manager from\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"setBaseURI(string)\":{\"details\":\"Only the MANAGER_ROLE can call this functionMetadata is hosted on IPFS, and the base URI is the base path to the collection metadataEmits a {IStargateNFT.BaseURIUpdated} event\",\"params\":{\"_baseTokenURI\":\"The new base URI\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"timestamp()\":{\"returns\":{\"_0\":\"timestamp - the current timestamp\"}},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenExists(uint256)\":{\"params\":{\"_tokenId\":\"The ID of the token to check\"},\"returns\":{\"_0\":\"True if the token exists, false otherwise\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"tokensManagedBy(address)\":{\"params\":{\"_user\":\"The address of the user to get the tokens for\"},\"returns\":{\"_0\":\"tokens The list of tokens managed by the user\"}},\"tokensOverview(address)\":{\"params\":{\"_user\":\"The address of the user to get the overview of the tokens\"},\"returns\":{\"_0\":\"DataTypes.TokenOverview[] The overview of the tokens related to the user\"}},\"tokensOwnedBy(address)\":{\"params\":{\"_owner\":\"The address to get tokens for\"},\"returns\":{\"_0\":\"tokens An array of tokens owned by the address\"}},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferBalance(uint256)\":{\"details\":\"This function was created after the refactor on the StargateNFT and Stargate contracts. After the refactor, all VET is handled by Stargate, this means stake, stakeAndDelegate, unstake... functions were moved to the Stargate. Since up until now we were using the StagateNFT contract to handle the VET, we need to transfer back all the previous staked VET to the Stargate so user can delegate it and unstake it. This functions transfers all the VET to the Stargate contract in one go. This function is called by the admin after the upgrade to V3 and the Stargate variable is set to the correct valueOnly the DEFAULT_ADMIN_ROLE can call this functionEmits a {IStargateNFT.VetTransferFailed} event\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"},\"unpause()\":{\"details\":\"Only the PAUSER_ROLE can call this function\"},\"xTokensCount()\":{\"details\":\"Get the count of normal tokens by subtracting the count of X tokens from the total supply\",\"returns\":{\"_0\":\"xTokensCount - the number of X tokens\"}}},\"version\":1},\"userdoc\":{\"events\":{\"BaseURIUpdated(string,string)\":{\"notice\":\"Emitted when the base URI for the token metadata is updated\"},\"BaseVTHORewardsClaimed(address,uint256,uint256)\":{\"notice\":\"Emitted when VTHO rewards are claimed for a token\"},\"LevelBoostPricePerBlockUpdated(uint8,uint256,uint256)\":{\"notice\":\"Emitted when the boost price per block of a token level is updated\"},\"LevelCapUpdated(uint8,uint32,uint32)\":{\"notice\":\"Emitted when the cap of a token level is updated\"},\"LevelCirculatingSupplyUpdated(uint8,uint208,uint208)\":{\"notice\":\"Emitted when the circulating supply of a token level is updated\"},\"LevelUpdated(uint8,string,bool,uint64,uint64,uint256)\":{\"notice\":\"Emitted when a token level is updated\"},\"TokenBurned(address,uint8,uint256,uint256)\":{\"notice\":\"Emitted when an NFT is burned\"},\"TokenManagerAdded(uint256,address)\":{\"notice\":\"Emitted when a token manager is added to a token\"},\"TokenManagerRemoved(uint256,address)\":{\"notice\":\"Emitted when a token manager is removed from a token\"},\"TokenMinted(address,uint8,bool,uint256,uint256)\":{\"notice\":\"Emitted when an NFT is minted\"},\"VthoGenerationEndTimestampSet(uint48,uint48)\":{\"notice\":\"Emitted when the VTHO generation end timestamp is updated\"},\"WhitelistEntryRemoved(address)\":{\"notice\":\"Emitted when a whitelist entry is removed\"}},\"kind\":\"user\",\"methods\":{\"CLOCK_MODE()\":{\"notice\":\"Returns the clock mode\"},\"_burnCallback(uint256)\":{\"notice\":\"Callback function to ERC721Upgradeable._burn, called by StargateNFTMinting.unstake\"},\"_safeMintCallback(address,uint256)\":{\"notice\":\"Callback function to ERC721Upgradeable._safeMint, called by StargateNFTMinting.stake\"},\"addLevel(((string,bool,uint8,uint64,uint64,uint256),uint208,uint32))\":{\"notice\":\"Adds a new token level\"},\"addTokenManager(address,uint256)\":{\"notice\":\"Adds a manager to a token\"},\"baseURI()\":{\"notice\":\"Returns the base URI for the token collection metadata\"},\"boost(uint256)\":{\"notice\":\"Boosts the maturity period of a token\"},\"boostAmount(uint256)\":{\"notice\":\"Returns the amount of VTHO required to boost a token's maturity period\"},\"boostAmountOfLevel(uint8)\":{\"notice\":\"Returns the amount of VTHO required to boost a token's maturity period\"},\"boostOnBehalfOf(address,uint256)\":{\"notice\":\"Boosts the maturity period of a token\"},\"boostPricePerBlock(uint8)\":{\"notice\":\"Returns the boost price per block for a given level\"},\"burn(uint256)\":{\"notice\":\"Burns a token from the StargateNFT contract\"},\"clock()\":{\"notice\":\"Returns the current block number\"},\"getCirculatingSupplyAtBlock(uint8,uint48)\":{\"notice\":\"Returns the circulating supply for a given level at a specific block\"},\"getCurrentTokenId()\":{\"notice\":\"Get the latest token id that was minted\"},\"getLevel(uint8)\":{\"notice\":\"Returns a token level spec for a given level ID\"},\"getLevelIds()\":{\"notice\":\"Returns a list of all token level spec IDs\"},\"getLevelSupply(uint8)\":{\"notice\":\"Returns the circulating supply and cap for a given token level\"},\"getLevels()\":{\"notice\":\"Returns a list of all token level specs\"},\"getLevelsCirculatingSupplies()\":{\"notice\":\"Returns the circulating supply for all levels\"},\"getLevelsCirculatingSuppliesAtBlock(uint48)\":{\"notice\":\"Returns the circulating supply for all levels at a certain block\"},\"getStargate()\":{\"notice\":\"Returns the address of the Stargate contract\"},\"getToken(uint256)\":{\"notice\":\"Returns a token for a given token ID\"},\"getTokenLevel(uint256)\":{\"notice\":\"Returns the level ID of a given token\"},\"getTokenManager(uint256)\":{\"notice\":\"Returns the manager of a token, if the token does not have a manager it will return the owner of the token\"},\"getVthoTokenAddress()\":{\"notice\":\"Returns the address of the VTHO token contract\"},\"idsManagedBy(address)\":{\"notice\":\"Returns the list of: 1) Token ids managed by the user 2) Token ids owned by the user and not managed by someone else Token ids owned by the user, but managed by others, won't be returned\"},\"idsOwnedBy(address)\":{\"notice\":\"Returns a list of token IDs for a given owner\"},\"isManagedByOwner(uint256)\":{\"notice\":\"Checks if a token is managed by the owner\"},\"isTokenManager(address,uint256)\":{\"notice\":\"Checks if an address is a manager of a token\"},\"isUnderMaturityPeriod(uint256)\":{\"notice\":\"Returns true if a token is in the maturity period\"},\"isXToken(uint256)\":{\"notice\":\"Checks if a token is an X token\"},\"legacyNodes()\":{\"notice\":\"Returns the legacy nodes contract\"},\"maturityPeriodEndBlock(uint256)\":{\"notice\":\"Returns the maturity period end block for a given token\"},\"migrate(uint256)\":{\"notice\":\"Migrates a token from the legacy nodes contract to StargateNFT to the same owner address as the owner of the token in the legacy nodes contract\"},\"migrateTokenManager(uint256,address)\":{\"notice\":\"Migrate a token manager to the StargateNFT contract, this function is only callable by the DEFAULT_ADMIN_ROLE so we can migrate the storage from NodeManagementV3 to StargateNFT, after the migration we can remove this function\"},\"mint(uint8,address)\":{\"notice\":\"Mints a token from the StargateNFT contract\"},\"ownerTotalVetStaked(address)\":{\"notice\":\"Returns the total VET staked by an address\"},\"ownsXToken(address)\":{\"notice\":\"Checks if an owner owns an X token\"},\"pause()\":{\"notice\":\"Pauses the StargateNFT contract\"},\"removeTokenManager(uint256)\":{\"notice\":\"Removes a manager from a token\"},\"setBaseURI(string)\":{\"notice\":\"Sets the base URI for the token collection metadata\"},\"timestamp()\":{\"notice\":\"Returns the current timestamp\"},\"tokenExists(uint256)\":{\"notice\":\"Returns true if a token exists\"},\"tokensManagedBy(address)\":{\"notice\":\"Returns the list of: 1) Tokens managed by the user 2) Tokens owned by the user and not managed by someone else Tokens owned by the user, but managed by others, won't be returned\"},\"tokensOverview(address)\":{\"notice\":\"Function to get the overview of the tokens related to a user A token is related to a user if it is owned by the user or if it is managed by the user This includes: - Tokens owned by the user and managed by the user - Tokens owned by the user and not managed by the user - Tokens managed by the user and not owned by the user\"},\"tokensOwnedBy(address)\":{\"notice\":\"Returns the tokens owned by an address\"},\"transferBalance(uint256)\":{\"notice\":\"Transfers the balance of the contract to the Stargate contract\"},\"unpause()\":{\"notice\":\"Unpauses the StargateNFT contract\"},\"xTokensCount()\":{\"notice\":\"Returns the number of X tokens in circulation\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":\"IStargateNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]}},\"version\":1}"}},"contracts/mocks/Stargate/interfaces/ITokenAuction.sol":{"ITokenAuction":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_auctionId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_candidate","type":"address"}],"name":"AddAuctionWhiteList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_auctionId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"AuctionCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_auctionId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_startingPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_endingPrice","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"_duration","type":"uint64"}],"name":"AuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_auctionId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_seller","type":"address"},{"indexed":false,"internalType":"address","name":"_winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_finalPrice","type":"uint256"}],"name":"AuctionSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_person","type":"address"},{"indexed":false,"internalType":"bool","name":"_op","type":"bool"}],"name":"BlackListUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_owner","type":"address"}],"name":"CancelUpgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"uint8","name":"_fromLevel","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"_toLevel","type":"uint8"}],"name":"LevelChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_applier","type":"address"},{"indexed":false,"internalType":"uint8","name":"_level","type":"uint8"},{"indexed":false,"internalType":"uint64","name":"_applyTime","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"_applyBlockno","type":"uint64"}],"name":"NewUpgradeApply","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_op","type":"address"},{"indexed":false,"internalType":"bool","name":"_enabled","type":"bool"}],"name":"OperatorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_saleAuction","type":"address"}],"name":"ProtocolUpgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_auctionId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_candidate","type":"address"}],"name":"RemoveAuctionWhiteList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"inputs":[],"name":"InterfaceId_ERC165","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"name":"addAuctionWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"addOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_badGuy","type":"address"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint8","name":"_lvl","type":"uint8"},{"internalType":"bool","name":"_onUpgrade","type":"bool"},{"internalType":"uint64","name":"_applyUpgradeTime","type":"uint64"},{"internalType":"uint64","name":"_applyUpgradeBlockno","type":"uint64"}],"name":"addToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_toLvl","type":"uint8"}],"name":"applyUpgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"auctionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"cancelAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"cancelUpgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint128","name":"_price","type":"uint128"},{"internalType":"uint64","name":"_duration","type":"uint64"},{"internalType":"address","name":"_toAddress","type":"address"}],"name":"createDirectionalSaleAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint128","name":"_startingPrice","type":"uint128"},{"internalType":"uint128","name":"_endingPrice","type":"uint128"},{"internalType":"uint64","name":"_duration","type":"uint64"}],"name":"createSaleAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint8","name":"_toLvl","type":"uint8"}],"name":"downgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getMetadata","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_level","type":"uint8"}],"name":"getTokenParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"isNormalToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"isToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"isX","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leadTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"normalTokenCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"operators","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ownerToId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"name":"removeAuctionWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_innocent","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"removeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleAuction","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sendBonusTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_leadtime","type":"uint64"}],"name":"setLeadTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setSaleAuctionAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setTokenMetadataBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_cooldown","type":"uint64"}],"name":"setTransferCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferCooldown","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint8","name":"_toLvl","type":"uint8"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xTokenCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"InterfaceId_ERC165()":"19fa8f50","addAuctionWhiteList(uint256,address)":"cd5967db","addOperator(address)":"9870d7fe","addToBlackList(address)":"417c73a7","addToken(address,uint8,bool,uint64,uint64)":"7aaed899","applyUpgrade(uint8)":"79512513","approve(address,uint256)":"095ea7b3","auctionCount()":"2ad71573","balanceOf(address)":"70a08231","bid(uint256)":"454a2ab3","blackList(address)":"4838d165","canTransfer(uint256)":"4d4f6ea9","cancelAuction(uint256)":"96b5a755","cancelUpgrade(uint256)":"ba2a954d","createDirectionalSaleAuction(uint256,uint128,uint64,address)":"2ed9b4fd","createSaleAuction(uint256,uint128,uint128,uint64)":"bae3e19e","downgradeTo(uint256,uint8)":"b03e02c2","getApproved(uint256)":"081812fc","getMetadata(uint256)":"a574cea4","getTokenParams(uint8)":"287e8495","idToOwner(uint256)":"bfc206ed","isNormalToken(address)":"07fa65f9","isToken(address)":"19f37361","isX(address)":"f9574c69","leadTime()":"8c8d04a7","name()":"06fdde03","normalTokenCount()":"f7e6e60c","operators(address)":"13e7c9d8","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","ownerToId(address)":"e729e3a4","pause()":"8456cb59","paused()":"5c975abb","removeAuctionWhiteList(uint256,address)":"01921197","removeFromBlackList(address)":"4a49ac4c","removeOperator(address)":"ac8a584a","saleAuction()":"e6cbe351","sendBonusTo(address,uint256)":"0324529c","setLeadTime(uint64)":"2c12cc9f","setSaleAuctionAddress(address)":"6fbde40d","setTokenMetadataBaseURI(string)":"1e20363a","setTransferCooldown(uint64)":"ba6f2e65","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferCooldown()":"68f16293","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","upgradeTo(uint256,uint8)":"60836166","xTokenCount()":"d4156148"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_auctionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"AddAuctionWhiteList\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_auctionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"AuctionCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_auctionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_startingPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_endingPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"_duration\",\"type\":\"uint64\"}],\"name\":\"AuctionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_auctionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_winner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_finalPrice\",\"type\":\"uint256\"}],\"name\":\"AuctionSuccessful\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_person\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_op\",\"type\":\"bool\"}],\"name\":\"BlackListUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"CancelUpgrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"_fromLevel\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"_toLevel\",\"type\":\"uint8\"}],\"name\":\"LevelChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_applier\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"_level\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"_applyTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"_applyBlockno\",\"type\":\"uint64\"}],\"name\":\"NewUpgradeApply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_op\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_enabled\",\"type\":\"bool\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Pause\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_saleAuction\",\"type\":\"address\"}],\"name\":\"ProtocolUpgrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_auctionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"RemoveAuctionWhiteList\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpause\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"InterfaceId_ERC165\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"addAuctionWhiteList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"addOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_badGuy\",\"type\":\"address\"}],\"name\":\"addToBlackList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_lvl\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"_onUpgrade\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"_applyUpgradeTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_applyUpgradeBlockno\",\"type\":\"uint64\"}],\"name\":\"addToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_toLvl\",\"type\":\"uint8\"}],\"name\":\"applyUpgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"auctionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"bid\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"blackList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"canTransfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"cancelAuction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"cancelUpgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"_price\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"_duration\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_toAddress\",\"type\":\"address\"}],\"name\":\"createDirectionalSaleAuction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"_startingPrice\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_endingPrice\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"_duration\",\"type\":\"uint64\"}],\"name\":\"createSaleAuction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_toLvl\",\"type\":\"uint8\"}],\"name\":\"downgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getMetadata\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_level\",\"type\":\"uint8\"}],\"name\":\"getTokenParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"idToOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"isNormalToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"isToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"isX\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leadTime\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"normalTokenCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"ownerToId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"removeAuctionWhiteList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_innocent\",\"type\":\"address\"}],\"name\":\"removeFromBlackList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"removeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"saleAuction\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sendBonusTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_leadtime\",\"type\":\"uint64\"}],\"name\":\"setLeadTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setSaleAuctionAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_newBaseURI\",\"type\":\"string\"}],\"name\":\"setTokenMetadataBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_cooldown\",\"type\":\"uint64\"}],\"name\":\"setTransferCooldown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferCooldown\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_toLvl\",\"type\":\"uint8\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xTokenCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":\"ITokenAuction\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]}},\"version\":1}"}},"contracts/ve-better-passport/libraries/PassportTypes.sol":{"PassportTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7aabf7950cf0040e88682662bc7a55077c6517baec43f14b6f44fd628593e9064736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xAA 0xBF PUSH26 0x50CF0040E88682662BC7A55077C6517BAEC43F14B6F44FD62859 RETURNDATACOPY SWAP1 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"1863:2324:43:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1863:2324:43;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7aabf7950cf0040e88682662bc7a55077c6517baec43f14b6f44fd628593e9064736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xAA 0xBF PUSH26 0x50CF0040E88682662BC7A55077C6517BAEC43F14B6F44FD62859 RETURNDATACOPY SWAP1 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"1863:2324:43:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"PassportTypes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library defines various data types, enumerations, and initialization parameters used within the Passport contract. It includes the `InitializationData` struct, which contains references to external contracts and configurations for personhood checks, proof of participation, signaling, and passport delegation. It also includes role-based configuration settings.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ve-better-passport/libraries/PassportTypes.sol\":\"PassportTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]},\"contracts/interfaces/IVeBetterPassport.sol\":{\"keccak256\":\"0x1094bcf1a7f61ad26e5d49a6efd7302419a1d2475fa0723f62f24757c7a1655c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a25e330da50daf45f56fe4c496da2ea6695fb4de491c112980deb385f0f3ac\",\"dweb:/ipfs/QmaPE4T6UR91WxnGkqGp85d6YB9UGQceGGtSTCres1Y2Ut\"]},\"contracts/interfaces/IX2EarnApps.sol\":{\"keccak256\":\"0xf476e628b4037c16d44c833c9f0f4db9a3abc48f60ad4654574bce31ca9c759c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8c183bbd394bb708a637dca7626f6beb7a78e5111674e3ccea6f98140580172\",\"dweb:/ipfs/Qmar8Za1an3ZGP6B5wcCZSmY6g6MKzPcGeVYetRhiPFm7e\"]},\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]},\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]},\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]},\"contracts/ve-better-passport/libraries/PassportTypes.sol\":{\"keccak256\":\"0x0250b067d550cd85bd77278c705bd8d28db1bce6829e084cbe65b74353483ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://176022bfb06a2c03efe880a13a97cea66e25e9b31fe164936b5845a57a299be8\",\"dweb:/ipfs/QmS2kQnhxdjkrnNGfFyBdtThpmvyT2B7tF1owW2vF2hmbz\"]},\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":{\"keccak256\":\"0x1830b8438f0b6b516cc22ebbfcc7cff9db478c9a2a44fedf5926e63bd77d5aa7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aad5b08dbb03f727b8b74b10d1d00e796ece111f3aa23ef48ad27f54dd3f7b58\",\"dweb:/ipfs/QmfZZoP44EZ3Ts81BgvRuG9AXuTAxCqCbFqHoKEspFsPSa\"]},\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":{\"keccak256\":\"0x8a44d64c1e998dad0d21b928c499b7b624623cb26a30df541c493641191f6091\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751749980251dd9cda3e77654fafa229dab8a9bc74992dee9e8b3adee9595b72\",\"dweb:/ipfs/QmSHViJSMCbr25KBPap8VB38SjrLojRTnC3JUDCvf3rRBB\"]}},\"version\":1}"}},"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol":{"EndorsementUtils":{"abi":[{"inputs":[],"name":"CheckpointUnorderedInsertion","type":"error"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"CooldownNotExpired","type":"error"},{"inputs":[],"name":"EndorsementsPaused","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"current","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ExceedsMaxPointsPerApp","type":"error"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ExceedsMaxPointsPerNode","type":"error"},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"},{"internalType":"uint256","name":"currentBlock","type":"uint256"}],"name":"FutureLookup","type":"error"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"requested","type":"uint256"}],"name":"InsufficientAvailablePoints","type":"error"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"InvalidEndorsementIndex","type":"error"},{"inputs":[],"name":"InvalidPointsAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxPoints","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"MaxPointsPerAppBelowThreshold","type":"error"},{"inputs":[],"name":"MigrationAlreadyCompleted","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"NodeManagementXAppAlreadyIncluded","type":"error"},{"inputs":[],"name":"NodeNotAllowedToEndorse","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"maxPointsPerApp","type":"uint256"}],"name":"ThresholdExceedsMaxPointsPerApp","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnAppAlreadyEndorsed","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnAppBlacklisted","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"X2EarnInvalidAddress","type":"error"},{"inputs":[],"name":"X2EarnNonEndorser","type":"error"},{"inputs":[],"name":"X2EarnNonNodeHolder","type":"error"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"X2EarnNonexistentApp","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"bool","name":"appAvailableForAllocationVoting","type":"bool"}],"name":"AppAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"nodeId","type":"uint256"},{"indexed":false,"internalType":"address","name":"endorser","type":"address"},{"indexed":false,"internalType":"uint256","name":"points","type":"uint256"}],"name":"AppEndorsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"endorsed","type":"bool"}],"name":"AppEndorsementStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"nodeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"points","type":"uint256"}],"name":"AppUnendorsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"appId","type":"bytes32"},{"indexed":false,"internalType":"uint48","name":"startBlock","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"endBlock","type":"uint48"}],"name":"AppUnendorsedGracePeriodStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCooldownPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCooldownPeriod","type":"uint256"}],"name":"CooldownPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"EndorsementScoreThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"EndorsementsPausedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldGracePeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newGracePeriod","type":"uint256"}],"name":"GracePeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"MaxPointsPerAppUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"MaxPointsPerNodePerAppUpdated","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"strength","type":"uint256"},{"internalType":"uint256","name":"thunder","type":"uint256"},{"internalType":"uint256","name":"mjolnir","type":"uint256"},{"internalType":"uint256","name":"veThorX","type":"uint256"},{"internalType":"uint256","name":"strengthX","type":"uint256"},{"internalType":"uint256","name":"thunderX","type":"uint256"},{"internalType":"uint256","name":"mjolnirX","type":"uint256"}],"indexed":false,"internalType":"struct EndorsementUtils.NodeStrengthScores","name":"nodeStrengthScores","type":"tuple"}],"name":"NodeStrengthScoresUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"canUnendorse","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endorsementScoreThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endorsementsPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"getEndorserNodes","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"getEndorsers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeActiveEndorsements","outputs":[{"components":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"endorsedAtRound","type":"uint256"}],"internalType":"struct X2EarnAppsStorageTypes.Endorsement[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeAvailablePoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeEndorsementScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"},{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"getNodePointsForApp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodePointsInfo","outputs":[{"components":[{"internalType":"uint256","name":"totalPoints","type":"uint256"},{"internalType":"uint256","name":"usedPoints","type":"uint256"},{"internalType":"uint256","name":"availablePoints","type":"uint256"},{"internalType":"uint256","name":"lockedPoints","type":"uint256"}],"internalType":"struct X2EarnAppsStorageTypes.NodePointsInfo","name":"info","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nodeId","type":"uint256"}],"name":"getNodeUsedPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"}],"name":"getScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"name":"getScoreAtTimepoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUsersEndorsementScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gracePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"appId","type":"bytes32"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"isAppUnendorsed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPointsPerApp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPointsPerNodePerApp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrationCompleted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"nodeLevel","type":"uint8"}],"name":"nodeLevelEndorsementScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unendorsedAppIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"61417e61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106101cc5760003560e01c806304646a49146101d15780630ab12e14146101ec5780631e13ed7a1461020e5780633167798014610231578063381142211461023957806342c89f521461025957806344532be21461026c57806344bb58f71461028c57806347e5dcbc146102ac5780634a0c4a42146102cc5780634f77fe12146102d45780634fd4e1b8146102f457806351d2a6e3146103145780635cbc2ffb146103345780635cfdd4701461033c5780635dd3a4f11461035c5780636e054773146103a25780636fb44f5f146103c257806372584102146103e25780637ba53285146103f557806380ea3de1146104085780639a116641146104285780639ab17c9b146104485780639fcb2b411461045b578063a06db7dc1461047b578063a11bd9fb14610483578063acdb9f05146104a3578063b90a30ea146104b6578063c996c624146104be578063ccd4baca146104d1578063d6418b8a146104e4578063d76c3973146104ec578063e8786a58146104ff578063e9f9739d1461051f578063ee9419cf14610532578063f1a962ac14610552578063fcaf9a761461055a578063fcd190c41461057a575b600080fd5b6101d961059a565b6040519081526020015b60405180910390f35b8180156101f857600080fd5b5061020c610207366004613910565b6105ad565b005b61022161021c36600461393a565b610630565b60405190151581526020016101e3565b610221610667565b81801561024557600080fd5b5061020c61025436600461396a565b610682565b6101d9610267366004613910565b61077f565b61027f61027a366004613910565b61081b565b6040516101e39190613982565b61029f61029a366004613910565b6108b4565b6040516101e391906139db565b8180156102b857600080fd5b5061020c6102c7366004613a28565b610a9a565b6101d9610abf565b8180156102e057600080fd5b5061020c6102ef366004613910565b610ad2565b81801561030057600080fd5b5061022161030f366004613a59565b610b4d565b81801561032057600080fd5b5061020c61032f366004613910565b610f7e565b6101d9610ff9565b61034f61034a366004613910565b61100c565b6040516101e39190613ac0565b61036f61036a366004613910565b611080565b6040516101e391908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b8180156103ae57600080fd5b506102216103bd366004613af8565b6112bf565b8180156103ce57600080fd5b5061020c6103dd366004613910565b6113eb565b6101d96103f0366004613b1d565b61143a565b6101d9610403366004613910565b6114fb565b81801561041457600080fd5b5061020c610423366004613910565b61152e565b81801561043457600080fd5b5061020c610443366004613b3f565b61157d565b6101d9610456366004613b1d565b61171d565b81801561046757600080fd5b5061020c61047636600461393a565b611782565b6101d96117ba565b81801561048f57600080fd5b5061020c61049e366004613b98565b6117d5565b6101d96104b1366004613bc4565b611849565b61022161186f565b6101d96104cc366004613bf6565b611885565b6102216104df366004613b1d565b61197a565b61034f611ac4565b6101d96104fa366004613910565b611b1f565b81801561050b57600080fd5b5061022161051a366004613c13565b611b8b565b6101d961052d366004613910565b611d42565b81801561053e57600080fd5b5061020c61054d366004613c72565b611e5d565b6101d9612190565b81801561056657600080fd5b5061020c61057536600461393a565b6121a3565b81801561058657600080fd5b5061020c610595366004613a28565b6122be565b60006105a461230e565b600d0154905090565b60006105b7612332565b6000838152602082905260409020549091506105ee5760405163018f58af60e31b8152600481018390526024015b60405180910390fd5b600082815260208290526040902060020154156106215760405163e2cf34b760e01b8152600481018390526024016105e5565b61062c8260016121a3565b5050565b6000811561064057506000610661565b600061064a61230e565b600085815260019190910160205260409020541190505b92915050565b600061067161230e565b60170154610100900460ff16919050565b600061068c61230e565b60016000908152600380830160209081526040808420873590556002845280842091870135909155908252808220818601359055600482528082206060860135905560058252808220608086013590556006825280822060a08601359055600782529081902060c08501359055519091507fc91e5ded81b3894187855cc79c29a7eaa6b412d30cfa1658fe313129291db24290610773908490600060e082019050823582526020830135602083015260408301356040830152606083013560608301526080830135608083015260a083013560a083015260c083013560c083015292915050565b60405180910390a15050565b60008061078a61230e565b600f810154604051633404591760e21b8152600481018690529192506000916001600160a01b039091169063d011645c90602401602060405180830381865afa1580156107db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ff9190613c9e565b60ff166000908152600390920160205250604090205492915050565b606061082561230e565b6010016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156108a95783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610859565b505050509050919050565b606060006108c061230e565b6000848152601382016020526040812080549293509190816001600160401b038111156108ef576108ef613cbb565b604051908082528060200260200182016040528015610918578160200160208202803683370190505b5090506000805b83811015610a8e57600085828154811061093b5761093b613cd1565b600091825260209091200154600f88015460405162491fcf60e11b8152600481018390529192506001600160a01b03169062923f9e90602401602060405180830381865afa158015610991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b59190613ce7565b6109bf5750610a7c565b600f87015460405163692b26ff60e01b8152600481018390526000916001600160a01b03169063692b26ff90602401602060405180830381865afa158015610a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2f9190613d04565b90506001600160a01b03811615610a795780858581518110610a5357610a53613cd1565b6001600160a01b039092166020928302919091019091015283610a7581613d37565b9450505b50505b80610a8681613d37565b91505061091f565b50815295945050505050565b80610aa361230e565b60170180549115156101000261ff001990921691909117905550565b6000610ac961230e565b60150154905090565b6000610adc61230e565b90508060160154821115610b0a5760168101546040516324588df560e11b81526105e5918491600401613d50565b7fc0d3753bc89284345726d88cd5c82025ebedac4070cdbc551a0ba27b5180a637816007015483604051610b3f929190613d50565b60405180910390a160070155565b600080610b5861230e565b90506000610b64612332565b601783015490915060ff1615610b8d57604051637bd6341960e01b815260040160405180910390fd5b600089815260208290526040902054610bbc5760405163018f58af60e31b8152600481018a90526024016105e5565b50600f81015460405162491fcf60e11b8152600481018990526001600160a01b039091169062923f9e90602401602060405180830381865afa158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a9190613ce7565b1580610ca85750600f810154604051631975e30960e11b81526001600160a01b03909116906332ebc61290610c659033908b90600401613d5e565b602060405180830381865afa158015610c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca69190613ce7565b155b15610cc6576040516326a2091b60e21b815260040160405180910390fd5b6000878152601082016020526040812080548203610cf757604051632469757560e11b815260040160405180910390fd5b600089815260118401602090815260408083208d8452909152902054815481101580610d4657508a828281548110610d3157610d31613cd1565b90600052602060002090600302016000015414155b15610d6457604051632469757560e11b815260040160405180910390fd5b83600d0154828281548110610d7b57610d7b613cd1565b906000526020600020906003020160020154610d979190613d77565b84600e0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190613d8a565b1015610e3357898b60405163564f58b360e01b81526004016105e5929190613d50565b6000828281548110610e4757610e47613cd1565b906000526020600020906003020160010154905089600014610e695789610e6b565b805b935080841115610e8e57604051632c578e4560e21b815260040160405180910390fd5b808403610ea657610ea1858c8e85612356565b610edf565b83838381548110610eb957610eb9613cd1565b90600052602060002090600302016001016000828254610ed99190613da3565b90915550505b505050600081610eef848c612535565b610ef99190613da3565b9050610f06838b8361255e565b888a60008051602061412983398151915284604051610f2791815260200190565b60405180910390a3851580610f395750865b15610f4957859350505050610f74565b8260070154811015610f6c57610f62838b898989612591565b9350505050610f74565b600193505050505b9695505050505050565b6000610f8861230e565b90508060070154821015610fb6576007810154604051635ab4737760e01b81526105e5918491600401613d50565b7ff4c290bd7ee941689bccbabc9dbd567d76db3be9871c7aa182dabf6737f7fc70816016015483604051610feb929190613d50565b60405180910390a160160155565b600061100361230e565b60160154905090565b606061101661230e565b601301600083815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561107457602002820191906000526020600020905b815481526020019060010190808311611060575b50505050509050919050565b6110ab6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006110b561230e565b600f810154604051633404591760e21b8152600481018690529192506000916001600160a01b039091169063d011645c90602401602060405180830381865afa158015611106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112a9190613c9e565b60ff811660009081526003840160209081526040808320548752878352601086018252808320600e8701548251639cbe5efd60e01b8152925195965090946001600160a01b0390911692639cbe5efd92600480820193918290030181865afa15801561119a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111be9190613d8a565b905060005b825481101561128b578281815481106111de576111de613cd1565b906000526020600020906003020160010154866020018181516112019190613d77565b905250600d850154835484908390811061121d5761121d613cd1565b9060005260206000209060030201600201546112399190613d77565b8210156112795782818154811061125257611252613cd1565b906000526020600020906003020160010154866060018181516112759190613d77565b9052505b8061128381613d37565b9150506111c3565b50602085015185511161129f5760006112b0565b602085015185516112b09190613da3565b60408601525092949350505050565b6000806112ca612332565b90507fb5b8d618af1ffb8d5bcc4bd23f445ba34ed08d7a16d1e1b5411cfbe7913e590060006112f761230e565b6000878152602085905260409020549091506113295760405163018f58af60e31b8152600481018790526024016105e5565b600086815260038301602052604090205460ff168015611350576000945050505050610661565b600061135c83896127f9565b60008981526020879052604081206002015491925090158015919082906113a4575060008a8152600287016020526040902061139790612c2e565b6001600160d01b03166001145b905084600701548310156113cd576113bf858b86848d612591565b975050505050505050610661565b6113db85888c858589612c76565b5060019998505050505050505050565b60006113f561230e565b90507fff24fd32f78a666774cb7265d538935a108bff58375ccca2d01c4c9b66ac22a581601501548360405161142c929190613d50565b60405180910390a160150155565b60008061144561230e565b60008581526010820160205260408120805492935091900361146c57600092505050610661565b600085815260118301602090815260408083208784529091529020548154811015806114bb5750848282815481106114a6576114a6613cd1565b90600052602060002090600302016000015414155b156114cc5760009350505050610661565b8181815481106114de576114de613cd1565b906000526020600020906003020160010154935050505092915050565b600061151f61150861230e565b600084815260189190910160205260409020612c2e565b6001600160d01b031692915050565b600061153861230e565b90507f98eaabfe135a9c40c420208962bf81e7926b4d6df3e23502164c0554b7b3522481600d01548360405161156f929190613d50565b60405180910390a1600d0155565b6000611587612332565b9050600061159361230e565b90506115a381838a8a8a8a612e7a565b60006115b082898b6131cb565b905061163882898b8a8587600e0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116339190613d8a565b61327b565b600087611645848c612535565b61164f9190613d77565b905061165c838b8361255e565b826007015481106116755761167583858c89898c612c76565b600f83015460405163692b26ff60e01b8152600481018b90526000916001600160a01b03169063692b26ff90602401602060405180830381865afa1580156116c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e59190613d04565b9050898b600080516020614109833981519152838c604051611708929190613d5e565b60405180910390a35050505050505050505050565b60008061172861230e565b90504383111561174f578243604051637f07449b60e01b81526004016105e5929190613d50565b61177161175b846133f8565b600086815260188401602052604090209061342f565b6001600160d01b0316949350505050565b61178c82826121a3565b816000805160206140e9833981519152826040516117ae911515815260200190565b60405180910390a25050565b60006117c461230e565b6006015465ffffffffffff16919050565b60006117df61230e565b60068101546040519192507f55c7a79c45e9a972909cd640f9336a14a84adbaf756211f16267001854110191916118209165ffffffffffff16908590613db6565b60405180910390a1600601805465ffffffffffff191665ffffffffffff92909216919091179055565b600061185361230e565b60ff909216600090815260039290920160205250604090205490565b600061187961230e565b6017015460ff16919050565b60008061189061230e565b600f810154604051636696377f60e11b81526001600160a01b0386811660048301529293506000929091169063cd2c6efe90602401600060405180830381865afa1580156118e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261190a9190810190613e27565b90506000805b82518110156119715783600301600084838151811061193157611931613cd1565b60200260200101516020015160ff1660ff168152602001908152602001600020548261195d9190613d77565b91508061196981613d37565b915050611910565b50949350505050565b60008061198561230e565b6000858152601082016020526040812080549293509190036119ac57600092505050610661565b600085815260118301602090815260408083208784529091529020548154811015806119fb5750848282815481106119e6576119e6613cd1565b90600052602060002090600302016000015414155b15611a0c5760009350505050610661565b82600d0154828281548110611a2357611a23613cd1565b906000526020600020906003020160020154611a3f9190613d77565b83600e0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab89190613d8a565b10159695505050505050565b6060611ace61230e565b805460408051602080840282018101909252828152929190830182828015611b1557602002820191906000526020600020905b815481526020019060010190808311611b01575b5050505050905090565b600080611b2a61230e565b60008481526010820160205260408120919250805b825481101561197157828181548110611b5a57611b5a613cd1565b90600052602060002090600302016001015482611b779190613d77565b915080611b8381613d37565b915050611b3f565b600080611b9661230e565b90506000611ba2612332565b600089815260208290526040902054909150611bd45760405163018f58af60e31b8152600481018990526024016105e5565b506000868152601082016020526040812080548203611c0657604051632469757560e11b815260040160405180910390fd5b600088815260118401602090815260408083208c8452909152902054815481101580611c55575089828281548110611c4057611c40613cd1565b90600052602060002090600302016000015414155b15611c7357604051632469757560e11b815260040160405180910390fd5b818181548110611c8557611c85613cd1565b9060005260206000209060030201600101549250611ca5848a8c84612356565b5050600081611cb4848b612535565b611cbe9190613da3565b9050611ccb838a8361255e565b878960008051602061412983398151915284604051611cec91815260200190565b60405180910390a3851580611cfe5750865b15611d0e57859350505050611d39565b8260070154811015611d3157611d27838a898989612591565b9350505050611d39565b600193505050505b95945050505050565b600080611d4d61230e565b600f810154604051633404591760e21b8152600481018690529192506000916001600160a01b039091169063d011645c90602401602060405180830381865afa158015611d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc29190613c9e565b60ff811660009081526003840160209081526040808320548884526010870190925282209293509190805b8254811015611e3957828181548110611e0857611e08613cd1565b90600052602060002090600302016001015482611e259190613d77565b915080611e3181613d37565b915050611ded565b50808311611e48576000611e52565b611e528184613da3565b979650505050505050565b6000611e6761230e565b6017810154909150610100900460ff1615611e9557604051633dbff3b560e01b815260040160405180910390fd5b600e81015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa158015611ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f059190613d8a565b600085815260108401602090815260408083206011870183528184208a85529092528220548154939450909290919015801590611f425750825482105b8015611f70575087838381548110611f5c57611f5c613cd1565b906000526020600020906003020160000154145b90508015612020576000838381548110611f8c57611f8c613cd1565b906000526020600020906003020160010154905086848481548110611fb357611fb3613cd1565b90600052602060002090600302016001018190555084848481548110611fdb57611fdb613cd1565b90600052602060002090600302016002018190555061201a868a89846120018b8f612535565b61200b9190613da3565b6120159190613d77565b61255e565b506120ea565b60408051606081018252898152602080820189815292820187815286546001818101895560008981529390932093516003909102909301928355925182820155915160029091015583546120749190613da3565b600088815260118701602090815260408083208c8452825280832093909355601388018152918120805460018181018355828452938320018a9055908a9052546120be9190613da3565b600089815260148701602090815260408083208b84529091529020556120ea85898861200b8383612535565b600f85015460405163692b26ff60e01b8152600481018990526000916001600160a01b03169063692b26ff90602401602060405180830381865afa158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190613d04565b90508789600080516020614109833981519152838a60405161217d929190613d5e565b60405180910390a3505050505050505050565b600061219a61230e565b60070154905090565b60006121ad61230e565b90508115612291576000838152600182810160205260408220546121d19190613da3565b82549091506000906121e590600190613da3565b905060008360000182815481106121fe576121fe613cd1565b906000526020600020015490508084600001848154811061222157612221613cd1565b600091825260209091200155612238836001613d77565b6000828152600186016020526040902055835484908061225a5761225a613f30565b6001900381819060005260206000200160009055905583600101600087815260200190815260200160002060009055505050505050565b80546001808201835560008381526020808220909301869055835495815292019052604090209190915550565b60006122c861230e565b60178101805460ff19168415159081179091556040519081529091507ffd9f033c3b3a54e30cfe5bf2bc66dea3bac111d66ecc2c03a2bcc1c5ccdd025090602001610773565b7fc1a7bcdc0c77e8c77ade4541d1777901ab96ca598d164d89afa5c8dfbfc4430090565b7fb6909058bd527140b8d55a44344c5e42f1f148f1b3b16df7641882df8dd7290090565b60008381526010850160205260408120805490919061237790600190613da3565b90508083146123ff57600082828154811061239457612394613cd1565b90600052602060002090600302019050808385815481106123b7576123b7613cd1565b60009182526020808320845460039093020191825560018085015490830155600293840154939091019290925587815260118901825260408082209354825292909152208390555b8180548061240f5761240f613f30565b6000828152602080822060036000199094019384020182815560018181018490556002909101839055929093558781526011890183526040808220888352845280822082905560138a01845280822060148b0185528183208a84529094528120548354909261247d91613da3565b90508082146124e557600083828154811061249a5761249a613cd1565b90600052602060002001549050808484815481106124ba576124ba613cd1565b600091825260208083209091019290925589815260148c018252604080822093825292909152208290555b828054806124f5576124f5613f30565b6000828152602080822083016000199081018390559092019092559781526014909901875250506040808820968852959094525050509082209190915550565b6000818152601883016020526040812061254e90612c2e565b6001600160d01b03169392505050565b61258a61256a436133f8565b612573836134d6565b60008581526018870160205260409020919061350a565b5050505050565b600080841580156125b15750600086815260018801602052604090205415155b9050806125e8576125c38660006121a3565b6040516000815286906000805160206140e98339815191529060200160405180910390a25b600086815260048801602052604090205465ffffffffffff1615801561260b5750835b156126925760008681526004880160205260409020805465ffffffffffff191665ffffffffffff85811691909117909155600688015487917f502689eeffd57ae8470e1d86a4a8cd293a44bfbbd2429cb375da3d901a3dd80f918691612672911682613f46565b604051612680929190613db6565b60405180910390a26001915050611d39565b600687015460008781526004890160205260409020546126bd9165ffffffffffff9081169116613f46565b65ffffffffffff168365ffffffffffff161180156126d85750835b156127ec57600b870154604051635949432560e11b8152600481018890526001600160a01b039091169063b292864a90602401602060405180830381865afa158015612728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274c9190613f6c565b60008781526009890160205260409020805460ff1916600183600381111561277657612776613f8d565b0217905550600b870154604051630399a2ab60e21b81526001600160a01b0390911690630e668aac906127b0908990600090600401613fa3565b600060405180830381600087803b1580156127ca57600080fd5b505af11580156127de573d6000803e3d6000fd5b505050506000915050611d39565b5060019695505050505050565b6000818152601383016020526040812081805b8254811015612c2357600083828154811061282957612829613cd1565b6000918252602082200154600f89015460405162491fcf60e11b8152600481018390529193506001600160a01b03169062923f9e90602401602060405180830381865afa15801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a29190613ce7565b905080612b60576000828152601089016020908152604080832060118c0183528184208b8552909252909120548154811015806129025750888282815481106128ed576128ed613cd1565b90600052602060002090600302016000015414155b156129245783896040516333b11f8360e01b81526004016105e5929190613d50565b600082828154811061293857612938613cd1565b6000918252602082206001600390920201810154855490935061295b9190613da3565b9050808314612a145783818154811061297657612976613cd1565b906000526020600020906003020184848154811061299657612996613cd1565b9060005260206000209060030201600082015481600001556001820154816001015560028201548160020155905050828c601101600088815260200190815260200160002060008686815481106129ef576129ef613cd1565b9060005260206000209060030201600001548152602001908152602001600020819055505b83805480612a2457612a24613f30565b60008281526020808220600360001990940193840201828155600181810184905560029091018390559290935588815260118f01835260408082208f83529093529182208290558a54612a779190613da3565b9050808814612aef5760008a8281548110612a9457612a94613cd1565b90600052602060002001549050808b8a81548110612ab457612ab4613cd1565b9060005260206000200181905550888e60140160008f8152602001908152602001600020600083815260200190815260200160002081905550505b89805480612aff57612aff613f30565b6000828152602080822083016000199081018390559092019092558d825260148f01815260408083208a8452825280832092909255905184815288918e91600080516020614129833981519152910160405180910390a35050505050612c1c565b6000828152601089016020908152604080832060118c0183528184208b855290925290912054815481101580612bb9575088828281548110612ba457612ba4613cd1565b90600052602060002090600302016000015414155b15612bdb5783896040516333b11f8360e01b81526004016105e5929190613d50565b818181548110612bed57612bed613cd1565b90600052602060002090600302016001015486612c0a9190613d77565b955084612c1681613d37565b95505050505b505061280c565b61197186868461255e565b80546000908015612c6c57612c5683612c48600184613da3565b600091825260209091200190565b54600160301b90046001600160d01b0316612c6f565b60005b9392505050565b82612da3576000848152602086815260408083204260029091015560018089018054808301825590855292909320909101869055600b8801549051630399a2ab60e21b81526001600160a01b0390911691630e668aac91612cdb918891600401613fa3565b600060405180830381600087803b158015612cf557600080fd5b505af1158015612d09573d6000803e3d6000fd5b505050506000612d367f5830f0e95c01712d916c34d9e2fa42e9f749b325b67bce7382d70bb99c62350090565b6000868152600382016020908152604080832054918a905291829020915192935087927f181c8615e49dc4eaed218e1d225e4a34a0fb364fc70601a191573daa19d57eda92612d95926001600160a01b03169160019182019190613fd5565b60405180910390a250612e23565b81612e2357600b860154600085815260098801602052604090819020549051630399a2ab60e21b81526001600160a01b0390921691630e668aac91612df091889160ff1690600401613fa3565b600060405180830381600087803b158015612e0a57600080fd5b505af1158015612e1e573d6000803e3d6000fd5b505050505b600081158015612e425750600085815260018801602052604090205415155b90508015612e5557612e55856001611782565b50505060009182525060049092016020525060409020805465ffffffffffff19169055565b601786015460ff1615612ea057604051637bd6341960e01b815260040160405180910390fd5b600084815260208690526040902054612ecf5760405163018f58af60e31b8152600481018590526024016105e5565b8015612ef157604051633126f1ab60e01b8152600481018590526024016105e5565b821580612efc575081155b15612f1a57604051632c578e4560e21b815260040160405180910390fd5b600f86015460405162491fcf60e11b8152600481018590526001600160a01b039091169062923f9e90602401602060405180830381865afa158015612f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f879190613ce7565b15806130055750600f860154604051631975e30960e11b81526001600160a01b03909116906332ebc61290612fc29033908790600401613d5e565b602060405180830381865afa158015612fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130039190613ce7565b155b15613023576040516326a2091b60e21b815260040160405180910390fd5b600f860154604051633404591760e21b8152600481018590526000916001600160a01b03169063d011645c90602401602060405180830381865afa15801561306f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130939190613c9e565b60ff81166000908152600389016020526040812054919250036130c957604051632e8e471b60e21b815260040160405180910390fd5b60ff81166000908152600388016020526040812054906130e98987613525565b905060008183116130fb576000613105565b6131058284613da3565b90508086111561312e5786818760405163099ee8a360e11b81526004016105e59392919061409a565b600061313b8b898b6131cb565b60158c015490915061314d8883613d77565b11156131765787898c601501546040516387b212fd60e01b81526004016105e59392919061409a565b60006131828c8b612535565b60168d01549091506131948983613d77565b11156131bd5789818d60160154604051633430a84360e11b81526004016105e59392919061409a565b505050505050505050505050565b60008281526010840160205260408120805482036131ed576000915050612c6f565b6000848152601186016020908152604080832086845290915290205481548110158061323c57508382828154811061322757613227613cd1565b90600052602060002090600302016000015414155b1561324c57600092505050612c6f565b81818154811061325e5761325e613cd1565b906000526020600020906003020160010154925050509392505050565b811561332057600085815260118701602090815260408083208784529091529020546132a78484613d77565b600087815260108901602052604090208054839081106132c9576132c9613cd1565b90600052602060002090600302016001018190555081876010016000888152602001908152602001600020828154811061330557613305613cd1565b906000526020600020906003020160020181905550506133f0565b60008581526010870160208181526040808420815160608101835289815280840189815292810187815282546001818101855584895286892093516003909202909301908155935184830155516002909301929092559389905291905290546133899190613da3565b600086815260118801602090815260408083208884528252808320939093556013890181529181208054600181810183558284529383200188905590869052546133d39190613da3565b600085815260148801602090815260408083208984529091529020555b505050505050565b600065ffffffffffff82111561342b576040516306dfcc6560e41b815260306004820152602481018390526044016105e5565b5090565b81546000908181600581111561348e57600061344a84613584565b6134549085613da3565b60008881526020902090915081015465ffffffffffff908116908716101561347e5780915061348c565b613489816001613d77565b92505b505b600061349c8787858561366c565b905080156134c9576134b387612c48600184613da3565b54600160301b90046001600160d01b0316611e52565b6000979650505050505050565b60006001600160d01b0382111561342b576040516306dfcc6560e41b815260d06004820152602481018390526044016105e5565b6000806135188585856136d1565b915091505b935093915050565b6000818152601083016020526040812081805b82548110156119715782818154811061355357613553613cd1565b906000526020600020906003020160010154826135709190613d77565b91508061357c81613d37565b915050613538565b60008160000361359657506000919050565b600060016135a38461384b565b901c6001901b905060018184816135bc576135bc6140b0565b048201901c905060018184816135d4576135d46140b0565b048201901c905060018184816135ec576135ec6140b0565b048201901c90506001818481613604576136046140b0565b048201901c9050600181848161361c5761361c6140b0565b048201901c90506001818481613634576136346140b0565b048201901c9050600181848161364c5761364c6140b0565b048201901c9050612c6f81828581613666576136666140b0565b046138df565b60005b818310156136c657600061368384846138f5565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156136b2578092506136c0565b6136bd816001613d77565b93505b5061366f565b50805b949350505050565b8254600090819080156137f05760006136ef87612c48600185613da3565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b03166020840152919250908716101561374357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff80881691160361378f578461376688612c48600186613da3565b80546001600160d01b0392909216600160301b0265ffffffffffff9092169190911790556137e0565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b60200151925083915061351d9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161351d565b600080608083901c1561386057608092831c92015b604083901c1561387257604092831c92015b602083901c1561388457602092831c92015b601083901c1561389657601092831c92015b600883901c156138a857600892831c92015b600483901c156138ba57600492831c92015b600283901c156138cc57600292831c92015b600183901c156106615760010192915050565b60008183106138ee5781612c6f565b5090919050565b600061390460028484186140c6565b612c6f90848416613d77565b60006020828403121561392257600080fd5b5035919050565b801515811461393757600080fd5b50565b6000806040838503121561394d57600080fd5b82359150602083013561395f81613929565b809150509250929050565b600060e0828403121561397c57600080fd5b50919050565b602080825282518282018190526000919060409081850190868401855b828110156139ce578151805185528681015187860152850151858501526060909301929085019060010161399f565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613a1c5783516001600160a01b0316835292840192918401916001016139f7565b50909695505050505050565b600060208284031215613a3a57600080fd5b8135612c6f81613929565b65ffffffffffff8116811461393757600080fd5b60008060008060008060c08789031215613a7257600080fd5b8635955060208701359450604087013593506060870135613a9281613929565b92506080870135613aa281613929565b915060a0870135613ab281613a45565b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015613a1c57835183529284019291840191600101613adc565b60008060408385031215613b0b57600080fd5b82359150602083013561395f81613a45565b60008060408385031215613b3057600080fd5b50508035926020909101359150565b60008060008060008060c08789031215613b5857600080fd5b8635955060208701359450604087013593506060870135613b7881613929565b92506080870135613b8881613929565b915060a0870135613ab281613929565b600060208284031215613baa57600080fd5b8135612c6f81613a45565b60ff8116811461393757600080fd5b600060208284031215613bd657600080fd5b8135612c6f81613bb5565b6001600160a01b038116811461393757600080fd5b600060208284031215613c0857600080fd5b8135612c6f81613be1565b600080600080600060a08688031215613c2b57600080fd5b85359450602086013593506040860135613c4481613929565b92506060860135613c5481613929565b91506080860135613c6481613a45565b809150509295509295909350565b600080600060608486031215613c8757600080fd5b505081359360208301359350604090920135919050565b600060208284031215613cb057600080fd5b8151612c6f81613bb5565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215613cf957600080fd5b8151612c6f81613929565b600060208284031215613d1657600080fd5b8151612c6f81613be1565b634e487b7160e01b600052601160045260246000fd5b600060018201613d4957613d49613d21565b5060010190565b918252602082015260400190565b6001600160a01b03929092168252602082015260400190565b8082018082111561066157610661613d21565b600060208284031215613d9c57600080fd5b5051919050565b8181038181111561066157610661613d21565b65ffffffffffff92831681529116602082015260400190565b60405160a081016001600160401b0381118282101715613df157613df1613cbb565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613e1f57613e1f613cbb565b604052919050565b60006020808385031215613e3a57600080fd5b82516001600160401b0380821115613e5157600080fd5b818501915085601f830112613e6557600080fd5b815181811115613e7757613e77613cbb565b613e85848260051b01613df7565b81815260a09182028401850191858201919089841115613ea457600080fd5b948601945b83861015613f235780868b031215613ec15760008081fd5b613ec9613dcf565b8651815287870151613eda81613bb5565b818901526040878101518781168114613ef35760008081fd5b9082015260608781015190820152608080880151613f1081613a45565b9082015283529485019491860191613ea9565b5098975050505050505050565b634e487b7160e01b600052603160045260246000fd5b65ffffffffffff818116838216019080821115613f6557613f65613d21565b5092915050565b600060208284031215613f7e57600080fd5b815160048110612c6f57600080fd5b634e487b7160e01b600052602160045260246000fd5b8281526040810160048310613fc857634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b60018060a01b0384168152600060206060818401526000855481600182811c91508083168061400557607f831692505b858310810361402257634e487b7160e01b85526022600452602485fd5b6060880183905260808801818015614041576001811461405757614082565b60ff198616825284151560051b82019650614082565b60008c81526020902060005b8681101561407c57815484820152908501908901614063565b83019750505b505050508615156040870152509092506136c9915050565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826140e357634e487b7160e01b600052601260045260246000fd5b50049056fe39ed358ca65699fee4083beb84f3d91ce2201bb0c89859317fc5be02231609ed1193ced031b3229da69fab9691642274e1ea2625dfce9967135e6d5e6029d22075a2c0f7478dc6b5e01e316a07fc6b72d32d90ca051d898b5d198300d1a7c036a2646970667358221220d3472b7206dd15f96c27abb83db70cea59eb40259fb2c93010f96bf95812c4e164736f6c63430008140033","opcodes":"PUSH2 0x417E PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4646A49 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xAB12E14 EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x1E13ED7A EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x31677980 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x38114221 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x42C89F52 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x44532BE2 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x44BB58F7 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x47E5DCBC EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x4A0C4A42 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x4F77FE12 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x4FD4E1B8 EQ PUSH2 0x2F4 JUMPI DUP1 PUSH4 0x51D2A6E3 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x5CBC2FFB EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x5CFDD470 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0x5DD3A4F1 EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0x6E054773 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x6FB44F5F EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x72584102 EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x7BA53285 EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0x80EA3DE1 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x9A116641 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x9AB17C9B EQ PUSH2 0x448 JUMPI DUP1 PUSH4 0x9FCB2B41 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0xA06DB7DC EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xA11BD9FB EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0xACDB9F05 EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0xB90A30EA EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xC996C624 EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0xCCD4BACA EQ PUSH2 0x4D1 JUMPI DUP1 PUSH4 0xD6418B8A EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0xD76C3973 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0xE8786A58 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0xE9F9739D EQ PUSH2 0x51F JUMPI DUP1 PUSH4 0xEE9419CF EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xF1A962AC EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0xFCAF9A76 EQ PUSH2 0x55A JUMPI DUP1 PUSH4 0xFCD190C4 EQ PUSH2 0x57A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D9 PUSH2 0x59A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x221 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x393A JUMP JUMPDEST PUSH2 0x630 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E3 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x667 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x396A JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x77F JUMP JUMPDEST PUSH2 0x27F PUSH2 0x27A CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x81B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E3 SWAP2 SWAP1 PUSH2 0x3982 JUMP JUMPDEST PUSH2 0x29F PUSH2 0x29A CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x8B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E3 SWAP2 SWAP1 PUSH2 0x39DB JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A28 JUMP JUMPDEST PUSH2 0xA9A JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0xABF JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0xAD2 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x221 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x3A59 JUMP JUMPDEST PUSH2 0xB4D JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0xF7E JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0xFF9 JUMP JUMPDEST PUSH2 0x34F PUSH2 0x34A CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x100C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E3 SWAP2 SWAP1 PUSH2 0x3AC0 JUMP JUMPDEST PUSH2 0x36F PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x1080 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E3 SWAP2 SWAP1 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 DUP3 ADD MLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x221 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF8 JUMP JUMPDEST PUSH2 0x12BF JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x13EB JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1D JUMP JUMPDEST PUSH2 0x143A JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x14FB JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x423 CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x152E JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x443 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B3F JUMP JUMPDEST PUSH2 0x157D JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x456 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1D JUMP JUMPDEST PUSH2 0x171D JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x476 CALLDATASIZE PUSH1 0x4 PUSH2 0x393A JUMP JUMPDEST PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x17BA JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x3B98 JUMP JUMPDEST PUSH2 0x17D5 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BC4 JUMP JUMPDEST PUSH2 0x1849 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x186F JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x4CC CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF6 JUMP JUMPDEST PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1D JUMP JUMPDEST PUSH2 0x197A JUMP JUMPDEST PUSH2 0x34F PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x4FA CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x1B1F JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x221 PUSH2 0x51A CALLDATASIZE PUSH1 0x4 PUSH2 0x3C13 JUMP JUMPDEST PUSH2 0x1B8B JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x52D CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x1D42 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x54D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C72 JUMP JUMPDEST PUSH2 0x1E5D JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x2190 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x575 CALLDATASIZE PUSH1 0x4 PUSH2 0x393A JUMP JUMPDEST PUSH2 0x21A3 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x595 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A28 JUMP JUMPDEST PUSH2 0x22BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A4 PUSH2 0x230E JUMP JUMPDEST PUSH1 0xD ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B7 PUSH2 0x2332 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x5EE JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD ISZERO PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2CF34B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x62C DUP3 PUSH1 0x1 PUSH2 0x21A3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x640 JUMPI POP PUSH1 0x0 PUSH2 0x661 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64A PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD GT SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x671 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 ADD SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68C PUSH2 0x230E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP8 CALLDATALOAD SWAP1 SSTORE PUSH1 0x2 DUP5 MSTORE DUP1 DUP5 KECCAK256 SWAP2 DUP8 ADD CALLDATALOAD SWAP1 SWAP2 SSTORE SWAP1 DUP3 MSTORE DUP1 DUP3 KECCAK256 DUP2 DUP7 ADD CALLDATALOAD SWAP1 SSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP3 KECCAK256 PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP1 SSTORE PUSH1 0x5 DUP3 MSTORE DUP1 DUP3 KECCAK256 PUSH1 0x80 DUP7 ADD CALLDATALOAD SWAP1 SSTORE PUSH1 0x6 DUP3 MSTORE DUP1 DUP3 KECCAK256 PUSH1 0xA0 DUP7 ADD CALLDATALOAD SWAP1 SSTORE PUSH1 0x7 DUP3 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0xC0 DUP6 ADD CALLDATALOAD SWAP1 SSTORE MLOAD SWAP1 SWAP2 POP PUSH32 0xC91E5DED81B3894187855CC79C29A7EAA6B412D30CFA1658FE313129291DB242 SWAP1 PUSH2 0x773 SWAP1 DUP5 SWAP1 PUSH1 0x0 PUSH1 0xE0 DUP3 ADD SWAP1 POP DUP3 CALLDATALOAD DUP3 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD CALLDATALOAD PUSH1 0xC0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x78A PUSH2 0x230E JUMP JUMPDEST PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x34045917 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD011645C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FF SWAP2 SWAP1 PUSH2 0x3C9E JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x825 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x10 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x8A9 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x859 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x8C0 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x13 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x8EF JUMPI PUSH2 0x8EF PUSH2 0x3CBB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x918 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA8E JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x93B JUMPI PUSH2 0x93B PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xF DUP9 ADD SLOAD PUSH1 0x40 MLOAD PUSH3 0x491FCF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x923F9E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x991 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9B5 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST PUSH2 0x9BF JUMPI POP PUSH2 0xA7C JUMP JUMPDEST PUSH1 0xF DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x692B26FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x692B26FF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA0B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA2F SWAP2 SWAP1 PUSH2 0x3D04 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xA79 JUMPI DUP1 DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA53 JUMPI PUSH2 0xA53 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP4 PUSH2 0xA75 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP POP JUMPDEST DUP1 PUSH2 0xA86 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x91F JUMP JUMPDEST POP DUP2 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xAA3 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 ADD DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH2 0x100 MUL PUSH2 0xFF00 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC9 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x15 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xADC PUSH2 0x230E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x16 ADD SLOAD DUP3 GT ISZERO PUSH2 0xB0A JUMPI PUSH1 0x16 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x24588DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x5E5 SWAP2 DUP5 SWAP2 PUSH1 0x4 ADD PUSH2 0x3D50 JUMP JUMPDEST PUSH32 0xC0D3753BC89284345726D88CD5C82025EBEDAC4070CDBC551A0BA27B5180A637 DUP2 PUSH1 0x7 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0xB3F SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x7 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB58 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB64 PUSH2 0x2332 JUMP JUMPDEST PUSH1 0x17 DUP4 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0xB8D JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BD63419 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBBC JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST POP PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH3 0x491FCF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH3 0x923F9E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC06 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2A SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST ISZERO DUP1 PUSH2 0xCA8 JUMPI POP PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x1975E309 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x32EBC612 SWAP1 PUSH2 0xC65 SWAP1 CALLER SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x3D5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA6 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xCC6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x26A2091B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SUB PUSH2 0xCF7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x24697575 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x11 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0xD46 JUMPI POP DUP11 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xD31 JUMPI PUSH2 0xD31 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0xD64 JUMPI PUSH1 0x40 MLOAD PUSH4 0x24697575 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xD ADD SLOAD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xD7B JUMPI PUSH2 0xD7B PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0xD97 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST DUP5 PUSH1 0xE ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9CBE5EFD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE10 SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST LT ISZERO PUSH2 0xE33 JUMPI DUP10 DUP12 PUSH1 0x40 MLOAD PUSH4 0x564F58B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE47 JUMPI PUSH2 0xE47 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP1 POP DUP10 PUSH1 0x0 EQ PUSH2 0xE69 JUMPI DUP10 PUSH2 0xE6B JUMP JUMPDEST DUP1 JUMPDEST SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x40 MLOAD PUSH4 0x2C578E45 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 SUB PUSH2 0xEA6 JUMPI PUSH2 0xEA1 DUP6 DUP13 DUP15 DUP6 PUSH2 0x2356 JUMP JUMPDEST PUSH2 0xEDF JUMP JUMPDEST DUP4 DUP4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xEB9 JUMPI PUSH2 0xEB9 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xED9 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST POP POP POP PUSH1 0x0 DUP2 PUSH2 0xEEF DUP5 DUP13 PUSH2 0x2535 JUMP JUMPDEST PUSH2 0xEF9 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP PUSH2 0xF06 DUP4 DUP12 DUP4 PUSH2 0x255E JUMP JUMPDEST DUP9 DUP11 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4129 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD PUSH2 0xF27 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP6 ISZERO DUP1 PUSH2 0xF39 JUMPI POP DUP7 JUMPDEST ISZERO PUSH2 0xF49 JUMPI DUP6 SWAP4 POP POP POP POP PUSH2 0xF74 JUMP JUMPDEST DUP3 PUSH1 0x7 ADD SLOAD DUP2 LT ISZERO PUSH2 0xF6C JUMPI PUSH2 0xF62 DUP4 DUP12 DUP10 DUP10 DUP10 PUSH2 0x2591 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x1 SWAP4 POP POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF88 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x7 ADD SLOAD DUP3 LT ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x7 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x5AB47377 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x5E5 SWAP2 DUP5 SWAP2 PUSH1 0x4 ADD PUSH2 0x3D50 JUMP JUMPDEST PUSH32 0xF4C290BD7EE941689BCCBABC9DBD567D76DB3BE9871C7AA182DABF6737F7FC70 DUP2 PUSH1 0x16 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0xFEB SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x16 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1003 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x16 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1016 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x13 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1074 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1060 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x10AB PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B5 PUSH2 0x230E JUMP JUMPDEST PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x34045917 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD011645C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1106 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x112A SWAP2 SWAP1 PUSH2 0x3C9E JUMP JUMPDEST PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP8 MSTORE DUP8 DUP4 MSTORE PUSH1 0x10 DUP7 ADD DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0xE DUP8 ADD SLOAD DUP3 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 MLOAD SWAP6 SWAP7 POP SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 PUSH4 0x9CBE5EFD SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x119A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11BE SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x128B JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x11DE JUMPI PUSH2 0x11DE PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP7 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x1201 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0xD DUP6 ADD SLOAD DUP4 SLOAD DUP5 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x121D JUMPI PUSH2 0x121D PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0x1239 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x1279 JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1252 JUMPI PUSH2 0x1252 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP7 PUSH1 0x60 ADD DUP2 DUP2 MLOAD PUSH2 0x1275 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST DUP1 PUSH2 0x1283 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x11C3 JUMP JUMPDEST POP PUSH1 0x20 DUP6 ADD MLOAD DUP6 MLOAD GT PUSH2 0x129F JUMPI PUSH1 0x0 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD DUP6 MLOAD PUSH2 0x12B0 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE POP SWAP3 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12CA PUSH2 0x2332 JUMP JUMPDEST SWAP1 POP PUSH32 0xB5B8D618AF1FFB8D5BCC4BD23F445BA34ED08D7A16D1E1B5411CFBE7913E5900 PUSH1 0x0 PUSH2 0x12F7 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x1329 JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1350 JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x661 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x135C DUP4 DUP10 PUSH2 0x27F9 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 SWAP3 POP SWAP1 ISZERO DUP1 ISZERO SWAP2 SWAP1 DUP3 SWAP1 PUSH2 0x13A4 JUMPI POP PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x2 DUP8 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1397 SWAP1 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x1 EQ JUMPDEST SWAP1 POP DUP5 PUSH1 0x7 ADD SLOAD DUP4 LT ISZERO PUSH2 0x13CD JUMPI PUSH2 0x13BF DUP6 DUP12 DUP7 DUP5 DUP14 PUSH2 0x2591 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x661 JUMP JUMPDEST PUSH2 0x13DB DUP6 DUP9 DUP13 DUP6 DUP6 DUP10 PUSH2 0x2C76 JUMP JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F5 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH32 0xFF24FD32F78A666774CB7265D538935A108BFF58375CCCA2D01C4C9B66AC22A5 DUP2 PUSH1 0x15 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0x142C SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x15 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1445 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 SUB PUSH2 0x146C JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x661 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x11 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x14BB JUMPI POP DUP5 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14A6 JUMPI PUSH2 0x14A6 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x14CC JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x661 JUMP JUMPDEST DUP2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x14DE JUMPI PUSH2 0x14DE PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x151F PUSH2 0x1508 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x18 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1538 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH32 0x98EAABFE135A9C40C420208962BF81E7926B4D6DF3E23502164C0554B7B35224 DUP2 PUSH1 0xD ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0x156F SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0xD ADD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1587 PUSH2 0x2332 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1593 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH2 0x15A3 DUP2 DUP4 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2E7A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15B0 DUP3 DUP10 DUP12 PUSH2 0x31CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1638 DUP3 DUP10 DUP12 DUP11 DUP6 DUP8 PUSH1 0xE ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9CBE5EFD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x160F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1633 SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST PUSH2 0x327B JUMP JUMPDEST PUSH1 0x0 DUP8 PUSH2 0x1645 DUP5 DUP13 PUSH2 0x2535 JUMP JUMPDEST PUSH2 0x164F SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP1 POP PUSH2 0x165C DUP4 DUP12 DUP4 PUSH2 0x255E JUMP JUMPDEST DUP3 PUSH1 0x7 ADD SLOAD DUP2 LT PUSH2 0x1675 JUMPI PUSH2 0x1675 DUP4 DUP6 DUP13 DUP10 DUP10 DUP13 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0xF DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x692B26FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x692B26FF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16E5 SWAP2 SWAP1 PUSH2 0x3D04 JUMP JUMPDEST SWAP1 POP DUP10 DUP12 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4109 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 DUP13 PUSH1 0x40 MLOAD PUSH2 0x1708 SWAP3 SWAP2 SWAP1 PUSH2 0x3D5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1728 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP NUMBER DUP4 GT ISZERO PUSH2 0x174F JUMPI DUP3 NUMBER PUSH1 0x40 MLOAD PUSH4 0x7F07449B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x1771 PUSH2 0x175B DUP5 PUSH2 0x33F8 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x18 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 PUSH2 0x342F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x178C DUP3 DUP3 PUSH2 0x21A3 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x40E9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x17AE SWAP2 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17C4 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x6 ADD SLOAD PUSH6 0xFFFFFFFFFFFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17DF PUSH2 0x230E JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD PUSH1 0x40 MLOAD SWAP2 SWAP3 POP PUSH32 0x55C7A79C45E9A972909CD640F9336A14A84ADBAF756211F16267001854110191 SWAP2 PUSH2 0x1820 SWAP2 PUSH6 0xFFFFFFFFFFFF AND SWAP1 DUP6 SWAP1 PUSH2 0x3DB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x6 ADD DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND PUSH6 0xFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1853 PUSH2 0x230E JUMP JUMPDEST PUSH1 0xFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1879 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 ADD SLOAD PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1890 PUSH2 0x230E JUMP JUMPDEST PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x6696377F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH4 0xCD2C6EFE SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x190A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E27 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1971 JUMPI DUP4 PUSH1 0x3 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1931 JUMPI PUSH2 0x1931 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 PUSH2 0x195D SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x1969 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1910 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1985 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 SUB PUSH2 0x19AC JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x661 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x11 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x19FB JUMPI POP DUP5 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x19E6 JUMPI PUSH2 0x19E6 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x1A0C JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x661 JUMP JUMPDEST DUP3 PUSH1 0xD ADD SLOAD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1A23 JUMPI PUSH2 0x1A23 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0x1A3F SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST DUP4 PUSH1 0xE ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9CBE5EFD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AB8 SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST LT ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1ACE PUSH2 0x230E JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE SWAP3 SWAP2 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B15 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1B01 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B2A PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP DUP1 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x1971 JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1B5A JUMPI PUSH2 0x1B5A PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0x1B77 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x1B83 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1B3F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B96 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1BA2 PUSH2 0x2332 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x1BD4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SUB PUSH2 0x1C06 JUMPI PUSH1 0x40 MLOAD PUSH4 0x24697575 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x11 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x1C55 JUMPI POP DUP10 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1C40 JUMPI PUSH2 0x1C40 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x1C73 JUMPI PUSH1 0x40 MLOAD PUSH4 0x24697575 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1C85 JUMPI PUSH2 0x1C85 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP3 POP PUSH2 0x1CA5 DUP5 DUP11 DUP13 DUP5 PUSH2 0x2356 JUMP JUMPDEST POP POP PUSH1 0x0 DUP2 PUSH2 0x1CB4 DUP5 DUP12 PUSH2 0x2535 JUMP JUMPDEST PUSH2 0x1CBE SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1CCB DUP4 DUP11 DUP4 PUSH2 0x255E JUMP JUMPDEST DUP8 DUP10 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4129 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD PUSH2 0x1CEC SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP6 ISZERO DUP1 PUSH2 0x1CFE JUMPI POP DUP7 JUMPDEST ISZERO PUSH2 0x1D0E JUMPI DUP6 SWAP4 POP POP POP POP PUSH2 0x1D39 JUMP JUMPDEST DUP3 PUSH1 0x7 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1D31 JUMPI PUSH2 0x1D27 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH2 0x2591 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x1 SWAP4 POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D4D PUSH2 0x230E JUMP JUMPDEST PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x34045917 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD011645C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DC2 SWAP2 SWAP1 PUSH2 0x3C9E JUMP JUMPDEST PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP9 DUP5 MSTORE PUSH1 0x10 DUP8 ADD SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SWAP3 SWAP4 POP SWAP2 SWAP1 DUP1 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x1E39 JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1E08 JUMPI PUSH2 0x1E08 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0x1E25 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x1E31 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1DED JUMP JUMPDEST POP DUP1 DUP4 GT PUSH2 0x1E48 JUMPI PUSH1 0x0 PUSH2 0x1E52 JUMP JUMPDEST PUSH2 0x1E52 DUP2 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E67 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1E95 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3DBFF3B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xE DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F05 SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x10 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x11 DUP8 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP11 DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F42 JUMPI POP DUP3 SLOAD DUP3 LT JUMPDEST DUP1 ISZERO PUSH2 0x1F70 JUMPI POP DUP8 DUP4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1F5C JUMPI PUSH2 0x1F5C PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2020 JUMPI PUSH1 0x0 DUP4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1F8C JUMPI PUSH2 0x1F8C PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP1 POP DUP7 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1FB3 JUMPI PUSH2 0x1FB3 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP5 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1FDB JUMPI PUSH2 0x1FDB PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x201A DUP7 DUP11 DUP10 DUP5 PUSH2 0x2001 DUP12 DUP16 PUSH2 0x2535 JUMP JUMPDEST PUSH2 0x200B SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH2 0x2015 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST PUSH2 0x255E JUMP JUMPDEST POP PUSH2 0x20EA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP10 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP10 DUP2 MSTORE SWAP3 DUP3 ADD DUP8 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE SWAP4 SWAP1 SWAP4 KECCAK256 SWAP4 MLOAD PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP4 ADD SWAP3 DUP4 SSTORE SWAP3 MLOAD DUP3 DUP3 ADD SSTORE SWAP2 MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE DUP4 SLOAD PUSH2 0x2074 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x11 DUP8 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x13 DUP9 ADD DUP2 MSTORE SWAP2 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE DUP3 DUP5 MSTORE SWAP4 DUP4 KECCAK256 ADD DUP11 SWAP1 SSTORE SWAP1 DUP11 SWAP1 MSTORE SLOAD PUSH2 0x20BE SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x14 DUP8 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x20EA DUP6 DUP10 DUP9 PUSH2 0x200B DUP4 DUP4 PUSH2 0x2535 JUMP JUMPDEST PUSH1 0xF DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x692B26FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x692B26FF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2136 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x215A SWAP2 SWAP1 PUSH2 0x3D04 JUMP JUMPDEST SWAP1 POP DUP8 DUP10 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4109 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 DUP11 PUSH1 0x40 MLOAD PUSH2 0x217D SWAP3 SWAP2 SWAP1 PUSH2 0x3D5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x219A PUSH2 0x230E JUMP JUMPDEST PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AD PUSH2 0x230E JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x2291 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 DUP3 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD PUSH2 0x21D1 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x21E5 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x21FE JUMPI PUSH2 0x21FE PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2221 JUMPI PUSH2 0x2221 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x2238 DUP4 PUSH1 0x1 PUSH2 0x3D77 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP7 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP4 SLOAD DUP5 SWAP1 DUP1 PUSH2 0x225A JUMPI PUSH2 0x225A PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE POP POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP7 SWAP1 SSTORE DUP4 SLOAD SWAP6 DUP2 MSTORE SWAP3 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22C8 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH32 0xFD9F033C3B3A54E30CFE5BF2BC66DEA3BAC111D66ECC2C03A2BCC1C5CCDD0250 SWAP1 PUSH1 0x20 ADD PUSH2 0x773 JUMP JUMPDEST PUSH32 0xC1A7BCDC0C77E8C77ADE4541D1777901AB96CA598D164D89AFA5C8DFBFC44300 SWAP1 JUMP JUMPDEST PUSH32 0xB6909058BD527140B8D55A44344C5E42F1F148F1B3B16DF7641882DF8DD72900 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x10 DUP6 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2377 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 EQ PUSH2 0x23FF JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2394 JUMPI PUSH2 0x2394 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP1 POP DUP1 DUP4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x23B7 JUMPI PUSH2 0x23B7 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP5 SLOAD PUSH1 0x3 SWAP1 SWAP4 MUL ADD SWAP2 DUP3 SSTORE PUSH1 0x1 DUP1 DUP6 ADD SLOAD SWAP1 DUP4 ADD SSTORE PUSH1 0x2 SWAP4 DUP5 ADD SLOAD SWAP4 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP8 DUP2 MSTORE PUSH1 0x11 DUP10 ADD DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SLOAD DUP3 MSTORE SWAP3 SWAP1 SWAP2 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP2 DUP1 SLOAD DUP1 PUSH2 0x240F JUMPI PUSH2 0x240F PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 PUSH1 0x3 PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 DUP5 MUL ADD DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD DUP4 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SSTORE DUP8 DUP2 MSTORE PUSH1 0x11 DUP10 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP4 MSTORE DUP5 MSTORE DUP1 DUP3 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x13 DUP11 ADD DUP5 MSTORE DUP1 DUP3 KECCAK256 PUSH1 0x14 DUP12 ADD DUP6 MSTORE DUP2 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP5 MSTORE DUP2 KECCAK256 SLOAD DUP4 SLOAD SWAP1 SWAP3 PUSH2 0x247D SWAP2 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x24E5 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x249A JUMPI PUSH2 0x249A PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x24BA JUMPI PUSH2 0x24BA PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP10 DUP2 MSTORE PUSH1 0x14 DUP13 ADD DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 DUP3 MSTORE SWAP3 SWAP1 SWAP2 MSTORE KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST DUP3 DUP1 SLOAD DUP1 PUSH2 0x24F5 JUMPI PUSH2 0x24F5 PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE SWAP8 DUP2 MSTORE PUSH1 0x14 SWAP1 SWAP10 ADD DUP8 MSTORE POP POP PUSH1 0x40 DUP1 DUP9 KECCAK256 SWAP7 DUP9 MSTORE SWAP6 SWAP1 SWAP5 MSTORE POP POP POP SWAP1 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x18 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x254E SWAP1 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x258A PUSH2 0x256A NUMBER PUSH2 0x33F8 JUMP JUMPDEST PUSH2 0x2573 DUP4 PUSH2 0x34D6 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x18 DUP8 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 PUSH2 0x350A JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 ISZERO DUP1 ISZERO PUSH2 0x25B1 JUMPI POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO JUMPDEST SWAP1 POP DUP1 PUSH2 0x25E8 JUMPI PUSH2 0x25C3 DUP7 PUSH1 0x0 PUSH2 0x21A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE DUP7 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x40E9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND ISZERO DUP1 ISZERO PUSH2 0x260B JUMPI POP DUP4 JUMPDEST ISZERO PUSH2 0x2692 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND PUSH6 0xFFFFFFFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 DUP9 ADD SLOAD DUP8 SWAP2 PUSH32 0x502689EEFFD57AE8470E1D86A4A8CD293A44BFBBD2429CB375DA3D901A3DD80F SWAP2 DUP7 SWAP2 PUSH2 0x2672 SWAP2 AND DUP3 PUSH2 0x3F46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2680 SWAP3 SWAP2 SWAP1 PUSH2 0x3DB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP2 POP POP PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x6 DUP8 ADD SLOAD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x26BD SWAP2 PUSH6 0xFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x3F46 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND DUP4 PUSH6 0xFFFFFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x26D8 JUMPI POP DUP4 JUMPDEST ISZERO PUSH2 0x27EC JUMPI PUSH1 0xB DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x59494325 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB292864A SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2728 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x274C SWAP2 SWAP1 PUSH2 0x3F6C JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x9 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2776 JUMPI PUSH2 0x2776 PUSH2 0x3F8D JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0xB DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x399A2AB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xE668AAC SWAP1 PUSH2 0x27B0 SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x3FA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 SWAP2 POP POP PUSH2 0x1D39 JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x2C23 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2829 JUMPI PUSH2 0x2829 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0xF DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH3 0x491FCF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x923F9E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x287E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28A2 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2B60 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x10 DUP10 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x11 DUP13 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP12 DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x2902 JUMPI POP DUP9 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x28ED JUMPI PUSH2 0x28ED PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x2924 JUMPI DUP4 DUP10 PUSH1 0x40 MLOAD PUSH4 0x33B11F83 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2938 JUMPI PUSH2 0x2938 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x3 SWAP1 SWAP3 MUL ADD DUP2 ADD SLOAD DUP6 SLOAD SWAP1 SWAP4 POP PUSH2 0x295B SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 EQ PUSH2 0x2A14 JUMPI DUP4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2976 JUMPI PUSH2 0x2976 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2996 JUMPI PUSH2 0x2996 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 DUP3 ADD SLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP2 PUSH1 0x2 ADD SSTORE SWAP1 POP POP DUP3 DUP13 PUSH1 0x11 ADD PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x29EF JUMPI PUSH2 0x29EF PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMPDEST DUP4 DUP1 SLOAD DUP1 PUSH2 0x2A24 JUMPI PUSH2 0x2A24 PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 PUSH1 0x3 PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 DUP5 MUL ADD DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD DUP4 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SSTORE DUP9 DUP2 MSTORE PUSH1 0x11 DUP16 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP16 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 DUP3 KECCAK256 DUP3 SWAP1 SSTORE DUP11 SLOAD PUSH2 0x2A77 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP9 EQ PUSH2 0x2AEF JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2A94 JUMPI PUSH2 0x2A94 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP12 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x2AB4 JUMPI PUSH2 0x2AB4 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP9 DUP15 PUSH1 0x14 ADD PUSH1 0x0 DUP16 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP10 DUP1 SLOAD DUP1 PUSH2 0x2AFF JUMPI PUSH2 0x2AFF PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE DUP14 DUP3 MSTORE PUSH1 0x14 DUP16 ADD DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE DUP9 SWAP2 DUP15 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4129 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP PUSH2 0x2C1C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x10 DUP10 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x11 DUP13 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP12 DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x2BB9 JUMPI POP DUP9 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2BA4 JUMPI PUSH2 0x2BA4 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x2BDB JUMPI DUP4 DUP10 PUSH1 0x40 MLOAD PUSH4 0x33B11F83 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST DUP2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2BED JUMPI PUSH2 0x2BED PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP7 PUSH2 0x2C0A SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP6 POP DUP5 PUSH2 0x2C16 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP6 POP POP POP POP JUMPDEST POP POP PUSH2 0x280C JUMP JUMPDEST PUSH2 0x1971 DUP7 DUP7 DUP5 PUSH2 0x255E JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x2C6C JUMPI PUSH2 0x2C56 DUP4 PUSH2 0x2C48 PUSH1 0x1 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH2 0x2C6F JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x2DA3 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 TIMESTAMP PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH1 0x1 DUP1 DUP10 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP3 SSTORE SWAP1 DUP6 MSTORE SWAP3 SWAP1 SWAP4 KECCAK256 SWAP1 SWAP2 ADD DUP7 SWAP1 SSTORE PUSH1 0xB DUP9 ADD SLOAD SWAP1 MLOAD PUSH4 0x399A2AB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xE668AAC SWAP2 PUSH2 0x2CDB SWAP2 DUP9 SWAP2 PUSH1 0x4 ADD PUSH2 0x3FA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2D36 PUSH32 0x5830F0E95C01712D916C34D9E2FA42E9F749B325B67BCE7382D70BB99C623500 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP2 DUP11 SWAP1 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP2 MLOAD SWAP3 SWAP4 POP DUP8 SWAP3 PUSH32 0x181C8615E49DC4EAED218E1D225E4A34A0FB364FC70601A191573DAA19D57EDA SWAP3 PUSH2 0x2D95 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 SWAP2 DUP3 ADD SWAP2 SWAP1 PUSH2 0x3FD5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x2E23 JUMP JUMPDEST DUP2 PUSH2 0x2E23 JUMPI PUSH1 0xB DUP7 ADD SLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH4 0x399A2AB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE668AAC SWAP2 PUSH2 0x2DF0 SWAP2 DUP9 SWAP2 PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3FA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E1E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x2E42 JUMPI POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2E55 JUMPI PUSH2 0x2E55 DUP6 PUSH1 0x1 PUSH2 0x1782 JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE POP PUSH1 0x4 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x17 DUP7 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2EA0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BD63419 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2ECF JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EF1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3126F1AB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST DUP3 ISZERO DUP1 PUSH2 0x2EFC JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2F1A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2C578E45 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xF DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH3 0x491FCF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH3 0x923F9E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F87 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST ISZERO DUP1 PUSH2 0x3005 JUMPI POP PUSH1 0xF DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x1975E309 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x32EBC612 SWAP1 PUSH2 0x2FC2 SWAP1 CALLER SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3D5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3003 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x3023 JUMPI PUSH1 0x40 MLOAD PUSH4 0x26A2091B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xF DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x34045917 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD011645C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x306F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3093 SWAP2 SWAP1 PUSH2 0x3C9E JUMP JUMPDEST PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SUB PUSH2 0x30C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E8E471B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x30E9 DUP10 DUP8 PUSH2 0x3525 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 GT PUSH2 0x30FB JUMPI PUSH1 0x0 PUSH2 0x3105 JUMP JUMPDEST PUSH2 0x3105 DUP3 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 GT ISZERO PUSH2 0x312E JUMPI DUP7 DUP2 DUP8 PUSH1 0x40 MLOAD PUSH4 0x99EE8A3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x409A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x313B DUP12 DUP10 DUP12 PUSH2 0x31CB JUMP JUMPDEST PUSH1 0x15 DUP13 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x314D DUP9 DUP4 PUSH2 0x3D77 JUMP JUMPDEST GT ISZERO PUSH2 0x3176 JUMPI DUP8 DUP10 DUP13 PUSH1 0x15 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x87B212FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x409A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3182 DUP13 DUP12 PUSH2 0x2535 JUMP JUMPDEST PUSH1 0x16 DUP14 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x3194 DUP10 DUP4 PUSH2 0x3D77 JUMP JUMPDEST GT ISZERO PUSH2 0x31BD JUMPI DUP10 DUP2 DUP14 PUSH1 0x16 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x3430A843 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x409A JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x10 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SUB PUSH2 0x31ED JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2C6F JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x11 DUP7 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x323C JUMPI POP DUP4 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3227 JUMPI PUSH2 0x3227 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x324C JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x2C6F JUMP JUMPDEST DUP2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x325E JUMPI PUSH2 0x325E PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3320 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x11 DUP8 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x32A7 DUP5 DUP5 PUSH2 0x3D77 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x10 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 DUP2 LT PUSH2 0x32C9 JUMPI PUSH2 0x32C9 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP2 DUP8 PUSH1 0x10 ADD PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3305 JUMPI PUSH2 0x3305 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP POP PUSH2 0x33F0 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x10 DUP8 ADD PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP10 DUP2 MSTORE DUP1 DUP5 ADD DUP10 DUP2 MSTORE SWAP3 DUP2 ADD DUP8 DUP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE DUP5 DUP10 MSTORE DUP7 DUP10 KECCAK256 SWAP4 MLOAD PUSH1 0x3 SWAP1 SWAP3 MUL SWAP1 SWAP4 ADD SWAP1 DUP2 SSTORE SWAP4 MLOAD DUP5 DUP4 ADD SSTORE MLOAD PUSH1 0x2 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP4 DUP10 SWAP1 MSTORE SWAP2 SWAP1 MSTORE SWAP1 SLOAD PUSH2 0x3389 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x11 DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x13 DUP10 ADD DUP2 MSTORE SWAP2 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE DUP3 DUP5 MSTORE SWAP4 DUP4 KECCAK256 ADD DUP9 SWAP1 SSTORE SWAP1 DUP7 SWAP1 MSTORE SLOAD PUSH2 0x33D3 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x14 DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x342B JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x30 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x5E5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x348E JUMPI PUSH1 0x0 PUSH2 0x344A DUP5 PUSH2 0x3584 JUMP JUMPDEST PUSH2 0x3454 SWAP1 DUP6 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 SWAP2 POP DUP2 ADD SLOAD PUSH6 0xFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP8 AND LT ISZERO PUSH2 0x347E JUMPI DUP1 SWAP2 POP PUSH2 0x348C JUMP JUMPDEST PUSH2 0x3489 DUP2 PUSH1 0x1 PUSH2 0x3D77 JUMP JUMPDEST SWAP3 POP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x349C DUP8 DUP8 DUP6 DUP6 PUSH2 0x366C JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x34C9 JUMPI PUSH2 0x34B3 DUP8 PUSH2 0x2C48 PUSH1 0x1 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB DUP3 GT ISZERO PUSH2 0x342B JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0xD0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3518 DUP6 DUP6 DUP6 PUSH2 0x36D1 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x10 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x1971 JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3553 JUMPI PUSH2 0x3553 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0x3570 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x357C DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3538 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SUB PUSH2 0x3596 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x35A3 DUP5 PUSH2 0x384B JUMP JUMPDEST SWAP1 SHR PUSH1 0x1 SWAP1 SHL SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x35BC JUMPI PUSH2 0x35BC PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x35D4 JUMPI PUSH2 0x35D4 PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x35EC JUMPI PUSH2 0x35EC PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x3604 JUMPI PUSH2 0x3604 PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x361C JUMPI PUSH2 0x361C PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x3634 JUMPI PUSH2 0x3634 PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x364C JUMPI PUSH2 0x364C PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH2 0x2C6F DUP2 DUP3 DUP6 DUP2 PUSH2 0x3666 JUMPI PUSH2 0x3666 PUSH2 0x40B0 JUMP JUMPDEST DIV PUSH2 0x38DF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x36C6 JUMPI PUSH1 0x0 PUSH2 0x3683 DUP5 DUP5 PUSH2 0x38F5 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH6 0xFFFFFFFFFFFF DUP7 AND SWAP1 DUP3 ADD SLOAD PUSH6 0xFFFFFFFFFFFF AND GT ISZERO PUSH2 0x36B2 JUMPI DUP1 SWAP3 POP PUSH2 0x36C0 JUMP JUMPDEST PUSH2 0x36BD DUP2 PUSH1 0x1 PUSH2 0x3D77 JUMP JUMPDEST SWAP4 POP JUMPDEST POP PUSH2 0x366F JUMP JUMPDEST POP DUP1 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 ISZERO PUSH2 0x37F0 JUMPI PUSH1 0x0 PUSH2 0x36EF DUP8 PUSH2 0x2C48 PUSH1 0x1 DUP6 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP8 AND LT ISZERO PUSH2 0x3743 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2520601D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP9 AND SWAP2 AND SUB PUSH2 0x378F JUMPI DUP5 PUSH2 0x3766 DUP9 PUSH2 0x2C48 PUSH1 0x1 DUP7 PUSH2 0x3DA3 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x30 SHL MUL PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x37E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP12 SLOAD PUSH1 0x1 DUP2 ADD DUP14 SSTORE PUSH1 0x0 DUP14 DUP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 MLOAD SWAP2 MLOAD SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x30 SHL MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x20 ADD MLOAD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x351D SWAP1 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB DUP1 DUP6 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP9 SLOAD PUSH1 0x1 DUP2 ADD DUP11 SSTORE PUSH1 0x0 DUP11 DUP2 MSTORE SWAP2 DUP3 KECCAK256 SWAP6 MLOAD SWAP3 MLOAD SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x30 SHL MUL SWAP2 SWAP1 SWAP4 AND OR SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 POP DUP2 PUSH2 0x351D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x80 DUP4 SWAP1 SHR ISZERO PUSH2 0x3860 JUMPI PUSH1 0x80 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x40 DUP4 SWAP1 SHR ISZERO PUSH2 0x3872 JUMPI PUSH1 0x40 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x20 DUP4 SWAP1 SHR ISZERO PUSH2 0x3884 JUMPI PUSH1 0x20 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x10 DUP4 SWAP1 SHR ISZERO PUSH2 0x3896 JUMPI PUSH1 0x10 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x8 DUP4 SWAP1 SHR ISZERO PUSH2 0x38A8 JUMPI PUSH1 0x8 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x4 DUP4 SWAP1 SHR ISZERO PUSH2 0x38BA JUMPI PUSH1 0x4 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x2 DUP4 SWAP1 SHR ISZERO PUSH2 0x38CC JUMPI PUSH1 0x2 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x1 DUP4 SWAP1 SHR ISZERO PUSH2 0x661 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x38EE JUMPI DUP2 PUSH2 0x2C6F JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3904 PUSH1 0x2 DUP5 DUP5 XOR PUSH2 0x40C6 JUMP JUMPDEST PUSH2 0x2C6F SWAP1 DUP5 DUP5 AND PUSH2 0x3D77 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x394D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x395F DUP2 PUSH2 0x3929 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x397C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x39CE JUMPI DUP2 MLOAD DUP1 MLOAD DUP6 MSTORE DUP7 DUP2 ADD MLOAD DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x399F JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A1C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x39F7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C6F DUP2 PUSH2 0x3929 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3A72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x3A92 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3AA2 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH2 0x3AB2 DUP2 PUSH2 0x3A45 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A1C JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3ADC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3B0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x395F DUP2 PUSH2 0x3A45 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3B30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3B58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x3B78 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3B88 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH2 0x3AB2 DUP2 PUSH2 0x3929 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C6F DUP2 PUSH2 0x3A45 JUMP JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C6F DUP2 PUSH2 0x3BB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C6F DUP2 PUSH2 0x3BE1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3C2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3C44 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3C54 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x3C64 DUP2 PUSH2 0x3A45 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3CB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2C6F DUP2 PUSH2 0x3BB5 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3CF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2C6F DUP2 PUSH2 0x3929 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2C6F DUP2 PUSH2 0x3BE1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3D49 JUMPI PUSH2 0x3D49 PUSH2 0x3D21 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x661 JUMPI PUSH2 0x661 PUSH2 0x3D21 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x661 JUMPI PUSH2 0x661 PUSH2 0x3D21 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3DF1 JUMPI PUSH2 0x3DF1 PUSH2 0x3CBB JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3E1F JUMPI PUSH2 0x3E1F PUSH2 0x3CBB JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3E51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E77 JUMPI PUSH2 0x3E77 PUSH2 0x3CBB JUMP JUMPDEST PUSH2 0x3E85 DUP5 DUP3 PUSH1 0x5 SHL ADD PUSH2 0x3DF7 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0xA0 SWAP2 DUP3 MUL DUP5 ADD DUP6 ADD SWAP2 DUP6 DUP3 ADD SWAP2 SWAP1 DUP10 DUP5 GT ISZERO PUSH2 0x3EA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP7 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x3F23 JUMPI DUP1 DUP7 DUP12 SUB SLT ISZERO PUSH2 0x3EC1 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3EC9 PUSH2 0x3DCF JUMP JUMPDEST DUP7 MLOAD DUP2 MSTORE DUP8 DUP8 ADD MLOAD PUSH2 0x3EDA DUP2 PUSH2 0x3BB5 JUMP JUMPDEST DUP2 DUP10 ADD MSTORE PUSH1 0x40 DUP8 DUP2 ADD MLOAD DUP8 DUP2 AND DUP2 EQ PUSH2 0x3EF3 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP8 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP9 ADD MLOAD PUSH2 0x3F10 DUP2 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP4 MSTORE SWAP5 DUP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 PUSH2 0x3EA9 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3F65 JUMPI PUSH2 0x3F65 PUSH2 0x3D21 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x4 DUP2 LT PUSH2 0x2C6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 DUP2 ADD PUSH1 0x4 DUP4 LT PUSH2 0x3FC8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x60 DUP2 DUP5 ADD MSTORE PUSH1 0x0 DUP6 SLOAD DUP2 PUSH1 0x1 DUP3 DUP2 SHR SWAP2 POP DUP1 DUP4 AND DUP1 PUSH2 0x4005 JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST DUP6 DUP4 LT DUP2 SUB PUSH2 0x4022 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP6 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 REVERT JUMPDEST PUSH1 0x60 DUP9 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP9 ADD DUP2 DUP1 ISZERO PUSH2 0x4041 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4057 JUMPI PUSH2 0x4082 JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP3 MSTORE DUP5 ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD SWAP7 POP PUSH2 0x4082 JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x407C JUMPI DUP2 SLOAD DUP5 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP10 ADD PUSH2 0x4063 JUMP JUMPDEST DUP4 ADD SWAP8 POP POP JUMPDEST POP POP POP POP DUP7 ISZERO ISZERO PUSH1 0x40 DUP8 ADD MSTORE POP SWAP1 SWAP3 POP PUSH2 0x36C9 SWAP2 POP POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x40E3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID CODECOPY 0xED CALLDATALOAD DUP13 0xA6 JUMP SWAP10 INVALID 0xE4 ADDMOD EXTCODESIZE 0xEB DUP5 RETURN 0xD9 SHR 0xE2 KECCAK256 SHL 0xB0 0xC8 SWAP9 MSIZE BALANCE PUSH32 0xC5BE02231609ED1193CED031B3229DA69FAB9691642274E1EA2625DFCE996713 0x5E PUSH14 0x5E6029D22075A2C0F7478DC6B5E0 0x1E BALANCE PUSH11 0x7FC6B72D32D90CA051D89 DUP12 0x5D NOT DUP4 STOP 0xD1 0xA7 0xC0 CALLDATASIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 SELFBALANCE 0x2B PUSH19 0x6DD15F96C27ABB83DB70CEA59EB40259FB2C9 ADDRESS LT 0xF9 PUSH12 0xF95812C4E164736F6C634300 ADDMOD EQ STOP CALLER ","sourceMap":"1998:41838:44:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1998:41838:44;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAdministrationStorage_23069":{"entryPoint":null,"id":23069,"parameterSlots":0,"returnSlots":1},"@_getAppsStorageStorage_23061":{"entryPoint":9010,"id":23061,"parameterSlots":0,"returnSlots":1},"@_getEndorsementStorage_23045":{"entryPoint":8974,"id":23045,"parameterSlots":0,"returnSlots":1},"@_getNodePointsForAppInternal_22381":{"entryPoint":12747,"id":22381,"parameterSlots":3,"returnSlots":1},"@_getNodeUsedPoints_22322":{"entryPoint":13605,"id":22322,"parameterSlots":2,"returnSlots":1},"@_getScore_22661":{"entryPoint":9525,"id":22661,"parameterSlots":2,"returnSlots":1},"@_getVoteEligibilityStorage_23037":{"entryPoint":null,"id":23037,"parameterSlots":0,"returnSlots":1},"@_insert_5780":{"entryPoint":14033,"id":5780,"parameterSlots":3,"returnSlots":2},"@_removeEndorsement_22522":{"entryPoint":9046,"id":22522,"parameterSlots":4,"returnSlots":0},"@_setScore_22689":{"entryPoint":9566,"id":22689,"parameterSlots":3,"returnSlots":0},"@_unsafeAccess_5899":{"entryPoint":null,"id":5899,"parameterSlots":2,"returnSlots":1},"@_updateEndorsement_21279":{"entryPoint":12923,"id":21279,"parameterSlots":6,"returnSlots":0},"@_updateStatusIfThresholdMet_22640":{"entryPoint":11382,"id":22640,"parameterSlots":6,"returnSlots":0},"@_updateStatusIfThresholdNotMetWithVote_22802":{"entryPoint":9617,"id":22802,"parameterSlots":5,"returnSlots":1},"@_upperBinaryLookup_5832":{"entryPoint":13932,"id":5832,"parameterSlots":4,"returnSlots":1},"@_validateAndCleanEndorsements_22092":{"entryPoint":10233,"id":22092,"parameterSlots":2,"returnSlots":1},"@_validateEndorsement_21168":{"entryPoint":11898,"id":21168,"parameterSlots":6,"returnSlots":0},"@average_2268":{"entryPoint":14581,"id":2268,"parameterSlots":2,"returnSlots":1},"@canUnendorse_20482":{"entryPoint":6522,"id":20482,"parameterSlots":2,"returnSlots":1},"@checkEndorsement_21839":{"entryPoint":4799,"id":21839,"parameterSlots":2,"returnSlots":1},"@cooldownPeriod_19987":{"entryPoint":1434,"id":19987,"parameterSlots":0,"returnSlots":1},"@endorseApp_20994":{"entryPoint":5501,"id":20994,"parameterSlots":6,"returnSlots":0},"@endorsementScoreThreshold_19999":{"entryPoint":8592,"id":19999,"parameterSlots":0,"returnSlots":1},"@endorsementsPaused_20072":{"entryPoint":6255,"id":20072,"parameterSlots":0,"returnSlots":1},"@getEndorserNodes_19859":{"entryPoint":4108,"id":19859,"parameterSlots":1,"returnSlots":1},"@getEndorsers_19842":{"entryPoint":2228,"id":19842,"parameterSlots":1,"returnSlots":1},"@getNodeActiveEndorsements_20102":{"entryPoint":2075,"id":20102,"parameterSlots":1,"returnSlots":1},"@getNodeAvailablePoints_20296":{"entryPoint":7490,"id":20296,"parameterSlots":1,"returnSlots":1},"@getNodeEndorsementScore_19947":{"entryPoint":1919,"id":19947,"parameterSlots":1,"returnSlots":1},"@getNodePointsForApp_20168":{"entryPoint":5178,"id":20168,"parameterSlots":2,"returnSlots":1},"@getNodePointsInfo_20408":{"entryPoint":4224,"id":20408,"parameterSlots":1,"returnSlots":1},"@getNodeUsedPoints_20221":{"entryPoint":6943,"id":20221,"parameterSlots":1,"returnSlots":1},"@getScoreAtTimepoint_19741":{"entryPoint":5917,"id":19741,"parameterSlots":2,"returnSlots":1},"@getScore_19695":{"entryPoint":5371,"id":19695,"parameterSlots":1,"returnSlots":1},"@getUsersEndorsementScore_19916":{"entryPoint":6277,"id":19916,"parameterSlots":1,"returnSlots":1},"@gracePeriod_19975":{"entryPoint":6074,"id":19975,"parameterSlots":0,"returnSlots":1},"@isAppUnendorsed_20023":{"entryPoint":1584,"id":20023,"parameterSlots":2,"returnSlots":1},"@latest_5608":{"entryPoint":11310,"id":5608,"parameterSlots":1,"returnSlots":1},"@log2_2750":{"entryPoint":14411,"id":2750,"parameterSlots":1,"returnSlots":1},"@maxPointsPerApp_20060":{"entryPoint":4089,"id":20060,"parameterSlots":0,"returnSlots":1},"@maxPointsPerNodePerApp_20048":{"entryPoint":2751,"id":20048,"parameterSlots":0,"returnSlots":1},"@migrationCompleted_20084":{"entryPoint":1639,"id":20084,"parameterSlots":0,"returnSlots":1},"@min_2245":{"entryPoint":14559,"id":2245,"parameterSlots":2,"returnSlots":1},"@nodeLevelEndorsementScore_19963":{"entryPoint":6217,"id":19963,"parameterSlots":1,"returnSlots":1},"@push_5411":{"entryPoint":13578,"id":5411,"parameterSlots":3,"returnSlots":2},"@removeNodeEndorsement_21671":{"entryPoint":7051,"id":21671,"parameterSlots":5,"returnSlots":1},"@removeXAppSubmission_21719":{"entryPoint":1453,"id":21719,"parameterSlots":1,"returnSlots":0},"@seedEndorsement_22276":{"entryPoint":7773,"id":22276,"parameterSlots":3,"returnSlots":0},"@setCooldownPeriod_20717":{"entryPoint":5422,"id":20717,"parameterSlots":1,"returnSlots":0},"@setEndorsementStatus_20776":{"entryPoint":6018,"id":20776,"parameterSlots":2,"returnSlots":0},"@setEndorsementsPaused_20870":{"entryPoint":8894,"id":20870,"parameterSlots":1,"returnSlots":0},"@setGracePeriod_20689":{"entryPoint":6101,"id":20689,"parameterSlots":1,"returnSlots":0},"@setMaxPointsPerApp_20844":{"entryPoint":3966,"id":20844,"parameterSlots":1,"returnSlots":0},"@setMaxPointsPerNodePerApp_20804":{"entryPoint":5099,"id":20804,"parameterSlots":1,"returnSlots":0},"@setMigrationCompleted_20885":{"entryPoint":2714,"id":20885,"parameterSlots":1,"returnSlots":0},"@sqrt_2583":{"entryPoint":13700,"id":2583,"parameterSlots":1,"returnSlots":1},"@toUint208_3289":{"entryPoint":13526,"id":3289,"parameterSlots":1,"returnSlots":1},"@toUint48_3849":{"entryPoint":13304,"id":3849,"parameterSlots":1,"returnSlots":1},"@unendorseApp_21513":{"entryPoint":2893,"id":21513,"parameterSlots":6,"returnSlots":1},"@unendorsedAppIds_20036":{"entryPoint":6852,"id":20036,"parameterSlots":0,"returnSlots":1},"@updateEndorsementScoreThreshold_20757":{"entryPoint":2770,"id":20757,"parameterSlots":1,"returnSlots":0},"@updateNodeEndorsementScores_20566":{"entryPoint":1666,"id":20566,"parameterSlots":1,"returnSlots":0},"@updateUnendorsedApps_20661":{"entryPoint":8611,"id":20661,"parameterSlots":2,"returnSlots":0},"@upperLookupRecent_5578":{"entryPoint":13359,"id":5578,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":15350,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":15620,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr_fromMemory":{"entryPoint":15911,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":14888,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":15591,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":14608,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_bool":{"entryPoint":14650,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_uint256t_boolt_boolt_uint48":{"entryPoint":15379,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_bytes32t_uint256t_uint256":{"entryPoint":15474,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_uint256t_uint256t_boolt_boolt_bool":{"entryPoint":15167,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_bytes32t_uint256t_uint256t_boolt_boolt_uint48":{"entryPoint":14937,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_bytes32t_uint48":{"entryPoint":15096,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_enum$_APP_SECURITY_$19455_fromMemory":{"entryPoint":16236,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_NodeStrengthScores_$19503_calldata_ptr":{"entryPoint":14698,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":15754,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_bytes32":{"entryPoint":15133,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint48":{"entryPoint":15256,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8":{"entryPoint":15300,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":15518,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_string_storage_t_bool__to_t_address_t_string_memory_ptr_t_bool__fromStack_reversed":{"entryPoint":16341,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":15710,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_library_reversed":{"entryPoint":14811,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_Endorsement_$22865_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Endorsement_$22865_memory_ptr_$dyn_memory_ptr__fromStack_library_reversed":{"entryPoint":14722,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_library_reversed":{"entryPoint":15040,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_enum$_APP_SECURITY_$19455__to_t_bytes32_t_uint8__fromStack_reversed":{"entryPoint":16291,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint256_t_uint256__to_t_bytes32_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_rational_208_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_struct$_NodePointsInfo_$22875_memory_ptr__to_t_struct$_NodePointsInfo_$22875_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_NodeStrengthScores_$19503_calldata_ptr__to_t_struct$_NodeStrengthScores_$19503_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_bytes32__to_t_uint256_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_bytes32_t_uint256__to_t_uint256_t_bytes32_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":15696,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":16538,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint48_t_uint48__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":15798,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint48_t_uint48__to_t_uint48_t_uint48__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":15863,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_3235":{"entryPoint":15823,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_array_struct_Endorsement_dyn_library":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":15735,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint48":{"entryPoint":16198,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":16582,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":15779,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":15671,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":15649,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":16560,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":16269,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":16176,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":15569,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":15547,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":15329,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":14633,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint48":{"entryPoint":14917,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":15285,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:21130:46","statements":[{"nodeType":"YulBlock","src":"6:3:46","statements":[]},{"body":{"nodeType":"YulBlock","src":"123:76:46","statements":[{"nodeType":"YulAssignment","src":"133:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"145:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"156:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"141:3:46"},"nodeType":"YulFunctionCall","src":"141:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"133:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"175:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"186:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"168:6:46"},"nodeType":"YulFunctionCall","src":"168:25:46"},"nodeType":"YulExpressionStatement","src":"168:25:46"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"92:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"103:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"114:4:46","type":""}],"src":"14:185:46"},{"body":{"nodeType":"YulBlock","src":"274:110:46","statements":[{"body":{"nodeType":"YulBlock","src":"320:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"329:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"332:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"322:6:46"},"nodeType":"YulFunctionCall","src":"322:12:46"},"nodeType":"YulExpressionStatement","src":"322:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"295:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"304:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"291:3:46"},"nodeType":"YulFunctionCall","src":"291:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"316:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"287:3:46"},"nodeType":"YulFunctionCall","src":"287:32:46"},"nodeType":"YulIf","src":"284:52:46"},{"nodeType":"YulAssignment","src":"345:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"368:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"355:12:46"},"nodeType":"YulFunctionCall","src":"355:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"345:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"240:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"251:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"263:6:46","type":""}],"src":"204:180:46"},{"body":{"nodeType":"YulBlock","src":"431:76:46","statements":[{"body":{"nodeType":"YulBlock","src":"485:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"494:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"497:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"487:6:46"},"nodeType":"YulFunctionCall","src":"487:12:46"},"nodeType":"YulExpressionStatement","src":"487:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"454:5:46"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"475:5:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"468:6:46"},"nodeType":"YulFunctionCall","src":"468:13:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"461:6:46"},"nodeType":"YulFunctionCall","src":"461:21:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"451:2:46"},"nodeType":"YulFunctionCall","src":"451:32:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"444:6:46"},"nodeType":"YulFunctionCall","src":"444:40:46"},"nodeType":"YulIf","src":"441:60:46"}]},"name":"validator_revert_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"420:5:46","type":""}],"src":"389:118:46"},{"body":{"nodeType":"YulBlock","src":"596:225:46","statements":[{"body":{"nodeType":"YulBlock","src":"642:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"651:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"654:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"644:6:46"},"nodeType":"YulFunctionCall","src":"644:12:46"},"nodeType":"YulExpressionStatement","src":"644:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"617:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"626:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"613:3:46"},"nodeType":"YulFunctionCall","src":"613:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"638:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"609:3:46"},"nodeType":"YulFunctionCall","src":"609:32:46"},"nodeType":"YulIf","src":"606:52:46"},{"nodeType":"YulAssignment","src":"667:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"690:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"677:12:46"},"nodeType":"YulFunctionCall","src":"677:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"667:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"709:45:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"739:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"750:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"735:3:46"},"nodeType":"YulFunctionCall","src":"735:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"722:12:46"},"nodeType":"YulFunctionCall","src":"722:32:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"713:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"785:5:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"763:21:46"},"nodeType":"YulFunctionCall","src":"763:28:46"},"nodeType":"YulExpressionStatement","src":"763:28:46"},{"nodeType":"YulAssignment","src":"800:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"810:5:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"800:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"554:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"565:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"577:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"585:6:46","type":""}],"src":"512:309:46"},{"body":{"nodeType":"YulBlock","src":"867:50:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"884:3:46"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"903:5:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"896:6:46"},"nodeType":"YulFunctionCall","src":"896:13:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"889:6:46"},"nodeType":"YulFunctionCall","src":"889:21:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"877:6:46"},"nodeType":"YulFunctionCall","src":"877:34:46"},"nodeType":"YulExpressionStatement","src":"877:34:46"}]},"name":"abi_encode_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"851:5:46","type":""},{"name":"pos","nodeType":"YulTypedName","src":"858:3:46","type":""}],"src":"826:91:46"},{"body":{"nodeType":"YulBlock","src":"1025:92:46","statements":[{"nodeType":"YulAssignment","src":"1035:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1047:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"1058:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1043:3:46"},"nodeType":"YulFunctionCall","src":"1043:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1035:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1077:9:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1102:6:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1095:6:46"},"nodeType":"YulFunctionCall","src":"1095:14:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1088:6:46"},"nodeType":"YulFunctionCall","src":"1088:22:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1070:6:46"},"nodeType":"YulFunctionCall","src":"1070:41:46"},"nodeType":"YulExpressionStatement","src":"1070:41:46"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"994:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1005:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1016:4:46","type":""}],"src":"922:195:46"},{"body":{"nodeType":"YulBlock","src":"1231:97:46","statements":[{"body":{"nodeType":"YulBlock","src":"1278:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1287:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1280:6:46"},"nodeType":"YulFunctionCall","src":"1280:12:46"},"nodeType":"YulExpressionStatement","src":"1280:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1252:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"1261:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1248:3:46"},"nodeType":"YulFunctionCall","src":"1248:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"1273:3:46","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1244:3:46"},"nodeType":"YulFunctionCall","src":"1244:33:46"},"nodeType":"YulIf","src":"1241:53:46"},{"nodeType":"YulAssignment","src":"1303:19:46","value":{"name":"headStart","nodeType":"YulIdentifier","src":"1313:9:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1303:6:46"}]}]},"name":"abi_decode_tuple_t_struct$_NodeStrengthScores_$19503_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1197:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1208:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1220:6:46","type":""}],"src":"1122:206:46"},{"body":{"nodeType":"YulBlock","src":"1403:110:46","statements":[{"body":{"nodeType":"YulBlock","src":"1449:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:46"},"nodeType":"YulFunctionCall","src":"1451:12:46"},"nodeType":"YulExpressionStatement","src":"1451:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1424:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"1433:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1420:3:46"},"nodeType":"YulFunctionCall","src":"1420:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"1445:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1416:3:46"},"nodeType":"YulFunctionCall","src":"1416:32:46"},"nodeType":"YulIf","src":"1413:52:46"},{"nodeType":"YulAssignment","src":"1474:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1497:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1484:12:46"},"nodeType":"YulFunctionCall","src":"1484:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1474:6:46"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1369:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1380:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1392:6:46","type":""}],"src":"1333:180:46"},{"body":{"nodeType":"YulBlock","src":"1625:73:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1642:3:46"},{"name":"length","nodeType":"YulIdentifier","src":"1647:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1635:6:46"},"nodeType":"YulFunctionCall","src":"1635:19:46"},"nodeType":"YulExpressionStatement","src":"1635:19:46"},{"nodeType":"YulAssignment","src":"1663:29:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1682:3:46"},{"kind":"number","nodeType":"YulLiteral","src":"1687:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1678:3:46"},"nodeType":"YulFunctionCall","src":"1678:14:46"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1663:11:46"}]}]},"name":"array_storeLengthForEncoding_array_struct_Endorsement_dyn_library","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1593:3:46","type":""},{"name":"length","nodeType":"YulTypedName","src":"1598:6:46","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1609:11:46","type":""}],"src":"1518:180:46"},{"body":{"nodeType":"YulBlock","src":"1922:642:46","statements":[{"nodeType":"YulVariableDeclaration","src":"1932:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"1942:2:46","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1936:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1953:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1971:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"1982:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1967:3:46"},"nodeType":"YulFunctionCall","src":"1967:18:46"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"1957:6:46","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2001:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"2012:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1994:6:46"},"nodeType":"YulFunctionCall","src":"1994:21:46"},"nodeType":"YulExpressionStatement","src":"1994:21:46"},{"nodeType":"YulVariableDeclaration","src":"2024:17:46","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"2035:6:46"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"2028:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2050:27:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2070:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2064:5:46"},"nodeType":"YulFunctionCall","src":"2064:13:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2054:6:46","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"2093:6:46"},{"name":"length","nodeType":"YulIdentifier","src":"2101:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2086:6:46"},"nodeType":"YulFunctionCall","src":"2086:22:46"},"nodeType":"YulExpressionStatement","src":"2086:22:46"},{"nodeType":"YulVariableDeclaration","src":"2117:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"2127:2:46","type":"","value":"64"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2121:2:46","type":""}]},{"nodeType":"YulAssignment","src":"2138:25:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2149:9:46"},{"name":"_2","nodeType":"YulIdentifier","src":"2160:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2145:3:46"},"nodeType":"YulFunctionCall","src":"2145:18:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2138:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"2172:29:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2190:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"2198:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2186:3:46"},"nodeType":"YulFunctionCall","src":"2186:15:46"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2176:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2210:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"2219:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2214:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"2278:260:46","statements":[{"nodeType":"YulVariableDeclaration","src":"2292:23:46","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2308:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2302:5:46"},"nodeType":"YulFunctionCall","src":"2302:13:46"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2296:2:46","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2335:3:46"},{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2346:2:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2340:5:46"},"nodeType":"YulFunctionCall","src":"2340:9:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2328:6:46"},"nodeType":"YulFunctionCall","src":"2328:22:46"},"nodeType":"YulExpressionStatement","src":"2328:22:46"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2374:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"2379:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2370:3:46"},"nodeType":"YulFunctionCall","src":"2370:12:46"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2394:2:46"},{"name":"_1","nodeType":"YulIdentifier","src":"2398:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2390:3:46"},"nodeType":"YulFunctionCall","src":"2390:11:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2384:5:46"},"nodeType":"YulFunctionCall","src":"2384:18:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2363:6:46"},"nodeType":"YulFunctionCall","src":"2363:40:46"},"nodeType":"YulExpressionStatement","src":"2363:40:46"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2427:3:46"},{"name":"_2","nodeType":"YulIdentifier","src":"2432:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2423:3:46"},"nodeType":"YulFunctionCall","src":"2423:12:46"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2447:2:46"},{"name":"_2","nodeType":"YulIdentifier","src":"2451:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:46"},"nodeType":"YulFunctionCall","src":"2443:11:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2437:5:46"},"nodeType":"YulFunctionCall","src":"2437:18:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2416:6:46"},"nodeType":"YulFunctionCall","src":"2416:40:46"},"nodeType":"YulExpressionStatement","src":"2416:40:46"},{"nodeType":"YulAssignment","src":"2469:21:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2480:3:46"},{"kind":"number","nodeType":"YulLiteral","src":"2485:4:46","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2476:3:46"},"nodeType":"YulFunctionCall","src":"2476:14:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2469:3:46"}]},{"nodeType":"YulAssignment","src":"2503:25:46","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2517:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"2525:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2513:3:46"},"nodeType":"YulFunctionCall","src":"2513:15:46"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2503:6:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2240:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"2243:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2237:2:46"},"nodeType":"YulFunctionCall","src":"2237:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2251:18:46","statements":[{"nodeType":"YulAssignment","src":"2253:14:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2262:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"2265:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2258:3:46"},"nodeType":"YulFunctionCall","src":"2258:9:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2253:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"2233:3:46","statements":[]},"src":"2229:309:46"},{"nodeType":"YulAssignment","src":"2547:11:46","value":{"name":"pos","nodeType":"YulIdentifier","src":"2555:3:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2547:4:46"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_Endorsement_$22865_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Endorsement_$22865_memory_ptr_$dyn_memory_ptr__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1891:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1902:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1913:4:46","type":""}],"src":"1703:861:46"},{"body":{"nodeType":"YulBlock","src":"2728:507:46","statements":[{"nodeType":"YulVariableDeclaration","src":"2738:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"2748:2:46","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2742:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2759:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2777:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"2788:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2773:3:46"},"nodeType":"YulFunctionCall","src":"2773:18:46"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"2763:6:46","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2807:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"2818:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2800:6:46"},"nodeType":"YulFunctionCall","src":"2800:21:46"},"nodeType":"YulExpressionStatement","src":"2800:21:46"},{"nodeType":"YulVariableDeclaration","src":"2830:17:46","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"2841:6:46"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"2834:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2856:27:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2876:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2870:5:46"},"nodeType":"YulFunctionCall","src":"2870:13:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2860:6:46","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"2899:6:46"},{"name":"length","nodeType":"YulIdentifier","src":"2907:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2892:6:46"},"nodeType":"YulFunctionCall","src":"2892:22:46"},"nodeType":"YulExpressionStatement","src":"2892:22:46"},{"nodeType":"YulAssignment","src":"2923:25:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2934:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"2945:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2930:3:46"},"nodeType":"YulFunctionCall","src":"2930:18:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2923:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"2957:29:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2975:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"2983:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2971:3:46"},"nodeType":"YulFunctionCall","src":"2971:15:46"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2961:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2995:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"3004:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2999:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"3063:146:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3084:3:46"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3099:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3093:5:46"},"nodeType":"YulFunctionCall","src":"3093:13:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3116:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"3121:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3112:3:46"},"nodeType":"YulFunctionCall","src":"3112:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"3125:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3108:3:46"},"nodeType":"YulFunctionCall","src":"3108:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3089:3:46"},"nodeType":"YulFunctionCall","src":"3089:39:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3077:6:46"},"nodeType":"YulFunctionCall","src":"3077:52:46"},"nodeType":"YulExpressionStatement","src":"3077:52:46"},{"nodeType":"YulAssignment","src":"3142:19:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3153:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"3158:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3149:3:46"},"nodeType":"YulFunctionCall","src":"3149:12:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3142:3:46"}]},{"nodeType":"YulAssignment","src":"3174:25:46","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3188:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"3196:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3184:3:46"},"nodeType":"YulFunctionCall","src":"3184:15:46"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3174:6:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3025:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"3028:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3022:2:46"},"nodeType":"YulFunctionCall","src":"3022:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3036:18:46","statements":[{"nodeType":"YulAssignment","src":"3038:14:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3047:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"3050:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3043:3:46"},"nodeType":"YulFunctionCall","src":"3043:9:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3038:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"3018:3:46","statements":[]},"src":"3014:195:46"},{"nodeType":"YulAssignment","src":"3218:11:46","value":{"name":"pos","nodeType":"YulIdentifier","src":"3226:3:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3218:4:46"}]}]},"name":"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2697:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2708:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2719:4:46","type":""}],"src":"2569:666:46"},{"body":{"nodeType":"YulBlock","src":"3307:174:46","statements":[{"body":{"nodeType":"YulBlock","src":"3353:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3362:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3365:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3355:6:46"},"nodeType":"YulFunctionCall","src":"3355:12:46"},"nodeType":"YulExpressionStatement","src":"3355:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3328:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"3337:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3324:3:46"},"nodeType":"YulFunctionCall","src":"3324:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"3349:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3320:3:46"},"nodeType":"YulFunctionCall","src":"3320:32:46"},"nodeType":"YulIf","src":"3317:52:46"},{"nodeType":"YulVariableDeclaration","src":"3378:36:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3404:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3391:12:46"},"nodeType":"YulFunctionCall","src":"3391:23:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3382:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3445:5:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"3423:21:46"},"nodeType":"YulFunctionCall","src":"3423:28:46"},"nodeType":"YulExpressionStatement","src":"3423:28:46"},{"nodeType":"YulAssignment","src":"3460:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"3470:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3460:6:46"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3273:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3284:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3296:6:46","type":""}],"src":"3240:241:46"},{"body":{"nodeType":"YulBlock","src":"3530:81:46","statements":[{"body":{"nodeType":"YulBlock","src":"3589:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3598:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3601:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3591:6:46"},"nodeType":"YulFunctionCall","src":"3591:12:46"},"nodeType":"YulExpressionStatement","src":"3591:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3553:5:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3564:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"3571:14:46","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3560:3:46"},"nodeType":"YulFunctionCall","src":"3560:26:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3550:2:46"},"nodeType":"YulFunctionCall","src":"3550:37:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3543:6:46"},"nodeType":"YulFunctionCall","src":"3543:45:46"},"nodeType":"YulIf","src":"3540:65:46"}]},"name":"validator_revert_uint48","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3519:5:46","type":""}],"src":"3486:125:46"},{"body":{"nodeType":"YulBlock","src":"3764:574:46","statements":[{"body":{"nodeType":"YulBlock","src":"3811:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3820:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3823:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3813:6:46"},"nodeType":"YulFunctionCall","src":"3813:12:46"},"nodeType":"YulExpressionStatement","src":"3813:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3785:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"3794:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3781:3:46"},"nodeType":"YulFunctionCall","src":"3781:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"3806:3:46","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3777:3:46"},"nodeType":"YulFunctionCall","src":"3777:33:46"},"nodeType":"YulIf","src":"3774:53:46"},{"nodeType":"YulAssignment","src":"3836:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3859:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3846:12:46"},"nodeType":"YulFunctionCall","src":"3846:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3836:6:46"}]},{"nodeType":"YulAssignment","src":"3878:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3905:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3916:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3901:3:46"},"nodeType":"YulFunctionCall","src":"3901:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3888:12:46"},"nodeType":"YulFunctionCall","src":"3888:32:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3878:6:46"}]},{"nodeType":"YulAssignment","src":"3929:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3956:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"3967:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3952:3:46"},"nodeType":"YulFunctionCall","src":"3952:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3939:12:46"},"nodeType":"YulFunctionCall","src":"3939:32:46"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3929:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"3980:45:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4010:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4021:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4006:3:46"},"nodeType":"YulFunctionCall","src":"4006:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3993:12:46"},"nodeType":"YulFunctionCall","src":"3993:32:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3984:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4056:5:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"4034:21:46"},"nodeType":"YulFunctionCall","src":"4034:28:46"},"nodeType":"YulExpressionStatement","src":"4034:28:46"},{"nodeType":"YulAssignment","src":"4071:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"4081:5:46"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4071:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"4095:48:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4127:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4138:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4123:3:46"},"nodeType":"YulFunctionCall","src":"4123:19:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4110:12:46"},"nodeType":"YulFunctionCall","src":"4110:33:46"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4099:7:46","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"4174:7:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"4152:21:46"},"nodeType":"YulFunctionCall","src":"4152:30:46"},"nodeType":"YulExpressionStatement","src":"4152:30:46"},{"nodeType":"YulAssignment","src":"4191:17:46","value":{"name":"value_1","nodeType":"YulIdentifier","src":"4201:7:46"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"4191:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"4217:48:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4249:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4260:3:46","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4245:3:46"},"nodeType":"YulFunctionCall","src":"4245:19:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4232:12:46"},"nodeType":"YulFunctionCall","src":"4232:33:46"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"4221:7:46","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"4298:7:46"}],"functionName":{"name":"validator_revert_uint48","nodeType":"YulIdentifier","src":"4274:23:46"},"nodeType":"YulFunctionCall","src":"4274:32:46"},"nodeType":"YulExpressionStatement","src":"4274:32:46"},{"nodeType":"YulAssignment","src":"4315:17:46","value":{"name":"value_2","nodeType":"YulIdentifier","src":"4325:7:46"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"4315:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32t_uint256t_uint256t_boolt_boolt_uint48","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3690:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3701:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3713:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3721:6:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3729:6:46","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3737:6:46","type":""},{"name":"value4","nodeType":"YulTypedName","src":"3745:6:46","type":""},{"name":"value5","nodeType":"YulTypedName","src":"3753:6:46","type":""}],"src":"3616:722:46"},{"body":{"nodeType":"YulBlock","src":"4502:481:46","statements":[{"nodeType":"YulVariableDeclaration","src":"4512:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4522:2:46","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4516:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4533:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4551:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"4562:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4547:3:46"},"nodeType":"YulFunctionCall","src":"4547:18:46"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"4537:6:46","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4581:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"4592:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4574:6:46"},"nodeType":"YulFunctionCall","src":"4574:21:46"},"nodeType":"YulExpressionStatement","src":"4574:21:46"},{"nodeType":"YulVariableDeclaration","src":"4604:17:46","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"4615:6:46"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"4608:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4630:27:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4650:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4644:5:46"},"nodeType":"YulFunctionCall","src":"4644:13:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4634:6:46","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"4673:6:46"},{"name":"length","nodeType":"YulIdentifier","src":"4681:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4666:6:46"},"nodeType":"YulFunctionCall","src":"4666:22:46"},"nodeType":"YulExpressionStatement","src":"4666:22:46"},{"nodeType":"YulAssignment","src":"4697:25:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4708:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"4719:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4704:3:46"},"nodeType":"YulFunctionCall","src":"4704:18:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4697:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"4731:29:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4749:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"4757:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4745:3:46"},"nodeType":"YulFunctionCall","src":"4745:15:46"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4735:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4769:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"4778:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4773:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"4837:120:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4858:3:46"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4869:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4863:5:46"},"nodeType":"YulFunctionCall","src":"4863:13:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4851:6:46"},"nodeType":"YulFunctionCall","src":"4851:26:46"},"nodeType":"YulExpressionStatement","src":"4851:26:46"},{"nodeType":"YulAssignment","src":"4890:19:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4901:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"4906:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4897:3:46"},"nodeType":"YulFunctionCall","src":"4897:12:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4890:3:46"}]},{"nodeType":"YulAssignment","src":"4922:25:46","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4936:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"4944:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4932:3:46"},"nodeType":"YulFunctionCall","src":"4932:15:46"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4922:6:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4799:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"4802:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4796:2:46"},"nodeType":"YulFunctionCall","src":"4796:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4810:18:46","statements":[{"nodeType":"YulAssignment","src":"4812:14:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4821:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"4824:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4817:3:46"},"nodeType":"YulFunctionCall","src":"4817:9:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4812:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"4792:3:46","statements":[]},"src":"4788:169:46"},{"nodeType":"YulAssignment","src":"4966:11:46","value":{"name":"pos","nodeType":"YulIdentifier","src":"4974:3:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4966:4:46"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4471:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4482:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4493:4:46","type":""}],"src":"4343:640:46"},{"body":{"nodeType":"YulBlock","src":"5163:273:46","statements":[{"nodeType":"YulAssignment","src":"5173:27:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5185:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"5196:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5181:3:46"},"nodeType":"YulFunctionCall","src":"5181:19:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5173:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5216:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5233:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5227:5:46"},"nodeType":"YulFunctionCall","src":"5227:13:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5209:6:46"},"nodeType":"YulFunctionCall","src":"5209:32:46"},"nodeType":"YulExpressionStatement","src":"5209:32:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5261:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"5272:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5257:3:46"},"nodeType":"YulFunctionCall","src":"5257:20:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5289:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"5297:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5285:3:46"},"nodeType":"YulFunctionCall","src":"5285:17:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5279:5:46"},"nodeType":"YulFunctionCall","src":"5279:24:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5250:6:46"},"nodeType":"YulFunctionCall","src":"5250:54:46"},"nodeType":"YulExpressionStatement","src":"5250:54:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5324:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"5335:4:46","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5320:3:46"},"nodeType":"YulFunctionCall","src":"5320:20:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5352:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"5360:4:46","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5348:3:46"},"nodeType":"YulFunctionCall","src":"5348:17:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5342:5:46"},"nodeType":"YulFunctionCall","src":"5342:24:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5313:6:46"},"nodeType":"YulFunctionCall","src":"5313:54:46"},"nodeType":"YulExpressionStatement","src":"5313:54:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5387:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"5398:4:46","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5383:3:46"},"nodeType":"YulFunctionCall","src":"5383:20:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5415:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"5423:4:46","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5411:3:46"},"nodeType":"YulFunctionCall","src":"5411:17:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5405:5:46"},"nodeType":"YulFunctionCall","src":"5405:24:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5376:6:46"},"nodeType":"YulFunctionCall","src":"5376:54:46"},"nodeType":"YulExpressionStatement","src":"5376:54:46"}]},"name":"abi_encode_tuple_t_struct$_NodePointsInfo_$22875_memory_ptr__to_t_struct$_NodePointsInfo_$22875_memory_ptr__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5132:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5143:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5154:4:46","type":""}],"src":"4988:448:46"},{"body":{"nodeType":"YulBlock","src":"5527:227:46","statements":[{"body":{"nodeType":"YulBlock","src":"5573:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5582:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5585:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5575:6:46"},"nodeType":"YulFunctionCall","src":"5575:12:46"},"nodeType":"YulExpressionStatement","src":"5575:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5548:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"5557:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5544:3:46"},"nodeType":"YulFunctionCall","src":"5544:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"5569:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5540:3:46"},"nodeType":"YulFunctionCall","src":"5540:32:46"},"nodeType":"YulIf","src":"5537:52:46"},{"nodeType":"YulAssignment","src":"5598:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5621:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5608:12:46"},"nodeType":"YulFunctionCall","src":"5608:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5598:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"5640:45:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5670:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"5681:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5666:3:46"},"nodeType":"YulFunctionCall","src":"5666:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5653:12:46"},"nodeType":"YulFunctionCall","src":"5653:32:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5644:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5718:5:46"}],"functionName":{"name":"validator_revert_uint48","nodeType":"YulIdentifier","src":"5694:23:46"},"nodeType":"YulFunctionCall","src":"5694:30:46"},"nodeType":"YulExpressionStatement","src":"5694:30:46"},{"nodeType":"YulAssignment","src":"5733:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"5743:5:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5733:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32t_uint48","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5485:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5496:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5508:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5516:6:46","type":""}],"src":"5441:313:46"},{"body":{"nodeType":"YulBlock","src":"5846:161:46","statements":[{"body":{"nodeType":"YulBlock","src":"5892:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5901:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5904:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5894:6:46"},"nodeType":"YulFunctionCall","src":"5894:12:46"},"nodeType":"YulExpressionStatement","src":"5894:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5867:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"5876:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5863:3:46"},"nodeType":"YulFunctionCall","src":"5863:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"5888:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5859:3:46"},"nodeType":"YulFunctionCall","src":"5859:32:46"},"nodeType":"YulIf","src":"5856:52:46"},{"nodeType":"YulAssignment","src":"5917:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5940:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5927:12:46"},"nodeType":"YulFunctionCall","src":"5927:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5917:6:46"}]},{"nodeType":"YulAssignment","src":"5959:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5986:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"5997:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5982:3:46"},"nodeType":"YulFunctionCall","src":"5982:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5969:12:46"},"nodeType":"YulFunctionCall","src":"5969:32:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5959:6:46"}]}]},"name":"abi_decode_tuple_t_uint256t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5804:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5815:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5827:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5835:6:46","type":""}],"src":"5759:248:46"},{"body":{"nodeType":"YulBlock","src":"6158:572:46","statements":[{"body":{"nodeType":"YulBlock","src":"6205:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6214:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6217:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6207:6:46"},"nodeType":"YulFunctionCall","src":"6207:12:46"},"nodeType":"YulExpressionStatement","src":"6207:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6179:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"6188:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6175:3:46"},"nodeType":"YulFunctionCall","src":"6175:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"6200:3:46","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6171:3:46"},"nodeType":"YulFunctionCall","src":"6171:33:46"},"nodeType":"YulIf","src":"6168:53:46"},{"nodeType":"YulAssignment","src":"6230:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6253:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6240:12:46"},"nodeType":"YulFunctionCall","src":"6240:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6230:6:46"}]},{"nodeType":"YulAssignment","src":"6272:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6299:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6310:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6295:3:46"},"nodeType":"YulFunctionCall","src":"6295:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6282:12:46"},"nodeType":"YulFunctionCall","src":"6282:32:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6272:6:46"}]},{"nodeType":"YulAssignment","src":"6323:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6350:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6361:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6346:3:46"},"nodeType":"YulFunctionCall","src":"6346:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6333:12:46"},"nodeType":"YulFunctionCall","src":"6333:32:46"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6323:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"6374:45:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6404:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6415:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6400:3:46"},"nodeType":"YulFunctionCall","src":"6400:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6387:12:46"},"nodeType":"YulFunctionCall","src":"6387:32:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6378:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6450:5:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"6428:21:46"},"nodeType":"YulFunctionCall","src":"6428:28:46"},"nodeType":"YulExpressionStatement","src":"6428:28:46"},{"nodeType":"YulAssignment","src":"6465:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"6475:5:46"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"6465:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"6489:48:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6521:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6532:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6517:3:46"},"nodeType":"YulFunctionCall","src":"6517:19:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6504:12:46"},"nodeType":"YulFunctionCall","src":"6504:33:46"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"6493:7:46","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"6568:7:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"6546:21:46"},"nodeType":"YulFunctionCall","src":"6546:30:46"},"nodeType":"YulExpressionStatement","src":"6546:30:46"},{"nodeType":"YulAssignment","src":"6585:17:46","value":{"name":"value_1","nodeType":"YulIdentifier","src":"6595:7:46"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"6585:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"6611:48:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6643:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6654:3:46","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6639:3:46"},"nodeType":"YulFunctionCall","src":"6639:19:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6626:12:46"},"nodeType":"YulFunctionCall","src":"6626:33:46"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"6615:7:46","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"6690:7:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"6668:21:46"},"nodeType":"YulFunctionCall","src":"6668:30:46"},"nodeType":"YulExpressionStatement","src":"6668:30:46"},{"nodeType":"YulAssignment","src":"6707:17:46","value":{"name":"value_2","nodeType":"YulIdentifier","src":"6717:7:46"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"6707:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32t_uint256t_uint256t_boolt_boolt_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6084:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6095:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6107:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6115:6:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6123:6:46","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6131:6:46","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6139:6:46","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6147:6:46","type":""}],"src":"6012:718:46"},{"body":{"nodeType":"YulBlock","src":"6822:161:46","statements":[{"body":{"nodeType":"YulBlock","src":"6868:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6877:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6880:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6870:6:46"},"nodeType":"YulFunctionCall","src":"6870:12:46"},"nodeType":"YulExpressionStatement","src":"6870:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6843:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"6852:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6839:3:46"},"nodeType":"YulFunctionCall","src":"6839:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"6864:2:46","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6835:3:46"},"nodeType":"YulFunctionCall","src":"6835:32:46"},"nodeType":"YulIf","src":"6832:52:46"},{"nodeType":"YulAssignment","src":"6893:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6916:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6903:12:46"},"nodeType":"YulFunctionCall","src":"6903:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6893:6:46"}]},{"nodeType":"YulAssignment","src":"6935:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6962:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"6973:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6958:3:46"},"nodeType":"YulFunctionCall","src":"6958:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6945:12:46"},"nodeType":"YulFunctionCall","src":"6945:32:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6935:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6780:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6791:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6803:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6811:6:46","type":""}],"src":"6735:248:46"},{"body":{"nodeType":"YulBlock","src":"7057:176:46","statements":[{"body":{"nodeType":"YulBlock","src":"7103:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7112:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7115:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7105:6:46"},"nodeType":"YulFunctionCall","src":"7105:12:46"},"nodeType":"YulExpressionStatement","src":"7105:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7078:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"7087:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7074:3:46"},"nodeType":"YulFunctionCall","src":"7074:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"7099:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7070:3:46"},"nodeType":"YulFunctionCall","src":"7070:32:46"},"nodeType":"YulIf","src":"7067:52:46"},{"nodeType":"YulVariableDeclaration","src":"7128:36:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7154:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7141:12:46"},"nodeType":"YulFunctionCall","src":"7141:23:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7132:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7197:5:46"}],"functionName":{"name":"validator_revert_uint48","nodeType":"YulIdentifier","src":"7173:23:46"},"nodeType":"YulFunctionCall","src":"7173:30:46"},"nodeType":"YulExpressionStatement","src":"7173:30:46"},{"nodeType":"YulAssignment","src":"7212:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"7222:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7212:6:46"}]}]},"name":"abi_decode_tuple_t_uint48","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7023:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7034:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7046:6:46","type":""}],"src":"6988:245:46"},{"body":{"nodeType":"YulBlock","src":"7281:71:46","statements":[{"body":{"nodeType":"YulBlock","src":"7330:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7339:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7342:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7332:6:46"},"nodeType":"YulFunctionCall","src":"7332:12:46"},"nodeType":"YulExpressionStatement","src":"7332:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7304:5:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7315:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"7322:4:46","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7311:3:46"},"nodeType":"YulFunctionCall","src":"7311:16:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7301:2:46"},"nodeType":"YulFunctionCall","src":"7301:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7294:6:46"},"nodeType":"YulFunctionCall","src":"7294:35:46"},"nodeType":"YulIf","src":"7291:55:46"}]},"name":"validator_revert_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7270:5:46","type":""}],"src":"7238:114:46"},{"body":{"nodeType":"YulBlock","src":"7425:175:46","statements":[{"body":{"nodeType":"YulBlock","src":"7471:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7480:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7483:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7473:6:46"},"nodeType":"YulFunctionCall","src":"7473:12:46"},"nodeType":"YulExpressionStatement","src":"7473:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7446:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"7455:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7442:3:46"},"nodeType":"YulFunctionCall","src":"7442:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"7467:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7438:3:46"},"nodeType":"YulFunctionCall","src":"7438:32:46"},"nodeType":"YulIf","src":"7435:52:46"},{"nodeType":"YulVariableDeclaration","src":"7496:36:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7522:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7509:12:46"},"nodeType":"YulFunctionCall","src":"7509:23:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7500:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7564:5:46"}],"functionName":{"name":"validator_revert_uint8","nodeType":"YulIdentifier","src":"7541:22:46"},"nodeType":"YulFunctionCall","src":"7541:29:46"},"nodeType":"YulExpressionStatement","src":"7541:29:46"},{"nodeType":"YulAssignment","src":"7579:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"7589:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7579:6:46"}]}]},"name":"abi_decode_tuple_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7391:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7402:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7414:6:46","type":""}],"src":"7357:243:46"},{"body":{"nodeType":"YulBlock","src":"7650:86:46","statements":[{"body":{"nodeType":"YulBlock","src":"7714:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7723:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7726:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7716:6:46"},"nodeType":"YulFunctionCall","src":"7716:12:46"},"nodeType":"YulExpressionStatement","src":"7716:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7673:5:46"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7684:5:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7699:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"7704:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7695:3:46"},"nodeType":"YulFunctionCall","src":"7695:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"7708:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7691:3:46"},"nodeType":"YulFunctionCall","src":"7691:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7680:3:46"},"nodeType":"YulFunctionCall","src":"7680:31:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7670:2:46"},"nodeType":"YulFunctionCall","src":"7670:42:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7663:6:46"},"nodeType":"YulFunctionCall","src":"7663:50:46"},"nodeType":"YulIf","src":"7660:70:46"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7639:5:46","type":""}],"src":"7605:131:46"},{"body":{"nodeType":"YulBlock","src":"7811:177:46","statements":[{"body":{"nodeType":"YulBlock","src":"7857:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7866:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7869:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7859:6:46"},"nodeType":"YulFunctionCall","src":"7859:12:46"},"nodeType":"YulExpressionStatement","src":"7859:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7832:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"7841:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7828:3:46"},"nodeType":"YulFunctionCall","src":"7828:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"7853:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7824:3:46"},"nodeType":"YulFunctionCall","src":"7824:32:46"},"nodeType":"YulIf","src":"7821:52:46"},{"nodeType":"YulVariableDeclaration","src":"7882:36:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7908:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7895:12:46"},"nodeType":"YulFunctionCall","src":"7895:23:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7886:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7952:5:46"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"7927:24:46"},"nodeType":"YulFunctionCall","src":"7927:31:46"},"nodeType":"YulExpressionStatement","src":"7927:31:46"},{"nodeType":"YulAssignment","src":"7967:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"7977:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7967:6:46"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7777:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7788:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7800:6:46","type":""}],"src":"7741:247:46"},{"body":{"nodeType":"YulBlock","src":"8152:481:46","statements":[{"nodeType":"YulVariableDeclaration","src":"8162:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"8172:2:46","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8166:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8183:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8201:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8212:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8197:3:46"},"nodeType":"YulFunctionCall","src":"8197:18:46"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"8187:6:46","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8231:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8242:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8224:6:46"},"nodeType":"YulFunctionCall","src":"8224:21:46"},"nodeType":"YulExpressionStatement","src":"8224:21:46"},{"nodeType":"YulVariableDeclaration","src":"8254:17:46","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"8265:6:46"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"8258:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8280:27:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8300:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8294:5:46"},"nodeType":"YulFunctionCall","src":"8294:13:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8284:6:46","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"8323:6:46"},{"name":"length","nodeType":"YulIdentifier","src":"8331:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8316:6:46"},"nodeType":"YulFunctionCall","src":"8316:22:46"},"nodeType":"YulExpressionStatement","src":"8316:22:46"},{"nodeType":"YulAssignment","src":"8347:25:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8358:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"8369:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8354:3:46"},"nodeType":"YulFunctionCall","src":"8354:18:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8347:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"8381:29:46","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8399:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8407:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8395:3:46"},"nodeType":"YulFunctionCall","src":"8395:15:46"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"8385:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8419:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"8428:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8423:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"8487:120:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8508:3:46"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8519:6:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8513:5:46"},"nodeType":"YulFunctionCall","src":"8513:13:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8501:6:46"},"nodeType":"YulFunctionCall","src":"8501:26:46"},"nodeType":"YulExpressionStatement","src":"8501:26:46"},{"nodeType":"YulAssignment","src":"8540:19:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8551:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8556:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8547:3:46"},"nodeType":"YulFunctionCall","src":"8547:12:46"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8540:3:46"}]},{"nodeType":"YulAssignment","src":"8572:25:46","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8586:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"8594:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8582:3:46"},"nodeType":"YulFunctionCall","src":"8582:15:46"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8572:6:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8449:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"8452:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8446:2:46"},"nodeType":"YulFunctionCall","src":"8446:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8460:18:46","statements":[{"nodeType":"YulAssignment","src":"8462:14:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8471:1:46"},{"kind":"number","nodeType":"YulLiteral","src":"8474:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8467:3:46"},"nodeType":"YulFunctionCall","src":"8467:9:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8462:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"8442:3:46","statements":[]},"src":"8438:169:46"},{"nodeType":"YulAssignment","src":"8616:11:46","value":{"name":"pos","nodeType":"YulIdentifier","src":"8624:3:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8616:4:46"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8121:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8132:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8143:4:46","type":""}],"src":"7993:640:46"},{"body":{"nodeType":"YulBlock","src":"8769:522:46","statements":[{"body":{"nodeType":"YulBlock","src":"8816:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8825:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8828:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8818:6:46"},"nodeType":"YulFunctionCall","src":"8818:12:46"},"nodeType":"YulExpressionStatement","src":"8818:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8790:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"8799:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8786:3:46"},"nodeType":"YulFunctionCall","src":"8786:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"8811:3:46","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8782:3:46"},"nodeType":"YulFunctionCall","src":"8782:33:46"},"nodeType":"YulIf","src":"8779:53:46"},{"nodeType":"YulAssignment","src":"8841:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8864:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8851:12:46"},"nodeType":"YulFunctionCall","src":"8851:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8841:6:46"}]},{"nodeType":"YulAssignment","src":"8883:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8910:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"8921:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8906:3:46"},"nodeType":"YulFunctionCall","src":"8906:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8893:12:46"},"nodeType":"YulFunctionCall","src":"8893:32:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8883:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"8934:45:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8964:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"8975:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8960:3:46"},"nodeType":"YulFunctionCall","src":"8960:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8947:12:46"},"nodeType":"YulFunctionCall","src":"8947:32:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8938:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9010:5:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"8988:21:46"},"nodeType":"YulFunctionCall","src":"8988:28:46"},"nodeType":"YulExpressionStatement","src":"8988:28:46"},{"nodeType":"YulAssignment","src":"9025:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"9035:5:46"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9025:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"9049:47:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9081:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"9092:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9077:3:46"},"nodeType":"YulFunctionCall","src":"9077:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9064:12:46"},"nodeType":"YulFunctionCall","src":"9064:32:46"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9053:7:46","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9127:7:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"9105:21:46"},"nodeType":"YulFunctionCall","src":"9105:30:46"},"nodeType":"YulExpressionStatement","src":"9105:30:46"},{"nodeType":"YulAssignment","src":"9144:17:46","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9154:7:46"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9144:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"9170:48:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9202:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"9213:3:46","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9198:3:46"},"nodeType":"YulFunctionCall","src":"9198:19:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9185:12:46"},"nodeType":"YulFunctionCall","src":"9185:33:46"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"9174:7:46","type":""}]},{"expression":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"9251:7:46"}],"functionName":{"name":"validator_revert_uint48","nodeType":"YulIdentifier","src":"9227:23:46"},"nodeType":"YulFunctionCall","src":"9227:32:46"},"nodeType":"YulExpressionStatement","src":"9227:32:46"},{"nodeType":"YulAssignment","src":"9268:17:46","value":{"name":"value_2","nodeType":"YulIdentifier","src":"9278:7:46"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"9268:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32t_uint256t_boolt_boolt_uint48","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8703:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8714:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8726:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8734:6:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8742:6:46","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8750:6:46","type":""},{"name":"value4","nodeType":"YulTypedName","src":"8758:6:46","type":""}],"src":"8638:653:46"},{"body":{"nodeType":"YulBlock","src":"9400:212:46","statements":[{"body":{"nodeType":"YulBlock","src":"9446:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9455:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9458:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9448:6:46"},"nodeType":"YulFunctionCall","src":"9448:12:46"},"nodeType":"YulExpressionStatement","src":"9448:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9421:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"9430:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9417:3:46"},"nodeType":"YulFunctionCall","src":"9417:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"9442:2:46","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9413:3:46"},"nodeType":"YulFunctionCall","src":"9413:32:46"},"nodeType":"YulIf","src":"9410:52:46"},{"nodeType":"YulAssignment","src":"9471:33:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9494:9:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9481:12:46"},"nodeType":"YulFunctionCall","src":"9481:23:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9471:6:46"}]},{"nodeType":"YulAssignment","src":"9513:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9540:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"9551:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9536:3:46"},"nodeType":"YulFunctionCall","src":"9536:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9523:12:46"},"nodeType":"YulFunctionCall","src":"9523:32:46"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9513:6:46"}]},{"nodeType":"YulAssignment","src":"9564:42:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9591:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"9602:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9587:3:46"},"nodeType":"YulFunctionCall","src":"9587:18:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9574:12:46"},"nodeType":"YulFunctionCall","src":"9574:32:46"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9564:6:46"}]}]},"name":"abi_decode_tuple_t_bytes32t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9350:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9361:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9373:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9381:6:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9389:6:46","type":""}],"src":"9296:316:46"},{"body":{"nodeType":"YulBlock","src":"9718:76:46","statements":[{"nodeType":"YulAssignment","src":"9728:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9740:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"9751:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9736:3:46"},"nodeType":"YulFunctionCall","src":"9736:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9728:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9770:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"9781:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9763:6:46"},"nodeType":"YulFunctionCall","src":"9763:25:46"},"nodeType":"YulExpressionStatement","src":"9763:25:46"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9687:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9698:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9709:4:46","type":""}],"src":"9617:177:46"},{"body":{"nodeType":"YulBlock","src":"9976:511:46","statements":[{"nodeType":"YulAssignment","src":"9986:27:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9998:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"10009:3:46","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9994:3:46"},"nodeType":"YulFunctionCall","src":"9994:19:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9986:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10029:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10053:6:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10040:12:46"},"nodeType":"YulFunctionCall","src":"10040:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10022:6:46"},"nodeType":"YulFunctionCall","src":"10022:39:46"},"nodeType":"YulExpressionStatement","src":"10022:39:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10081:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"10092:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10077:3:46"},"nodeType":"YulFunctionCall","src":"10077:20:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10116:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"10124:4:46","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10112:3:46"},"nodeType":"YulFunctionCall","src":"10112:17:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10099:12:46"},"nodeType":"YulFunctionCall","src":"10099:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10070:6:46"},"nodeType":"YulFunctionCall","src":"10070:61:46"},"nodeType":"YulExpressionStatement","src":"10070:61:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10151:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"10162:4:46","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10147:3:46"},"nodeType":"YulFunctionCall","src":"10147:20:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10186:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"10194:4:46","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10182:3:46"},"nodeType":"YulFunctionCall","src":"10182:17:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10169:12:46"},"nodeType":"YulFunctionCall","src":"10169:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10140:6:46"},"nodeType":"YulFunctionCall","src":"10140:61:46"},"nodeType":"YulExpressionStatement","src":"10140:61:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10221:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"10232:4:46","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10217:3:46"},"nodeType":"YulFunctionCall","src":"10217:20:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10256:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"10264:4:46","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10252:3:46"},"nodeType":"YulFunctionCall","src":"10252:17:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10239:12:46"},"nodeType":"YulFunctionCall","src":"10239:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10210:6:46"},"nodeType":"YulFunctionCall","src":"10210:61:46"},"nodeType":"YulExpressionStatement","src":"10210:61:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10291:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"10302:4:46","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10287:3:46"},"nodeType":"YulFunctionCall","src":"10287:20:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10326:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"10334:4:46","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10322:3:46"},"nodeType":"YulFunctionCall","src":"10322:17:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10309:12:46"},"nodeType":"YulFunctionCall","src":"10309:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10280:6:46"},"nodeType":"YulFunctionCall","src":"10280:61:46"},"nodeType":"YulExpressionStatement","src":"10280:61:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10361:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"10372:4:46","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10357:3:46"},"nodeType":"YulFunctionCall","src":"10357:20:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10396:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"10404:4:46","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10392:3:46"},"nodeType":"YulFunctionCall","src":"10392:17:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10379:12:46"},"nodeType":"YulFunctionCall","src":"10379:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10350:6:46"},"nodeType":"YulFunctionCall","src":"10350:61:46"},"nodeType":"YulExpressionStatement","src":"10350:61:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10431:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"10442:4:46","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10427:3:46"},"nodeType":"YulFunctionCall","src":"10427:20:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10466:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"10474:4:46","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10462:3:46"},"nodeType":"YulFunctionCall","src":"10462:17:46"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10449:12:46"},"nodeType":"YulFunctionCall","src":"10449:31:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10420:6:46"},"nodeType":"YulFunctionCall","src":"10420:61:46"},"nodeType":"YulExpressionStatement","src":"10420:61:46"}]},"name":"abi_encode_tuple_t_struct$_NodeStrengthScores_$19503_calldata_ptr__to_t_struct$_NodeStrengthScores_$19503_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9945:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9956:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9967:4:46","type":""}],"src":"9799:688:46"},{"body":{"nodeType":"YulBlock","src":"10593:76:46","statements":[{"nodeType":"YulAssignment","src":"10603:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10615:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"10626:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10611:3:46"},"nodeType":"YulFunctionCall","src":"10611:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10603:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10645:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"10656:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10638:6:46"},"nodeType":"YulFunctionCall","src":"10638:25:46"},"nodeType":"YulExpressionStatement","src":"10638:25:46"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10562:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10573:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10584:4:46","type":""}],"src":"10492:177:46"},{"body":{"nodeType":"YulBlock","src":"10753:168:46","statements":[{"body":{"nodeType":"YulBlock","src":"10799:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10808:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10811:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10801:6:46"},"nodeType":"YulFunctionCall","src":"10801:12:46"},"nodeType":"YulExpressionStatement","src":"10801:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10774:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"10783:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10770:3:46"},"nodeType":"YulFunctionCall","src":"10770:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"10795:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10766:3:46"},"nodeType":"YulFunctionCall","src":"10766:32:46"},"nodeType":"YulIf","src":"10763:52:46"},{"nodeType":"YulVariableDeclaration","src":"10824:29:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10843:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10837:5:46"},"nodeType":"YulFunctionCall","src":"10837:16:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10828:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10885:5:46"}],"functionName":{"name":"validator_revert_uint8","nodeType":"YulIdentifier","src":"10862:22:46"},"nodeType":"YulFunctionCall","src":"10862:29:46"},"nodeType":"YulExpressionStatement","src":"10862:29:46"},{"nodeType":"YulAssignment","src":"10900:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"10910:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10900:6:46"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10719:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10730:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10742:6:46","type":""}],"src":"10674:247:46"},{"body":{"nodeType":"YulBlock","src":"10958:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10975:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10982:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10987:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10978:3:46"},"nodeType":"YulFunctionCall","src":"10978:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10968:6:46"},"nodeType":"YulFunctionCall","src":"10968:31:46"},"nodeType":"YulExpressionStatement","src":"10968:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11015:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11018:4:46","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11008:6:46"},"nodeType":"YulFunctionCall","src":"11008:15:46"},"nodeType":"YulExpressionStatement","src":"11008:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11039:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11042:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11032:6:46"},"nodeType":"YulFunctionCall","src":"11032:15:46"},"nodeType":"YulExpressionStatement","src":"11032:15:46"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"10926:127:46"},{"body":{"nodeType":"YulBlock","src":"11090:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11107:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11114:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"11119:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11110:3:46"},"nodeType":"YulFunctionCall","src":"11110:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11100:6:46"},"nodeType":"YulFunctionCall","src":"11100:31:46"},"nodeType":"YulExpressionStatement","src":"11100:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11147:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11150:4:46","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11140:6:46"},"nodeType":"YulFunctionCall","src":"11140:15:46"},"nodeType":"YulExpressionStatement","src":"11140:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11171:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11174:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11164:6:46"},"nodeType":"YulFunctionCall","src":"11164:15:46"},"nodeType":"YulExpressionStatement","src":"11164:15:46"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"11058:127:46"},{"body":{"nodeType":"YulBlock","src":"11268:167:46","statements":[{"body":{"nodeType":"YulBlock","src":"11314:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11323:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11326:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11316:6:46"},"nodeType":"YulFunctionCall","src":"11316:12:46"},"nodeType":"YulExpressionStatement","src":"11316:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11289:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"11298:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11285:3:46"},"nodeType":"YulFunctionCall","src":"11285:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"11310:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11281:3:46"},"nodeType":"YulFunctionCall","src":"11281:32:46"},"nodeType":"YulIf","src":"11278:52:46"},{"nodeType":"YulVariableDeclaration","src":"11339:29:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11358:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11352:5:46"},"nodeType":"YulFunctionCall","src":"11352:16:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11343:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11399:5:46"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"11377:21:46"},"nodeType":"YulFunctionCall","src":"11377:28:46"},"nodeType":"YulExpressionStatement","src":"11377:28:46"},{"nodeType":"YulAssignment","src":"11414:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"11424:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11414:6:46"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11234:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11245:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11257:6:46","type":""}],"src":"11190:245:46"},{"body":{"nodeType":"YulBlock","src":"11521:170:46","statements":[{"body":{"nodeType":"YulBlock","src":"11567:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11576:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11579:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11569:6:46"},"nodeType":"YulFunctionCall","src":"11569:12:46"},"nodeType":"YulExpressionStatement","src":"11569:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11542:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"11551:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11538:3:46"},"nodeType":"YulFunctionCall","src":"11538:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"11563:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11534:3:46"},"nodeType":"YulFunctionCall","src":"11534:32:46"},"nodeType":"YulIf","src":"11531:52:46"},{"nodeType":"YulVariableDeclaration","src":"11592:29:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11611:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11605:5:46"},"nodeType":"YulFunctionCall","src":"11605:16:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11596:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11655:5:46"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"11630:24:46"},"nodeType":"YulFunctionCall","src":"11630:31:46"},"nodeType":"YulExpressionStatement","src":"11630:31:46"},{"nodeType":"YulAssignment","src":"11670:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"11680:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11670:6:46"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11487:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11498:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11510:6:46","type":""}],"src":"11440:251:46"},{"body":{"nodeType":"YulBlock","src":"11728:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11745:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11752:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"11757:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11748:3:46"},"nodeType":"YulFunctionCall","src":"11748:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11738:6:46"},"nodeType":"YulFunctionCall","src":"11738:31:46"},"nodeType":"YulExpressionStatement","src":"11738:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11785:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11788:4:46","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11778:6:46"},"nodeType":"YulFunctionCall","src":"11778:15:46"},"nodeType":"YulExpressionStatement","src":"11778:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11809:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11812:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11802:6:46"},"nodeType":"YulFunctionCall","src":"11802:15:46"},"nodeType":"YulExpressionStatement","src":"11802:15:46"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"11696:127:46"},{"body":{"nodeType":"YulBlock","src":"11875:88:46","statements":[{"body":{"nodeType":"YulBlock","src":"11906:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"11908:16:46"},"nodeType":"YulFunctionCall","src":"11908:18:46"},"nodeType":"YulExpressionStatement","src":"11908:18:46"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11891:5:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11902:1:46","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11898:3:46"},"nodeType":"YulFunctionCall","src":"11898:6:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11888:2:46"},"nodeType":"YulFunctionCall","src":"11888:17:46"},"nodeType":"YulIf","src":"11885:43:46"},{"nodeType":"YulAssignment","src":"11937:20:46","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11948:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"11955:1:46","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11944:3:46"},"nodeType":"YulFunctionCall","src":"11944:13:46"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"11937:3:46"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11857:5:46","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"11867:3:46","type":""}],"src":"11828:135:46"},{"body":{"nodeType":"YulBlock","src":"12097:119:46","statements":[{"nodeType":"YulAssignment","src":"12107:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12119:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12130:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12115:3:46"},"nodeType":"YulFunctionCall","src":"12115:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12107:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12149:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"12160:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12142:6:46"},"nodeType":"YulFunctionCall","src":"12142:25:46"},"nodeType":"YulExpressionStatement","src":"12142:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12187:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12198:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12183:3:46"},"nodeType":"YulFunctionCall","src":"12183:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"12203:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12176:6:46"},"nodeType":"YulFunctionCall","src":"12176:34:46"},"nodeType":"YulExpressionStatement","src":"12176:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12058:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12069:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12077:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12088:4:46","type":""}],"src":"11968:248:46"},{"body":{"nodeType":"YulBlock","src":"12350:145:46","statements":[{"nodeType":"YulAssignment","src":"12360:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12372:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12383:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12368:3:46"},"nodeType":"YulFunctionCall","src":"12368:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12360:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12402:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12417:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12433:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"12438:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12429:3:46"},"nodeType":"YulFunctionCall","src":"12429:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"12442:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12425:3:46"},"nodeType":"YulFunctionCall","src":"12425:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12413:3:46"},"nodeType":"YulFunctionCall","src":"12413:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12395:6:46"},"nodeType":"YulFunctionCall","src":"12395:51:46"},"nodeType":"YulExpressionStatement","src":"12395:51:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12466:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12477:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12462:3:46"},"nodeType":"YulFunctionCall","src":"12462:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"12482:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12455:6:46"},"nodeType":"YulFunctionCall","src":"12455:34:46"},"nodeType":"YulExpressionStatement","src":"12455:34:46"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12311:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12322:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12330:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12341:4:46","type":""}],"src":"12221:274:46"},{"body":{"nodeType":"YulBlock","src":"12548:77:46","statements":[{"nodeType":"YulAssignment","src":"12558:16:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12569:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"12572:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12565:3:46"},"nodeType":"YulFunctionCall","src":"12565:9:46"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"12558:3:46"}]},{"body":{"nodeType":"YulBlock","src":"12597:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12599:16:46"},"nodeType":"YulFunctionCall","src":"12599:18:46"},"nodeType":"YulExpressionStatement","src":"12599:18:46"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12589:1:46"},{"name":"sum","nodeType":"YulIdentifier","src":"12592:3:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12586:2:46"},"nodeType":"YulFunctionCall","src":"12586:10:46"},"nodeType":"YulIf","src":"12583:36:46"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"12531:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"12534:1:46","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"12540:3:46","type":""}],"src":"12500:125:46"},{"body":{"nodeType":"YulBlock","src":"12711:103:46","statements":[{"body":{"nodeType":"YulBlock","src":"12757:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12766:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12769:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12759:6:46"},"nodeType":"YulFunctionCall","src":"12759:12:46"},"nodeType":"YulExpressionStatement","src":"12759:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12732:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"12741:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12728:3:46"},"nodeType":"YulFunctionCall","src":"12728:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"12753:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12724:3:46"},"nodeType":"YulFunctionCall","src":"12724:32:46"},"nodeType":"YulIf","src":"12721:52:46"},{"nodeType":"YulAssignment","src":"12782:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12798:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12792:5:46"},"nodeType":"YulFunctionCall","src":"12792:16:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12782:6:46"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12677:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12688:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12700:6:46","type":""}],"src":"12630:184:46"},{"body":{"nodeType":"YulBlock","src":"12948:119:46","statements":[{"nodeType":"YulAssignment","src":"12958:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12970:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"12981:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12966:3:46"},"nodeType":"YulFunctionCall","src":"12966:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12958:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13000:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"13011:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12993:6:46"},"nodeType":"YulFunctionCall","src":"12993:25:46"},"nodeType":"YulExpressionStatement","src":"12993:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13038:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"13049:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13034:3:46"},"nodeType":"YulFunctionCall","src":"13034:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"13054:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13027:6:46"},"nodeType":"YulFunctionCall","src":"13027:34:46"},"nodeType":"YulExpressionStatement","src":"13027:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_bytes32__to_t_uint256_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12909:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12920:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12928:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12939:4:46","type":""}],"src":"12819:248:46"},{"body":{"nodeType":"YulBlock","src":"13121:79:46","statements":[{"nodeType":"YulAssignment","src":"13131:17:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"13143:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"13146:1:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13139:3:46"},"nodeType":"YulFunctionCall","src":"13139:9:46"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"13131:4:46"}]},{"body":{"nodeType":"YulBlock","src":"13172:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"13174:16:46"},"nodeType":"YulFunctionCall","src":"13174:18:46"},"nodeType":"YulExpressionStatement","src":"13174:18:46"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"13163:4:46"},{"name":"x","nodeType":"YulIdentifier","src":"13169:1:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13160:2:46"},"nodeType":"YulFunctionCall","src":"13160:11:46"},"nodeType":"YulIf","src":"13157:37:46"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"13103:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"13106:1:46","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"13112:4:46","type":""}],"src":"13072:128:46"},{"body":{"nodeType":"YulBlock","src":"13300:92:46","statements":[{"nodeType":"YulAssignment","src":"13310:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13322:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"13333:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13318:3:46"},"nodeType":"YulFunctionCall","src":"13318:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13310:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13352:9:46"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13377:6:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13370:6:46"},"nodeType":"YulFunctionCall","src":"13370:14:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13363:6:46"},"nodeType":"YulFunctionCall","src":"13363:22:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13345:6:46"},"nodeType":"YulFunctionCall","src":"13345:41:46"},"nodeType":"YulExpressionStatement","src":"13345:41:46"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13269:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13280:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13291:4:46","type":""}],"src":"13205:187:46"},{"body":{"nodeType":"YulBlock","src":"13524:170:46","statements":[{"nodeType":"YulAssignment","src":"13534:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13546:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"13557:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13542:3:46"},"nodeType":"YulFunctionCall","src":"13542:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13534:4:46"}]},{"nodeType":"YulVariableDeclaration","src":"13569:24:46","value":{"kind":"number","nodeType":"YulLiteral","src":"13579:14:46","type":"","value":"0xffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13573:2:46","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13609:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13624:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"13632:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13620:3:46"},"nodeType":"YulFunctionCall","src":"13620:15:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13602:6:46"},"nodeType":"YulFunctionCall","src":"13602:34:46"},"nodeType":"YulExpressionStatement","src":"13602:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13656:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"13667:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13652:3:46"},"nodeType":"YulFunctionCall","src":"13652:18:46"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"13676:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"13684:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13672:3:46"},"nodeType":"YulFunctionCall","src":"13672:15:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13645:6:46"},"nodeType":"YulFunctionCall","src":"13645:43:46"},"nodeType":"YulExpressionStatement","src":"13645:43:46"}]},"name":"abi_encode_tuple_t_uint48_t_uint48__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13485:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13496:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13504:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13515:4:46","type":""}],"src":"13397:297:46"},{"body":{"nodeType":"YulBlock","src":"13800:102:46","statements":[{"nodeType":"YulAssignment","src":"13810:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13822:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"13833:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13818:3:46"},"nodeType":"YulFunctionCall","src":"13818:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13810:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13852:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13867:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13883:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"13888:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"13879:3:46"},"nodeType":"YulFunctionCall","src":"13879:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"13892:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13875:3:46"},"nodeType":"YulFunctionCall","src":"13875:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13863:3:46"},"nodeType":"YulFunctionCall","src":"13863:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13845:6:46"},"nodeType":"YulFunctionCall","src":"13845:51:46"},"nodeType":"YulExpressionStatement","src":"13845:51:46"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13769:9:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13780:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13791:4:46","type":""}],"src":"13699:203:46"},{"body":{"nodeType":"YulBlock","src":"13953:207:46","statements":[{"nodeType":"YulAssignment","src":"13963:19:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13979:2:46","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13973:5:46"},"nodeType":"YulFunctionCall","src":"13973:9:46"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13963:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"13991:35:46","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14013:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"14021:4:46","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14009:3:46"},"nodeType":"YulFunctionCall","src":"14009:17:46"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"13995:10:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"14101:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"14103:16:46"},"nodeType":"YulFunctionCall","src":"14103:18:46"},"nodeType":"YulExpressionStatement","src":"14103:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14044:10:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14064:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"14068:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14060:3:46"},"nodeType":"YulFunctionCall","src":"14060:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"14072:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14056:3:46"},"nodeType":"YulFunctionCall","src":"14056:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14041:2:46"},"nodeType":"YulFunctionCall","src":"14041:34:46"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14080:10:46"},{"name":"memPtr","nodeType":"YulIdentifier","src":"14092:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14077:2:46"},"nodeType":"YulFunctionCall","src":"14077:22:46"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"14038:2:46"},"nodeType":"YulFunctionCall","src":"14038:62:46"},"nodeType":"YulIf","src":"14035:88:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14139:2:46","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14143:10:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14132:6:46"},"nodeType":"YulFunctionCall","src":"14132:22:46"},"nodeType":"YulExpressionStatement","src":"14132:22:46"}]},"name":"allocate_memory_3235","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"13942:6:46","type":""}],"src":"13907:253:46"},{"body":{"nodeType":"YulBlock","src":"14210:230:46","statements":[{"nodeType":"YulAssignment","src":"14220:19:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14236:2:46","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14230:5:46"},"nodeType":"YulFunctionCall","src":"14230:9:46"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14220:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"14248:58:46","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14270:6:46"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"14286:4:46"},{"kind":"number","nodeType":"YulLiteral","src":"14292:2:46","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14282:3:46"},"nodeType":"YulFunctionCall","src":"14282:13:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14301:2:46","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"14297:3:46"},"nodeType":"YulFunctionCall","src":"14297:7:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14278:3:46"},"nodeType":"YulFunctionCall","src":"14278:27:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14266:3:46"},"nodeType":"YulFunctionCall","src":"14266:40:46"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"14252:10:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"14381:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"14383:16:46"},"nodeType":"YulFunctionCall","src":"14383:18:46"},"nodeType":"YulExpressionStatement","src":"14383:18:46"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14324:10:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14344:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"14348:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14340:3:46"},"nodeType":"YulFunctionCall","src":"14340:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"14352:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14336:3:46"},"nodeType":"YulFunctionCall","src":"14336:18:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14321:2:46"},"nodeType":"YulFunctionCall","src":"14321:34:46"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14360:10:46"},{"name":"memPtr","nodeType":"YulIdentifier","src":"14372:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14357:2:46"},"nodeType":"YulFunctionCall","src":"14357:22:46"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"14318:2:46"},"nodeType":"YulFunctionCall","src":"14318:62:46"},"nodeType":"YulIf","src":"14315:88:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14419:2:46","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"14423:10:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14412:6:46"},"nodeType":"YulFunctionCall","src":"14412:22:46"},"nodeType":"YulExpressionStatement","src":"14412:22:46"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"14190:4:46","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"14199:6:46","type":""}],"src":"14165:275:46"},{"body":{"nodeType":"YulBlock","src":"14575:1688:46","statements":[{"nodeType":"YulVariableDeclaration","src":"14585:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"14595:2:46","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"14589:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"14642:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14651:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14654:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14644:6:46"},"nodeType":"YulFunctionCall","src":"14644:12:46"},"nodeType":"YulExpressionStatement","src":"14644:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14617:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"14626:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14613:3:46"},"nodeType":"YulFunctionCall","src":"14613:23:46"},{"name":"_1","nodeType":"YulIdentifier","src":"14638:2:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14609:3:46"},"nodeType":"YulFunctionCall","src":"14609:32:46"},"nodeType":"YulIf","src":"14606:52:46"},{"nodeType":"YulVariableDeclaration","src":"14667:30:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14687:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14681:5:46"},"nodeType":"YulFunctionCall","src":"14681:16:46"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14671:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14706:28:46","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14724:2:46","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"14728:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14720:3:46"},"nodeType":"YulFunctionCall","src":"14720:10:46"},{"kind":"number","nodeType":"YulLiteral","src":"14732:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14716:3:46"},"nodeType":"YulFunctionCall","src":"14716:18:46"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"14710:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"14761:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14770:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14773:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14763:6:46"},"nodeType":"YulFunctionCall","src":"14763:12:46"},"nodeType":"YulExpressionStatement","src":"14763:12:46"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14749:6:46"},{"name":"_2","nodeType":"YulIdentifier","src":"14757:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14746:2:46"},"nodeType":"YulFunctionCall","src":"14746:14:46"},"nodeType":"YulIf","src":"14743:34:46"},{"nodeType":"YulVariableDeclaration","src":"14786:32:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14800:9:46"},{"name":"offset","nodeType":"YulIdentifier","src":"14811:6:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14796:3:46"},"nodeType":"YulFunctionCall","src":"14796:22:46"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"14790:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"14866:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14875:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14878:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14868:6:46"},"nodeType":"YulFunctionCall","src":"14868:12:46"},"nodeType":"YulExpressionStatement","src":"14868:12:46"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"14845:2:46"},{"kind":"number","nodeType":"YulLiteral","src":"14849:4:46","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14841:3:46"},"nodeType":"YulFunctionCall","src":"14841:13:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14856:7:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14837:3:46"},"nodeType":"YulFunctionCall","src":"14837:27:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14830:6:46"},"nodeType":"YulFunctionCall","src":"14830:35:46"},"nodeType":"YulIf","src":"14827:55:46"},{"nodeType":"YulVariableDeclaration","src":"14891:19:46","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"14907:2:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14901:5:46"},"nodeType":"YulFunctionCall","src":"14901:9:46"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"14895:2:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"14933:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"14935:16:46"},"nodeType":"YulFunctionCall","src":"14935:18:46"},"nodeType":"YulExpressionStatement","src":"14935:18:46"}]},"condition":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"14925:2:46"},{"name":"_2","nodeType":"YulIdentifier","src":"14929:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14922:2:46"},"nodeType":"YulFunctionCall","src":"14922:10:46"},"nodeType":"YulIf","src":"14919:36:46"},{"nodeType":"YulVariableDeclaration","src":"14964:47:46","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14999:1:46","type":"","value":"5"},{"name":"_4","nodeType":"YulIdentifier","src":"15002:2:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14995:3:46"},"nodeType":"YulFunctionCall","src":"14995:10:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15007:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14991:3:46"},"nodeType":"YulFunctionCall","src":"14991:19:46"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"14975:15:46"},"nodeType":"YulFunctionCall","src":"14975:36:46"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"14968:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15020:16:46","value":{"name":"dst","nodeType":"YulIdentifier","src":"15033:3:46"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"15024:5:46","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15052:3:46"},{"name":"_4","nodeType":"YulIdentifier","src":"15057:2:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15045:6:46"},"nodeType":"YulFunctionCall","src":"15045:15:46"},"nodeType":"YulExpressionStatement","src":"15045:15:46"},{"nodeType":"YulAssignment","src":"15069:19:46","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"15080:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15085:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15076:3:46"},"nodeType":"YulFunctionCall","src":"15076:12:46"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"15069:3:46"}]},{"nodeType":"YulVariableDeclaration","src":"15097:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15107:4:46","type":"","value":"0xa0"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"15101:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15120:43:46","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"15142:2:46"},{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"15150:2:46"},{"name":"_5","nodeType":"YulIdentifier","src":"15154:2:46"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15146:3:46"},"nodeType":"YulFunctionCall","src":"15146:11:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15138:3:46"},"nodeType":"YulFunctionCall","src":"15138:20:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15160:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15134:3:46"},"nodeType":"YulFunctionCall","src":"15134:29:46"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"15124:6:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"15195:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15204:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15207:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15197:6:46"},"nodeType":"YulFunctionCall","src":"15197:12:46"},"nodeType":"YulExpressionStatement","src":"15197:12:46"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"15178:6:46"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15186:7:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15175:2:46"},"nodeType":"YulFunctionCall","src":"15175:19:46"},"nodeType":"YulIf","src":"15172:39:46"},{"nodeType":"YulVariableDeclaration","src":"15220:22:46","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"15235:2:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15239:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15231:3:46"},"nodeType":"YulFunctionCall","src":"15231:11:46"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"15224:3:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"15307:926:46","statements":[{"body":{"nodeType":"YulBlock","src":"15363:74:46","statements":[{"nodeType":"YulVariableDeclaration","src":"15381:11:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15391:1:46","type":"","value":"0"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"15385:2:46","type":""}]},{"expression":{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"15416:2:46"},{"name":"_6","nodeType":"YulIdentifier","src":"15420:2:46"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15409:6:46"},"nodeType":"YulFunctionCall","src":"15409:14:46"},"nodeType":"YulExpressionStatement","src":"15409:14:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"15332:7:46"},{"name":"src","nodeType":"YulIdentifier","src":"15341:3:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15328:3:46"},"nodeType":"YulFunctionCall","src":"15328:17:46"},{"name":"_5","nodeType":"YulIdentifier","src":"15347:2:46"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"15324:3:46"},"nodeType":"YulFunctionCall","src":"15324:26:46"},"nodeType":"YulIf","src":"15321:116:46"},{"nodeType":"YulVariableDeclaration","src":"15450:35:46","value":{"arguments":[],"functionName":{"name":"allocate_memory_3235","nodeType":"YulIdentifier","src":"15463:20:46"},"nodeType":"YulFunctionCall","src":"15463:22:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"15454:5:46","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15505:5:46"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15518:3:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15512:5:46"},"nodeType":"YulFunctionCall","src":"15512:10:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15498:6:46"},"nodeType":"YulFunctionCall","src":"15498:25:46"},"nodeType":"YulExpressionStatement","src":"15498:25:46"},{"nodeType":"YulVariableDeclaration","src":"15536:34:46","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15561:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15566:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15557:3:46"},"nodeType":"YulFunctionCall","src":"15557:12:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15551:5:46"},"nodeType":"YulFunctionCall","src":"15551:19:46"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"15540:7:46","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"15606:7:46"}],"functionName":{"name":"validator_revert_uint8","nodeType":"YulIdentifier","src":"15583:22:46"},"nodeType":"YulFunctionCall","src":"15583:31:46"},"nodeType":"YulExpressionStatement","src":"15583:31:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15638:5:46"},{"name":"_1","nodeType":"YulIdentifier","src":"15645:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15634:3:46"},"nodeType":"YulFunctionCall","src":"15634:14:46"},{"name":"value_1","nodeType":"YulIdentifier","src":"15650:7:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15627:6:46"},"nodeType":"YulFunctionCall","src":"15627:31:46"},"nodeType":"YulExpressionStatement","src":"15627:31:46"},{"nodeType":"YulVariableDeclaration","src":"15671:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15681:2:46","type":"","value":"64"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"15675:2:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15696:34:46","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15721:3:46"},{"name":"_7","nodeType":"YulIdentifier","src":"15726:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15717:3:46"},"nodeType":"YulFunctionCall","src":"15717:12:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15711:5:46"},"nodeType":"YulFunctionCall","src":"15711:19:46"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"15700:7:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"15796:74:46","statements":[{"nodeType":"YulVariableDeclaration","src":"15814:11:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15824:1:46","type":"","value":"0"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"15818:2:46","type":""}]},{"expression":{"arguments":[{"name":"_8","nodeType":"YulIdentifier","src":"15849:2:46"},{"name":"_8","nodeType":"YulIdentifier","src":"15853:2:46"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15842:6:46"},"nodeType":"YulFunctionCall","src":"15842:14:46"},"nodeType":"YulExpressionStatement","src":"15842:14:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"15756:7:46"},{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"15769:7:46"},{"name":"_2","nodeType":"YulIdentifier","src":"15778:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15765:3:46"},"nodeType":"YulFunctionCall","src":"15765:16:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15753:2:46"},"nodeType":"YulFunctionCall","src":"15753:29:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15746:6:46"},"nodeType":"YulFunctionCall","src":"15746:37:46"},"nodeType":"YulIf","src":"15743:127:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15894:5:46"},{"name":"_7","nodeType":"YulIdentifier","src":"15901:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15890:3:46"},"nodeType":"YulFunctionCall","src":"15890:14:46"},{"name":"value_2","nodeType":"YulIdentifier","src":"15906:7:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15883:6:46"},"nodeType":"YulFunctionCall","src":"15883:31:46"},"nodeType":"YulExpressionStatement","src":"15883:31:46"},{"nodeType":"YulVariableDeclaration","src":"15927:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"15937:2:46","type":"","value":"96"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"15931:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15963:5:46"},{"name":"_9","nodeType":"YulIdentifier","src":"15970:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15959:3:46"},"nodeType":"YulFunctionCall","src":"15959:14:46"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15985:3:46"},{"name":"_9","nodeType":"YulIdentifier","src":"15990:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15981:3:46"},"nodeType":"YulFunctionCall","src":"15981:12:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15975:5:46"},"nodeType":"YulFunctionCall","src":"15975:19:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15952:6:46"},"nodeType":"YulFunctionCall","src":"15952:43:46"},"nodeType":"YulExpressionStatement","src":"15952:43:46"},{"nodeType":"YulVariableDeclaration","src":"16008:14:46","value":{"kind":"number","nodeType":"YulLiteral","src":"16019:3:46","type":"","value":"128"},"variables":[{"name":"_10","nodeType":"YulTypedName","src":"16012:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16035:35:46","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16060:3:46"},{"name":"_10","nodeType":"YulIdentifier","src":"16065:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16056:3:46"},"nodeType":"YulFunctionCall","src":"16056:13:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16050:5:46"},"nodeType":"YulFunctionCall","src":"16050:20:46"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"16039:7:46","type":""}]},{"expression":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"16107:7:46"}],"functionName":{"name":"validator_revert_uint48","nodeType":"YulIdentifier","src":"16083:23:46"},"nodeType":"YulFunctionCall","src":"16083:32:46"},"nodeType":"YulExpressionStatement","src":"16083:32:46"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16139:5:46"},{"name":"_10","nodeType":"YulIdentifier","src":"16146:3:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16135:3:46"},"nodeType":"YulFunctionCall","src":"16135:15:46"},{"name":"value_3","nodeType":"YulIdentifier","src":"16152:7:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16128:6:46"},"nodeType":"YulFunctionCall","src":"16128:32:46"},"nodeType":"YulExpressionStatement","src":"16128:32:46"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"16180:3:46"},{"name":"value","nodeType":"YulIdentifier","src":"16185:5:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16173:6:46"},"nodeType":"YulFunctionCall","src":"16173:18:46"},"nodeType":"YulExpressionStatement","src":"16173:18:46"},{"nodeType":"YulAssignment","src":"16204:19:46","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"16215:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"16220:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16211:3:46"},"nodeType":"YulFunctionCall","src":"16211:12:46"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"16204:3:46"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15262:3:46"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"15267:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15259:2:46"},"nodeType":"YulFunctionCall","src":"15259:15:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"15275:23:46","statements":[{"nodeType":"YulAssignment","src":"15277:19:46","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15288:3:46"},{"name":"_5","nodeType":"YulIdentifier","src":"15293:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15284:3:46"},"nodeType":"YulFunctionCall","src":"15284:12:46"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"15277:3:46"}]}]},"pre":{"nodeType":"YulBlock","src":"15255:3:46","statements":[]},"src":"15251:982:46"},{"nodeType":"YulAssignment","src":"16242:15:46","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"16252:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"16242:6:46"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14541:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"14552:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14564:6:46","type":""}],"src":"14445:1818:46"},{"body":{"nodeType":"YulBlock","src":"16300:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16317:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16324:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"16329:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16320:3:46"},"nodeType":"YulFunctionCall","src":"16320:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16310:6:46"},"nodeType":"YulFunctionCall","src":"16310:31:46"},"nodeType":"YulExpressionStatement","src":"16310:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16357:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"16360:4:46","type":"","value":"0x31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16350:6:46"},"nodeType":"YulFunctionCall","src":"16350:15:46"},"nodeType":"YulExpressionStatement","src":"16350:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16381:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16384:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"16374:6:46"},"nodeType":"YulFunctionCall","src":"16374:15:46"},"nodeType":"YulExpressionStatement","src":"16374:15:46"}]},"name":"panic_error_0x31","nodeType":"YulFunctionDefinition","src":"16268:127:46"},{"body":{"nodeType":"YulBlock","src":"16447:129:46","statements":[{"nodeType":"YulVariableDeclaration","src":"16457:24:46","value":{"kind":"number","nodeType":"YulLiteral","src":"16467:14:46","type":"","value":"0xffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16461:2:46","type":""}]},{"nodeType":"YulAssignment","src":"16490:34:46","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16505:1:46"},{"name":"_1","nodeType":"YulIdentifier","src":"16508:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16501:3:46"},"nodeType":"YulFunctionCall","src":"16501:10:46"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"16517:1:46"},{"name":"_1","nodeType":"YulIdentifier","src":"16520:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16513:3:46"},"nodeType":"YulFunctionCall","src":"16513:10:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16497:3:46"},"nodeType":"YulFunctionCall","src":"16497:27:46"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"16490:3:46"}]},{"body":{"nodeType":"YulBlock","src":"16548:22:46","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"16550:16:46"},"nodeType":"YulFunctionCall","src":"16550:18:46"},"nodeType":"YulExpressionStatement","src":"16550:18:46"}]},"condition":{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"16539:3:46"},{"name":"_1","nodeType":"YulIdentifier","src":"16544:2:46"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16536:2:46"},"nodeType":"YulFunctionCall","src":"16536:11:46"},"nodeType":"YulIf","src":"16533:37:46"}]},"name":"checked_add_t_uint48","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"16430:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"16433:1:46","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"16439:3:46","type":""}],"src":"16400:176:46"},{"body":{"nodeType":"YulBlock","src":"16706:170:46","statements":[{"nodeType":"YulAssignment","src":"16716:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16728:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"16739:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16724:3:46"},"nodeType":"YulFunctionCall","src":"16724:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16716:4:46"}]},{"nodeType":"YulVariableDeclaration","src":"16751:24:46","value":{"kind":"number","nodeType":"YulLiteral","src":"16761:14:46","type":"","value":"0xffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16755:2:46","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16791:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16806:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"16814:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16802:3:46"},"nodeType":"YulFunctionCall","src":"16802:15:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16784:6:46"},"nodeType":"YulFunctionCall","src":"16784:34:46"},"nodeType":"YulExpressionStatement","src":"16784:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16838:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"16849:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16834:3:46"},"nodeType":"YulFunctionCall","src":"16834:18:46"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"16858:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"16866:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16854:3:46"},"nodeType":"YulFunctionCall","src":"16854:15:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16827:6:46"},"nodeType":"YulFunctionCall","src":"16827:43:46"},"nodeType":"YulExpressionStatement","src":"16827:43:46"}]},"name":"abi_encode_tuple_t_uint48_t_uint48__to_t_uint48_t_uint48__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16667:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16678:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16686:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16697:4:46","type":""}],"src":"16581:295:46"},{"body":{"nodeType":"YulBlock","src":"16980:179:46","statements":[{"body":{"nodeType":"YulBlock","src":"17026:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17035:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17038:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17028:6:46"},"nodeType":"YulFunctionCall","src":"17028:12:46"},"nodeType":"YulExpressionStatement","src":"17028:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"17001:7:46"},{"name":"headStart","nodeType":"YulIdentifier","src":"17010:9:46"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16997:3:46"},"nodeType":"YulFunctionCall","src":"16997:23:46"},{"kind":"number","nodeType":"YulLiteral","src":"17022:2:46","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"16993:3:46"},"nodeType":"YulFunctionCall","src":"16993:32:46"},"nodeType":"YulIf","src":"16990:52:46"},{"nodeType":"YulVariableDeclaration","src":"17051:29:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17070:9:46"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17064:5:46"},"nodeType":"YulFunctionCall","src":"17064:16:46"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"17055:5:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"17113:16:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17122:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17125:1:46","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17115:6:46"},"nodeType":"YulFunctionCall","src":"17115:12:46"},"nodeType":"YulExpressionStatement","src":"17115:12:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17102:5:46"},{"kind":"number","nodeType":"YulLiteral","src":"17109:1:46","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"17099:2:46"},"nodeType":"YulFunctionCall","src":"17099:12:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"17092:6:46"},"nodeType":"YulFunctionCall","src":"17092:20:46"},"nodeType":"YulIf","src":"17089:40:46"},{"nodeType":"YulAssignment","src":"17138:15:46","value":{"name":"value","nodeType":"YulIdentifier","src":"17148:5:46"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"17138:6:46"}]}]},"name":"abi_decode_tuple_t_enum$_APP_SECURITY_$19455_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16946:9:46","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"16957:7:46","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"16969:6:46","type":""}],"src":"16881:278:46"},{"body":{"nodeType":"YulBlock","src":"17196:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17213:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17220:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"17225:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"17216:3:46"},"nodeType":"YulFunctionCall","src":"17216:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17206:6:46"},"nodeType":"YulFunctionCall","src":"17206:31:46"},"nodeType":"YulExpressionStatement","src":"17206:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17253:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"17256:4:46","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17246:6:46"},"nodeType":"YulFunctionCall","src":"17246:15:46"},"nodeType":"YulExpressionStatement","src":"17246:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17277:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17280:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17270:6:46"},"nodeType":"YulFunctionCall","src":"17270:15:46"},"nodeType":"YulExpressionStatement","src":"17270:15:46"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"17164:127:46"},{"body":{"nodeType":"YulBlock","src":"17441:272:46","statements":[{"nodeType":"YulAssignment","src":"17451:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17463:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17474:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17459:3:46"},"nodeType":"YulFunctionCall","src":"17459:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17451:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17493:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"17504:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17486:6:46"},"nodeType":"YulFunctionCall","src":"17486:25:46"},"nodeType":"YulExpressionStatement","src":"17486:25:46"},{"body":{"nodeType":"YulBlock","src":"17553:111:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17574:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17581:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"17586:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"17577:3:46"},"nodeType":"YulFunctionCall","src":"17577:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17567:6:46"},"nodeType":"YulFunctionCall","src":"17567:31:46"},"nodeType":"YulExpressionStatement","src":"17567:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17618:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"17621:4:46","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17611:6:46"},"nodeType":"YulFunctionCall","src":"17611:15:46"},"nodeType":"YulExpressionStatement","src":"17611:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17646:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17649:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17639:6:46"},"nodeType":"YulFunctionCall","src":"17639:15:46"},"nodeType":"YulExpressionStatement","src":"17639:15:46"}]},"condition":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"17533:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"17541:1:46","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"17530:2:46"},"nodeType":"YulFunctionCall","src":"17530:13:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"17523:6:46"},"nodeType":"YulFunctionCall","src":"17523:21:46"},"nodeType":"YulIf","src":"17520:144:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17684:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"17695:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17680:3:46"},"nodeType":"YulFunctionCall","src":"17680:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"17700:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17673:6:46"},"nodeType":"YulFunctionCall","src":"17673:34:46"},"nodeType":"YulExpressionStatement","src":"17673:34:46"}]},"name":"abi_encode_tuple_t_bytes32_t_enum$_APP_SECURITY_$19455__to_t_bytes32_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17402:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17413:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17421:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17432:4:46","type":""}],"src":"17296:417:46"},{"body":{"nodeType":"YulBlock","src":"17774:65:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17791:1:46","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"17794:3:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17784:6:46"},"nodeType":"YulFunctionCall","src":"17784:14:46"},"nodeType":"YulExpressionStatement","src":"17784:14:46"},{"nodeType":"YulAssignment","src":"17807:26:46","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17825:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17828:4:46","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"17815:9:46"},"nodeType":"YulFunctionCall","src":"17815:18:46"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"17807:4:46"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"17757:3:46","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"17765:4:46","type":""}],"src":"17718:121:46"},{"body":{"nodeType":"YulBlock","src":"18012:1247:46","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18029:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18044:6:46"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18060:3:46","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"18065:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"18056:3:46"},"nodeType":"YulFunctionCall","src":"18056:11:46"},{"kind":"number","nodeType":"YulLiteral","src":"18069:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18052:3:46"},"nodeType":"YulFunctionCall","src":"18052:19:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18040:3:46"},"nodeType":"YulFunctionCall","src":"18040:32:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18022:6:46"},"nodeType":"YulFunctionCall","src":"18022:51:46"},"nodeType":"YulExpressionStatement","src":"18022:51:46"},{"nodeType":"YulVariableDeclaration","src":"18082:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"18092:2:46","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"18086:2:46","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18114:9:46"},{"name":"_1","nodeType":"YulIdentifier","src":"18125:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18110:3:46"},"nodeType":"YulFunctionCall","src":"18110:18:46"},{"kind":"number","nodeType":"YulLiteral","src":"18130:2:46","type":"","value":"96"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18103:6:46"},"nodeType":"YulFunctionCall","src":"18103:30:46"},"nodeType":"YulExpressionStatement","src":"18103:30:46"},{"nodeType":"YulVariableDeclaration","src":"18142:12:46","value":{"kind":"number","nodeType":"YulLiteral","src":"18153:1:46","type":"","value":"0"},"variables":[{"name":"ret","nodeType":"YulTypedName","src":"18146:3:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18163:30:46","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"18186:6:46"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"18180:5:46"},"nodeType":"YulFunctionCall","src":"18180:13:46"},"variables":[{"name":"slotValue","nodeType":"YulTypedName","src":"18167:9:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18202:17:46","value":{"name":"ret","nodeType":"YulIdentifier","src":"18216:3:46"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"18206:6:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18228:11:46","value":{"kind":"number","nodeType":"YulLiteral","src":"18238:1:46","type":"","value":"1"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"18232:2:46","type":""}]},{"nodeType":"YulAssignment","src":"18248:28:46","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"18262:2:46"},{"name":"slotValue","nodeType":"YulIdentifier","src":"18266:9:46"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"18258:3:46"},"nodeType":"YulFunctionCall","src":"18258:18:46"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"18248:6:46"}]},{"nodeType":"YulVariableDeclaration","src":"18285:44:46","value":{"arguments":[{"name":"slotValue","nodeType":"YulIdentifier","src":"18315:9:46"},{"name":"_2","nodeType":"YulIdentifier","src":"18326:2:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18311:3:46"},"nodeType":"YulFunctionCall","src":"18311:18:46"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"18289:18:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"18368:31:46","statements":[{"nodeType":"YulAssignment","src":"18370:27:46","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"18384:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"18392:4:46","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18380:3:46"},"nodeType":"YulFunctionCall","src":"18380:17:46"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"18370:6:46"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"18348:18:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18341:6:46"},"nodeType":"YulFunctionCall","src":"18341:26:46"},"nodeType":"YulIf","src":"18338:61:46"},{"body":{"nodeType":"YulBlock","src":"18458:115:46","statements":[{"expression":{"arguments":[{"name":"ret","nodeType":"YulIdentifier","src":"18479:3:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18488:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"18493:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"18484:3:46"},"nodeType":"YulFunctionCall","src":"18484:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18472:6:46"},"nodeType":"YulFunctionCall","src":"18472:33:46"},"nodeType":"YulExpressionStatement","src":"18472:33:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18525:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"18528:4:46","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18518:6:46"},"nodeType":"YulFunctionCall","src":"18518:15:46"},"nodeType":"YulExpressionStatement","src":"18518:15:46"},{"expression":{"arguments":[{"name":"ret","nodeType":"YulIdentifier","src":"18553:3:46"},{"kind":"number","nodeType":"YulLiteral","src":"18558:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18546:6:46"},"nodeType":"YulFunctionCall","src":"18546:17:46"},"nodeType":"YulExpressionStatement","src":"18546:17:46"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"18414:18:46"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"18437:6:46"},{"name":"_1","nodeType":"YulIdentifier","src":"18445:2:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18434:2:46"},"nodeType":"YulFunctionCall","src":"18434:14:46"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18411:2:46"},"nodeType":"YulFunctionCall","src":"18411:38:46"},"nodeType":"YulIf","src":"18408:165:46"},{"nodeType":"YulVariableDeclaration","src":"18582:104:46","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18663:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"18674:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18659:3:46"},"nodeType":"YulFunctionCall","src":"18659:18:46"},{"name":"length","nodeType":"YulIdentifier","src":"18679:6:46"}],"functionName":{"name":"array_storeLengthForEncoding_array_struct_Endorsement_dyn_library","nodeType":"YulIdentifier","src":"18593:65:46"},"nodeType":"YulFunctionCall","src":"18593:93:46"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"18586:3:46","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"18736:121:46","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18757:3:46"},{"arguments":[{"name":"slotValue","nodeType":"YulIdentifier","src":"18766:9:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18781:3:46","type":"","value":"255"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"18777:3:46"},"nodeType":"YulFunctionCall","src":"18777:8:46"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18762:3:46"},"nodeType":"YulFunctionCall","src":"18762:24:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18750:6:46"},"nodeType":"YulFunctionCall","src":"18750:37:46"},"nodeType":"YulExpressionStatement","src":"18750:37:46"},{"nodeType":"YulAssignment","src":"18800:47:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18811:3:46"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18820:1:46","type":"","value":"5"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"18837:6:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18830:6:46"},"nodeType":"YulFunctionCall","src":"18830:14:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18823:6:46"},"nodeType":"YulFunctionCall","src":"18823:22:46"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"18816:3:46"},"nodeType":"YulFunctionCall","src":"18816:30:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18807:3:46"},"nodeType":"YulFunctionCall","src":"18807:40:46"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"18800:3:46"}]}]},"nodeType":"YulCase","src":"18729:128:46","value":{"kind":"number","nodeType":"YulLiteral","src":"18734:1:46","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"18873:308:46","statements":[{"nodeType":"YulVariableDeclaration","src":"18887:52:46","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"18932:6:46"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"18902:29:46"},"nodeType":"YulFunctionCall","src":"18902:37:46"},"variables":[{"name":"dataPos","nodeType":"YulTypedName","src":"18891:7:46","type":""}]},{"nodeType":"YulVariableDeclaration","src":"18952:10:46","value":{"kind":"number","nodeType":"YulLiteral","src":"18961:1:46","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"18956:1:46","type":""}]},{"body":{"nodeType":"YulBlock","src":"19029:111:46","statements":[{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19058:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"19063:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19054:3:46"},"nodeType":"YulFunctionCall","src":"19054:11:46"},{"arguments":[{"name":"dataPos","nodeType":"YulIdentifier","src":"19073:7:46"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"19067:5:46"},"nodeType":"YulFunctionCall","src":"19067:14:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19047:6:46"},"nodeType":"YulFunctionCall","src":"19047:35:46"},"nodeType":"YulExpressionStatement","src":"19047:35:46"},{"nodeType":"YulAssignment","src":"19099:27:46","value":{"arguments":[{"name":"dataPos","nodeType":"YulIdentifier","src":"19114:7:46"},{"name":"_2","nodeType":"YulIdentifier","src":"19123:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19110:3:46"},"nodeType":"YulFunctionCall","src":"19110:16:46"},"variableNames":[{"name":"dataPos","nodeType":"YulIdentifier","src":"19099:7:46"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18986:1:46"},{"name":"length","nodeType":"YulIdentifier","src":"18989:6:46"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18983:2:46"},"nodeType":"YulFunctionCall","src":"18983:13:46"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"18997:19:46","statements":[{"nodeType":"YulAssignment","src":"18999:15:46","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"19008:1:46"},{"name":"_1","nodeType":"YulIdentifier","src":"19011:2:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19004:3:46"},"nodeType":"YulFunctionCall","src":"19004:10:46"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"18999:1:46"}]}]},"pre":{"nodeType":"YulBlock","src":"18979:3:46","statements":[]},"src":"18975:165:46"},{"nodeType":"YulAssignment","src":"19153:18:46","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19164:3:46"},{"name":"i","nodeType":"YulIdentifier","src":"19169:1:46"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19160:3:46"},"nodeType":"YulFunctionCall","src":"19160:11:46"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"19153:3:46"}]}]},"nodeType":"YulCase","src":"18866:315:46","value":{"kind":"number","nodeType":"YulLiteral","src":"18871:1:46","type":"","value":"1"}}],"expression":{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"18702:18:46"},"nodeType":"YulSwitch","src":"18695:486:46"},{"nodeType":"YulAssignment","src":"19190:11:46","value":{"name":"ret","nodeType":"YulIdentifier","src":"19198:3:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19190:4:46"}]},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19226:6:46"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19238:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"19249:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19234:3:46"},"nodeType":"YulFunctionCall","src":"19234:18:46"}],"functionName":{"name":"abi_encode_bool","nodeType":"YulIdentifier","src":"19210:15:46"},"nodeType":"YulFunctionCall","src":"19210:43:46"},"nodeType":"YulExpressionStatement","src":"19210:43:46"}]},"name":"abi_encode_tuple_t_address_t_string_storage_t_bool__to_t_address_t_string_memory_ptr_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17965:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"17976:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17984:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17992:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18003:4:46","type":""}],"src":"17844:1415:46"},{"body":{"nodeType":"YulBlock","src":"19421:162:46","statements":[{"nodeType":"YulAssignment","src":"19431:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19443:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"19454:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19439:3:46"},"nodeType":"YulFunctionCall","src":"19439:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19431:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19473:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"19484:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19466:6:46"},"nodeType":"YulFunctionCall","src":"19466:25:46"},"nodeType":"YulExpressionStatement","src":"19466:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19511:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"19522:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19507:3:46"},"nodeType":"YulFunctionCall","src":"19507:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"19527:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19500:6:46"},"nodeType":"YulFunctionCall","src":"19500:34:46"},"nodeType":"YulExpressionStatement","src":"19500:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19554:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"19565:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19550:3:46"},"nodeType":"YulFunctionCall","src":"19550:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"19570:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19543:6:46"},"nodeType":"YulFunctionCall","src":"19543:34:46"},"nodeType":"YulExpressionStatement","src":"19543:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19374:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"19385:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19393:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19401:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19412:4:46","type":""}],"src":"19264:319:46"},{"body":{"nodeType":"YulBlock","src":"19745:162:46","statements":[{"nodeType":"YulAssignment","src":"19755:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19767:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"19778:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19763:3:46"},"nodeType":"YulFunctionCall","src":"19763:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19755:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19797:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"19808:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19790:6:46"},"nodeType":"YulFunctionCall","src":"19790:25:46"},"nodeType":"YulExpressionStatement","src":"19790:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19835:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"19846:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19831:3:46"},"nodeType":"YulFunctionCall","src":"19831:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"19851:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19824:6:46"},"nodeType":"YulFunctionCall","src":"19824:34:46"},"nodeType":"YulExpressionStatement","src":"19824:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19878:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"19889:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19874:3:46"},"nodeType":"YulFunctionCall","src":"19874:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"19894:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19867:6:46"},"nodeType":"YulFunctionCall","src":"19867:34:46"},"nodeType":"YulExpressionStatement","src":"19867:34:46"}]},"name":"abi_encode_tuple_t_uint256_t_bytes32_t_uint256__to_t_uint256_t_bytes32_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19698:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"19709:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19717:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19725:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19736:4:46","type":""}],"src":"19588:319:46"},{"body":{"nodeType":"YulBlock","src":"20069:162:46","statements":[{"nodeType":"YulAssignment","src":"20079:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20091:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"20102:2:46","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20087:3:46"},"nodeType":"YulFunctionCall","src":"20087:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20079:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20121:9:46"},{"name":"value0","nodeType":"YulIdentifier","src":"20132:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20114:6:46"},"nodeType":"YulFunctionCall","src":"20114:25:46"},"nodeType":"YulExpressionStatement","src":"20114:25:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20159:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"20170:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20155:3:46"},"nodeType":"YulFunctionCall","src":"20155:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"20175:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20148:6:46"},"nodeType":"YulFunctionCall","src":"20148:34:46"},"nodeType":"YulExpressionStatement","src":"20148:34:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20202:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"20213:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20198:3:46"},"nodeType":"YulFunctionCall","src":"20198:18:46"},{"name":"value2","nodeType":"YulIdentifier","src":"20218:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20191:6:46"},"nodeType":"YulFunctionCall","src":"20191:34:46"},"nodeType":"YulExpressionStatement","src":"20191:34:46"}]},"name":"abi_encode_tuple_t_bytes32_t_uint256_t_uint256__to_t_bytes32_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20022:9:46","type":""},{"name":"value2","nodeType":"YulTypedName","src":"20033:6:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20041:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20049:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20060:4:46","type":""}],"src":"19912:319:46"},{"body":{"nodeType":"YulBlock","src":"20372:130:46","statements":[{"nodeType":"YulAssignment","src":"20382:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20394:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"20405:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20390:3:46"},"nodeType":"YulFunctionCall","src":"20390:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20382:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20424:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20439:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"20447:4:46","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20435:3:46"},"nodeType":"YulFunctionCall","src":"20435:17:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20417:6:46"},"nodeType":"YulFunctionCall","src":"20417:36:46"},"nodeType":"YulExpressionStatement","src":"20417:36:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20473:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"20484:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20469:3:46"},"nodeType":"YulFunctionCall","src":"20469:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"20489:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20462:6:46"},"nodeType":"YulFunctionCall","src":"20462:34:46"},"nodeType":"YulExpressionStatement","src":"20462:34:46"}]},"name":"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20333:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20344:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20352:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20363:4:46","type":""}],"src":"20236:266:46"},{"body":{"nodeType":"YulBlock","src":"20644:130:46","statements":[{"nodeType":"YulAssignment","src":"20654:26:46","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20666:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"20677:2:46","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20662:3:46"},"nodeType":"YulFunctionCall","src":"20662:18:46"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20654:4:46"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20696:9:46"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20711:6:46"},{"kind":"number","nodeType":"YulLiteral","src":"20719:4:46","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"20707:3:46"},"nodeType":"YulFunctionCall","src":"20707:17:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20689:6:46"},"nodeType":"YulFunctionCall","src":"20689:36:46"},"nodeType":"YulExpressionStatement","src":"20689:36:46"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20745:9:46"},{"kind":"number","nodeType":"YulLiteral","src":"20756:2:46","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20741:3:46"},"nodeType":"YulFunctionCall","src":"20741:18:46"},{"name":"value1","nodeType":"YulIdentifier","src":"20761:6:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20734:6:46"},"nodeType":"YulFunctionCall","src":"20734:34:46"},"nodeType":"YulExpressionStatement","src":"20734:34:46"}]},"name":"abi_encode_tuple_t_rational_208_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20605:9:46","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20616:6:46","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20624:6:46","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20635:4:46","type":""}],"src":"20507:267:46"},{"body":{"nodeType":"YulBlock","src":"20811:95:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20828:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20835:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"20840:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"20831:3:46"},"nodeType":"YulFunctionCall","src":"20831:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20821:6:46"},"nodeType":"YulFunctionCall","src":"20821:31:46"},"nodeType":"YulExpressionStatement","src":"20821:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20868:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"20871:4:46","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20861:6:46"},"nodeType":"YulFunctionCall","src":"20861:15:46"},"nodeType":"YulExpressionStatement","src":"20861:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20892:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"20895:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"20885:6:46"},"nodeType":"YulFunctionCall","src":"20885:15:46"},"nodeType":"YulExpressionStatement","src":"20885:15:46"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"20779:127:46"},{"body":{"nodeType":"YulBlock","src":"20957:171:46","statements":[{"body":{"nodeType":"YulBlock","src":"20988:111:46","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21009:1:46","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21016:3:46","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"21021:10:46","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"21012:3:46"},"nodeType":"YulFunctionCall","src":"21012:20:46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21002:6:46"},"nodeType":"YulFunctionCall","src":"21002:31:46"},"nodeType":"YulExpressionStatement","src":"21002:31:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21053:1:46","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"21056:4:46","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21046:6:46"},"nodeType":"YulFunctionCall","src":"21046:15:46"},"nodeType":"YulExpressionStatement","src":"21046:15:46"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21081:1:46","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"21084:4:46","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"21074:6:46"},"nodeType":"YulFunctionCall","src":"21074:15:46"},"nodeType":"YulExpressionStatement","src":"21074:15:46"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"20977:1:46"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"20970:6:46"},"nodeType":"YulFunctionCall","src":"20970:9:46"},"nodeType":"YulIf","src":"20967:132:46"},{"nodeType":"YulAssignment","src":"21108:14:46","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"21117:1:46"},{"name":"y","nodeType":"YulIdentifier","src":"21120:1:46"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"21113:3:46"},"nodeType":"YulFunctionCall","src":"21113:9:46"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"21108:1:46"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"20942:1:46","type":""},{"name":"y","nodeType":"YulTypedName","src":"20945:1:46","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"20951:1:46","type":""}],"src":"20911:217:46"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_encode_bool(value, pos)\n    {\n        mstore(pos, iszero(iszero(value)))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_struct$_NodeStrengthScores_$19503_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := headStart\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function array_storeLengthForEncoding_array_struct_Endorsement_dyn_library(pos, length) -> updated_pos\n    {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n    function abi_encode_tuple_t_array$_t_struct$_Endorsement_$22865_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Endorsement_$22865_memory_ptr_$dyn_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, mload(_3))\n            mstore(add(pos, _1), mload(add(_3, _1)))\n            mstore(add(pos, _2), mload(add(_3, _2)))\n            pos := add(pos, 0x60)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function validator_revert_uint48(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_uint256t_uint256t_boolt_boolt_uint48(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let value := calldataload(add(headStart, 96))\n        validator_revert_bool(value)\n        value3 := value\n        let value_1 := calldataload(add(headStart, 128))\n        validator_revert_bool(value_1)\n        value4 := value_1\n        let value_2 := calldataload(add(headStart, 160))\n        validator_revert_uint48(value_2)\n        value5 := value_2\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_struct$_NodePointsInfo_$22875_memory_ptr__to_t_struct$_NodePointsInfo_$22875_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), mload(add(value0, 0x20)))\n        mstore(add(headStart, 0x40), mload(add(value0, 0x40)))\n        mstore(add(headStart, 0x60), mload(add(value0, 0x60)))\n    }\n    function abi_decode_tuple_t_bytes32t_uint48(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_uint48(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint256t_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_uint256t_uint256t_boolt_boolt_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let value := calldataload(add(headStart, 96))\n        validator_revert_bool(value)\n        value3 := value\n        let value_1 := calldataload(add(headStart, 128))\n        validator_revert_bool(value_1)\n        value4 := value_1\n        let value_2 := calldataload(add(headStart, 160))\n        validator_revert_bool(value_2)\n        value5 := value_2\n    }\n    function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint48(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint48(value)\n        value0 := value\n    }\n    function validator_revert_uint8(value)\n    {\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_bytes32t_uint256t_boolt_boolt_uint48(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_bool(value)\n        value2 := value\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_bool(value_1)\n        value3 := value_1\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_uint48(value_2)\n        value4 := value_2\n    }\n    function abi_decode_tuple_t_bytes32t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_struct$_NodeStrengthScores_$19503_calldata_ptr__to_t_struct$_NodeStrengthScores_$19503_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        mstore(headStart, calldataload(value0))\n        mstore(add(headStart, 0x20), calldataload(add(value0, 0x20)))\n        mstore(add(headStart, 0x40), calldataload(add(value0, 0x40)))\n        mstore(add(headStart, 0x60), calldataload(add(value0, 0x60)))\n        mstore(add(headStart, 0x80), calldataload(add(value0, 0x80)))\n        mstore(add(headStart, 0xa0), calldataload(add(value0, 0xa0)))\n        mstore(add(headStart, 0xc0), calldataload(add(value0, 0xc0)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_uint256_t_bytes32__to_t_uint256_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_uint48_t_uint48__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function allocate_memory_3235() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xa0)\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_tuple_t_array$_t_struct$_Token_$17547_memory_ptr_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let dst := allocate_memory(add(shl(5, _4), _1))\n        let dst_1 := dst\n        mstore(dst, _4)\n        dst := add(dst, _1)\n        let _5 := 0xa0\n        let srcEnd := add(add(_3, mul(_4, _5)), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _5) }\n        {\n            if slt(sub(dataEnd, src), _5)\n            {\n                let _6 := 0\n                revert(_6, _6)\n            }\n            let value := allocate_memory_3235()\n            mstore(value, mload(src))\n            let value_1 := mload(add(src, _1))\n            validator_revert_uint8(value_1)\n            mstore(add(value, _1), value_1)\n            let _7 := 64\n            let value_2 := mload(add(src, _7))\n            if iszero(eq(value_2, and(value_2, _2)))\n            {\n                let _8 := 0\n                revert(_8, _8)\n            }\n            mstore(add(value, _7), value_2)\n            let _9 := 96\n            mstore(add(value, _9), mload(add(src, _9)))\n            let _10 := 128\n            let value_3 := mload(add(src, _10))\n            validator_revert_uint48(value_3)\n            mstore(add(value, _10), value_3)\n            mstore(dst, value)\n            dst := add(dst, _1)\n        }\n        value0 := dst_1\n    }\n    function panic_error_0x31()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x31)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint48(x, y) -> sum\n    {\n        let _1 := 0xffffffffffff\n        sum := add(and(x, _1), and(y, _1))\n        if gt(sum, _1) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_uint48_t_uint48__to_t_uint48_t_uint48__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_decode_tuple_t_enum$_APP_SECURITY_$19455_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(lt(value, 4)) { revert(0, 0) }\n        value0 := value\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_bytes32_t_enum$_APP_SECURITY_$19455__to_t_bytes32_t_uint8__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        if iszero(lt(value1, 4))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(add(headStart, 32), value1)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_tuple_t_address_t_string_storage_t_bool__to_t_address_t_string_memory_ptr_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        let _1 := 32\n        mstore(add(headStart, _1), 96)\n        let ret := 0\n        let slotValue := sload(value1)\n        let length := ret\n        let _2 := 1\n        length := shr(_2, slotValue)\n        let outOfPlaceEncoding := and(slotValue, _2)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, _1))\n        {\n            mstore(ret, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(ret, 0x24)\n        }\n        let pos := array_storeLengthForEncoding_array_struct_Endorsement_dyn_library(add(headStart, 96), length)\n        switch outOfPlaceEncoding\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, shl(5, iszero(iszero(length))))\n        }\n        case 1 {\n            let dataPos := array_dataslot_string_storage(value1)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _1) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _2)\n            }\n            ret := add(pos, i)\n        }\n        tail := ret\n        abi_encode_bool(value2, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint256_t_bytes32_t_uint256__to_t_uint256_t_bytes32_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256_t_uint256__to_t_bytes32_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_rational_208_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), value1)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n}","id":46,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600436106101cc5760003560e01c806304646a49146101d15780630ab12e14146101ec5780631e13ed7a1461020e5780633167798014610231578063381142211461023957806342c89f521461025957806344532be21461026c57806344bb58f71461028c57806347e5dcbc146102ac5780634a0c4a42146102cc5780634f77fe12146102d45780634fd4e1b8146102f457806351d2a6e3146103145780635cbc2ffb146103345780635cfdd4701461033c5780635dd3a4f11461035c5780636e054773146103a25780636fb44f5f146103c257806372584102146103e25780637ba53285146103f557806380ea3de1146104085780639a116641146104285780639ab17c9b146104485780639fcb2b411461045b578063a06db7dc1461047b578063a11bd9fb14610483578063acdb9f05146104a3578063b90a30ea146104b6578063c996c624146104be578063ccd4baca146104d1578063d6418b8a146104e4578063d76c3973146104ec578063e8786a58146104ff578063e9f9739d1461051f578063ee9419cf14610532578063f1a962ac14610552578063fcaf9a761461055a578063fcd190c41461057a575b600080fd5b6101d961059a565b6040519081526020015b60405180910390f35b8180156101f857600080fd5b5061020c610207366004613910565b6105ad565b005b61022161021c36600461393a565b610630565b60405190151581526020016101e3565b610221610667565b81801561024557600080fd5b5061020c61025436600461396a565b610682565b6101d9610267366004613910565b61077f565b61027f61027a366004613910565b61081b565b6040516101e39190613982565b61029f61029a366004613910565b6108b4565b6040516101e391906139db565b8180156102b857600080fd5b5061020c6102c7366004613a28565b610a9a565b6101d9610abf565b8180156102e057600080fd5b5061020c6102ef366004613910565b610ad2565b81801561030057600080fd5b5061022161030f366004613a59565b610b4d565b81801561032057600080fd5b5061020c61032f366004613910565b610f7e565b6101d9610ff9565b61034f61034a366004613910565b61100c565b6040516101e39190613ac0565b61036f61036a366004613910565b611080565b6040516101e391908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b8180156103ae57600080fd5b506102216103bd366004613af8565b6112bf565b8180156103ce57600080fd5b5061020c6103dd366004613910565b6113eb565b6101d96103f0366004613b1d565b61143a565b6101d9610403366004613910565b6114fb565b81801561041457600080fd5b5061020c610423366004613910565b61152e565b81801561043457600080fd5b5061020c610443366004613b3f565b61157d565b6101d9610456366004613b1d565b61171d565b81801561046757600080fd5b5061020c61047636600461393a565b611782565b6101d96117ba565b81801561048f57600080fd5b5061020c61049e366004613b98565b6117d5565b6101d96104b1366004613bc4565b611849565b61022161186f565b6101d96104cc366004613bf6565b611885565b6102216104df366004613b1d565b61197a565b61034f611ac4565b6101d96104fa366004613910565b611b1f565b81801561050b57600080fd5b5061022161051a366004613c13565b611b8b565b6101d961052d366004613910565b611d42565b81801561053e57600080fd5b5061020c61054d366004613c72565b611e5d565b6101d9612190565b81801561056657600080fd5b5061020c61057536600461393a565b6121a3565b81801561058657600080fd5b5061020c610595366004613a28565b6122be565b60006105a461230e565b600d0154905090565b60006105b7612332565b6000838152602082905260409020549091506105ee5760405163018f58af60e31b8152600481018390526024015b60405180910390fd5b600082815260208290526040902060020154156106215760405163e2cf34b760e01b8152600481018390526024016105e5565b61062c8260016121a3565b5050565b6000811561064057506000610661565b600061064a61230e565b600085815260019190910160205260409020541190505b92915050565b600061067161230e565b60170154610100900460ff16919050565b600061068c61230e565b60016000908152600380830160209081526040808420873590556002845280842091870135909155908252808220818601359055600482528082206060860135905560058252808220608086013590556006825280822060a08601359055600782529081902060c08501359055519091507fc91e5ded81b3894187855cc79c29a7eaa6b412d30cfa1658fe313129291db24290610773908490600060e082019050823582526020830135602083015260408301356040830152606083013560608301526080830135608083015260a083013560a083015260c083013560c083015292915050565b60405180910390a15050565b60008061078a61230e565b600f810154604051633404591760e21b8152600481018690529192506000916001600160a01b039091169063d011645c90602401602060405180830381865afa1580156107db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ff9190613c9e565b60ff166000908152600390920160205250604090205492915050565b606061082561230e565b6010016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156108a95783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610859565b505050509050919050565b606060006108c061230e565b6000848152601382016020526040812080549293509190816001600160401b038111156108ef576108ef613cbb565b604051908082528060200260200182016040528015610918578160200160208202803683370190505b5090506000805b83811015610a8e57600085828154811061093b5761093b613cd1565b600091825260209091200154600f88015460405162491fcf60e11b8152600481018390529192506001600160a01b03169062923f9e90602401602060405180830381865afa158015610991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b59190613ce7565b6109bf5750610a7c565b600f87015460405163692b26ff60e01b8152600481018390526000916001600160a01b03169063692b26ff90602401602060405180830381865afa158015610a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2f9190613d04565b90506001600160a01b03811615610a795780858581518110610a5357610a53613cd1565b6001600160a01b039092166020928302919091019091015283610a7581613d37565b9450505b50505b80610a8681613d37565b91505061091f565b50815295945050505050565b80610aa361230e565b60170180549115156101000261ff001990921691909117905550565b6000610ac961230e565b60150154905090565b6000610adc61230e565b90508060160154821115610b0a5760168101546040516324588df560e11b81526105e5918491600401613d50565b7fc0d3753bc89284345726d88cd5c82025ebedac4070cdbc551a0ba27b5180a637816007015483604051610b3f929190613d50565b60405180910390a160070155565b600080610b5861230e565b90506000610b64612332565b601783015490915060ff1615610b8d57604051637bd6341960e01b815260040160405180910390fd5b600089815260208290526040902054610bbc5760405163018f58af60e31b8152600481018a90526024016105e5565b50600f81015460405162491fcf60e11b8152600481018990526001600160a01b039091169062923f9e90602401602060405180830381865afa158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a9190613ce7565b1580610ca85750600f810154604051631975e30960e11b81526001600160a01b03909116906332ebc61290610c659033908b90600401613d5e565b602060405180830381865afa158015610c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca69190613ce7565b155b15610cc6576040516326a2091b60e21b815260040160405180910390fd5b6000878152601082016020526040812080548203610cf757604051632469757560e11b815260040160405180910390fd5b600089815260118401602090815260408083208d8452909152902054815481101580610d4657508a828281548110610d3157610d31613cd1565b90600052602060002090600302016000015414155b15610d6457604051632469757560e11b815260040160405180910390fd5b83600d0154828281548110610d7b57610d7b613cd1565b906000526020600020906003020160020154610d979190613d77565b84600e0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190613d8a565b1015610e3357898b60405163564f58b360e01b81526004016105e5929190613d50565b6000828281548110610e4757610e47613cd1565b906000526020600020906003020160010154905089600014610e695789610e6b565b805b935080841115610e8e57604051632c578e4560e21b815260040160405180910390fd5b808403610ea657610ea1858c8e85612356565b610edf565b83838381548110610eb957610eb9613cd1565b90600052602060002090600302016001016000828254610ed99190613da3565b90915550505b505050600081610eef848c612535565b610ef99190613da3565b9050610f06838b8361255e565b888a60008051602061412983398151915284604051610f2791815260200190565b60405180910390a3851580610f395750865b15610f4957859350505050610f74565b8260070154811015610f6c57610f62838b898989612591565b9350505050610f74565b600193505050505b9695505050505050565b6000610f8861230e565b90508060070154821015610fb6576007810154604051635ab4737760e01b81526105e5918491600401613d50565b7ff4c290bd7ee941689bccbabc9dbd567d76db3be9871c7aa182dabf6737f7fc70816016015483604051610feb929190613d50565b60405180910390a160160155565b600061100361230e565b60160154905090565b606061101661230e565b601301600083815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561107457602002820191906000526020600020905b815481526020019060010190808311611060575b50505050509050919050565b6110ab6040518060800160405280600081526020016000815260200160008152602001600081525090565b60006110b561230e565b600f810154604051633404591760e21b8152600481018690529192506000916001600160a01b039091169063d011645c90602401602060405180830381865afa158015611106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112a9190613c9e565b60ff811660009081526003840160209081526040808320548752878352601086018252808320600e8701548251639cbe5efd60e01b8152925195965090946001600160a01b0390911692639cbe5efd92600480820193918290030181865afa15801561119a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111be9190613d8a565b905060005b825481101561128b578281815481106111de576111de613cd1565b906000526020600020906003020160010154866020018181516112019190613d77565b905250600d850154835484908390811061121d5761121d613cd1565b9060005260206000209060030201600201546112399190613d77565b8210156112795782818154811061125257611252613cd1565b906000526020600020906003020160010154866060018181516112759190613d77565b9052505b8061128381613d37565b9150506111c3565b50602085015185511161129f5760006112b0565b602085015185516112b09190613da3565b60408601525092949350505050565b6000806112ca612332565b90507fb5b8d618af1ffb8d5bcc4bd23f445ba34ed08d7a16d1e1b5411cfbe7913e590060006112f761230e565b6000878152602085905260409020549091506113295760405163018f58af60e31b8152600481018790526024016105e5565b600086815260038301602052604090205460ff168015611350576000945050505050610661565b600061135c83896127f9565b60008981526020879052604081206002015491925090158015919082906113a4575060008a8152600287016020526040902061139790612c2e565b6001600160d01b03166001145b905084600701548310156113cd576113bf858b86848d612591565b975050505050505050610661565b6113db85888c858589612c76565b5060019998505050505050505050565b60006113f561230e565b90507fff24fd32f78a666774cb7265d538935a108bff58375ccca2d01c4c9b66ac22a581601501548360405161142c929190613d50565b60405180910390a160150155565b60008061144561230e565b60008581526010820160205260408120805492935091900361146c57600092505050610661565b600085815260118301602090815260408083208784529091529020548154811015806114bb5750848282815481106114a6576114a6613cd1565b90600052602060002090600302016000015414155b156114cc5760009350505050610661565b8181815481106114de576114de613cd1565b906000526020600020906003020160010154935050505092915050565b600061151f61150861230e565b600084815260189190910160205260409020612c2e565b6001600160d01b031692915050565b600061153861230e565b90507f98eaabfe135a9c40c420208962bf81e7926b4d6df3e23502164c0554b7b3522481600d01548360405161156f929190613d50565b60405180910390a1600d0155565b6000611587612332565b9050600061159361230e565b90506115a381838a8a8a8a612e7a565b60006115b082898b6131cb565b905061163882898b8a8587600e0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116339190613d8a565b61327b565b600087611645848c612535565b61164f9190613d77565b905061165c838b8361255e565b826007015481106116755761167583858c89898c612c76565b600f83015460405163692b26ff60e01b8152600481018b90526000916001600160a01b03169063692b26ff90602401602060405180830381865afa1580156116c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e59190613d04565b9050898b600080516020614109833981519152838c604051611708929190613d5e565b60405180910390a35050505050505050505050565b60008061172861230e565b90504383111561174f578243604051637f07449b60e01b81526004016105e5929190613d50565b61177161175b846133f8565b600086815260188401602052604090209061342f565b6001600160d01b0316949350505050565b61178c82826121a3565b816000805160206140e9833981519152826040516117ae911515815260200190565b60405180910390a25050565b60006117c461230e565b6006015465ffffffffffff16919050565b60006117df61230e565b60068101546040519192507f55c7a79c45e9a972909cd640f9336a14a84adbaf756211f16267001854110191916118209165ffffffffffff16908590613db6565b60405180910390a1600601805465ffffffffffff191665ffffffffffff92909216919091179055565b600061185361230e565b60ff909216600090815260039290920160205250604090205490565b600061187961230e565b6017015460ff16919050565b60008061189061230e565b600f810154604051636696377f60e11b81526001600160a01b0386811660048301529293506000929091169063cd2c6efe90602401600060405180830381865afa1580156118e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261190a9190810190613e27565b90506000805b82518110156119715783600301600084838151811061193157611931613cd1565b60200260200101516020015160ff1660ff168152602001908152602001600020548261195d9190613d77565b91508061196981613d37565b915050611910565b50949350505050565b60008061198561230e565b6000858152601082016020526040812080549293509190036119ac57600092505050610661565b600085815260118301602090815260408083208784529091529020548154811015806119fb5750848282815481106119e6576119e6613cd1565b90600052602060002090600302016000015414155b15611a0c5760009350505050610661565b82600d0154828281548110611a2357611a23613cd1565b906000526020600020906003020160020154611a3f9190613d77565b83600e0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab89190613d8a565b10159695505050505050565b6060611ace61230e565b805460408051602080840282018101909252828152929190830182828015611b1557602002820191906000526020600020905b815481526020019060010190808311611b01575b5050505050905090565b600080611b2a61230e565b60008481526010820160205260408120919250805b825481101561197157828181548110611b5a57611b5a613cd1565b90600052602060002090600302016001015482611b779190613d77565b915080611b8381613d37565b915050611b3f565b600080611b9661230e565b90506000611ba2612332565b600089815260208290526040902054909150611bd45760405163018f58af60e31b8152600481018990526024016105e5565b506000868152601082016020526040812080548203611c0657604051632469757560e11b815260040160405180910390fd5b600088815260118401602090815260408083208c8452909152902054815481101580611c55575089828281548110611c4057611c40613cd1565b90600052602060002090600302016000015414155b15611c7357604051632469757560e11b815260040160405180910390fd5b818181548110611c8557611c85613cd1565b9060005260206000209060030201600101549250611ca5848a8c84612356565b5050600081611cb4848b612535565b611cbe9190613da3565b9050611ccb838a8361255e565b878960008051602061412983398151915284604051611cec91815260200190565b60405180910390a3851580611cfe5750865b15611d0e57859350505050611d39565b8260070154811015611d3157611d27838a898989612591565b9350505050611d39565b600193505050505b95945050505050565b600080611d4d61230e565b600f810154604051633404591760e21b8152600481018690529192506000916001600160a01b039091169063d011645c90602401602060405180830381865afa158015611d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc29190613c9e565b60ff811660009081526003840160209081526040808320548884526010870190925282209293509190805b8254811015611e3957828181548110611e0857611e08613cd1565b90600052602060002090600302016001015482611e259190613d77565b915080611e3181613d37565b915050611ded565b50808311611e48576000611e52565b611e528184613da3565b979650505050505050565b6000611e6761230e565b6017810154909150610100900460ff1615611e9557604051633dbff3b560e01b815260040160405180910390fd5b600e81015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa158015611ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f059190613d8a565b600085815260108401602090815260408083206011870183528184208a85529092528220548154939450909290919015801590611f425750825482105b8015611f70575087838381548110611f5c57611f5c613cd1565b906000526020600020906003020160000154145b90508015612020576000838381548110611f8c57611f8c613cd1565b906000526020600020906003020160010154905086848481548110611fb357611fb3613cd1565b90600052602060002090600302016001018190555084848481548110611fdb57611fdb613cd1565b90600052602060002090600302016002018190555061201a868a89846120018b8f612535565b61200b9190613da3565b6120159190613d77565b61255e565b506120ea565b60408051606081018252898152602080820189815292820187815286546001818101895560008981529390932093516003909102909301928355925182820155915160029091015583546120749190613da3565b600088815260118701602090815260408083208c8452825280832093909355601388018152918120805460018181018355828452938320018a9055908a9052546120be9190613da3565b600089815260148701602090815260408083208b84529091529020556120ea85898861200b8383612535565b600f85015460405163692b26ff60e01b8152600481018990526000916001600160a01b03169063692b26ff90602401602060405180830381865afa158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190613d04565b90508789600080516020614109833981519152838a60405161217d929190613d5e565b60405180910390a3505050505050505050565b600061219a61230e565b60070154905090565b60006121ad61230e565b90508115612291576000838152600182810160205260408220546121d19190613da3565b82549091506000906121e590600190613da3565b905060008360000182815481106121fe576121fe613cd1565b906000526020600020015490508084600001848154811061222157612221613cd1565b600091825260209091200155612238836001613d77565b6000828152600186016020526040902055835484908061225a5761225a613f30565b6001900381819060005260206000200160009055905583600101600087815260200190815260200160002060009055505050505050565b80546001808201835560008381526020808220909301869055835495815292019052604090209190915550565b60006122c861230e565b60178101805460ff19168415159081179091556040519081529091507ffd9f033c3b3a54e30cfe5bf2bc66dea3bac111d66ecc2c03a2bcc1c5ccdd025090602001610773565b7fc1a7bcdc0c77e8c77ade4541d1777901ab96ca598d164d89afa5c8dfbfc4430090565b7fb6909058bd527140b8d55a44344c5e42f1f148f1b3b16df7641882df8dd7290090565b60008381526010850160205260408120805490919061237790600190613da3565b90508083146123ff57600082828154811061239457612394613cd1565b90600052602060002090600302019050808385815481106123b7576123b7613cd1565b60009182526020808320845460039093020191825560018085015490830155600293840154939091019290925587815260118901825260408082209354825292909152208390555b8180548061240f5761240f613f30565b6000828152602080822060036000199094019384020182815560018181018490556002909101839055929093558781526011890183526040808220888352845280822082905560138a01845280822060148b0185528183208a84529094528120548354909261247d91613da3565b90508082146124e557600083828154811061249a5761249a613cd1565b90600052602060002001549050808484815481106124ba576124ba613cd1565b600091825260208083209091019290925589815260148c018252604080822093825292909152208290555b828054806124f5576124f5613f30565b6000828152602080822083016000199081018390559092019092559781526014909901875250506040808820968852959094525050509082209190915550565b6000818152601883016020526040812061254e90612c2e565b6001600160d01b03169392505050565b61258a61256a436133f8565b612573836134d6565b60008581526018870160205260409020919061350a565b5050505050565b600080841580156125b15750600086815260018801602052604090205415155b9050806125e8576125c38660006121a3565b6040516000815286906000805160206140e98339815191529060200160405180910390a25b600086815260048801602052604090205465ffffffffffff1615801561260b5750835b156126925760008681526004880160205260409020805465ffffffffffff191665ffffffffffff85811691909117909155600688015487917f502689eeffd57ae8470e1d86a4a8cd293a44bfbbd2429cb375da3d901a3dd80f918691612672911682613f46565b604051612680929190613db6565b60405180910390a26001915050611d39565b600687015460008781526004890160205260409020546126bd9165ffffffffffff9081169116613f46565b65ffffffffffff168365ffffffffffff161180156126d85750835b156127ec57600b870154604051635949432560e11b8152600481018890526001600160a01b039091169063b292864a90602401602060405180830381865afa158015612728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274c9190613f6c565b60008781526009890160205260409020805460ff1916600183600381111561277657612776613f8d565b0217905550600b870154604051630399a2ab60e21b81526001600160a01b0390911690630e668aac906127b0908990600090600401613fa3565b600060405180830381600087803b1580156127ca57600080fd5b505af11580156127de573d6000803e3d6000fd5b505050506000915050611d39565b5060019695505050505050565b6000818152601383016020526040812081805b8254811015612c2357600083828154811061282957612829613cd1565b6000918252602082200154600f89015460405162491fcf60e11b8152600481018390529193506001600160a01b03169062923f9e90602401602060405180830381865afa15801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a29190613ce7565b905080612b60576000828152601089016020908152604080832060118c0183528184208b8552909252909120548154811015806129025750888282815481106128ed576128ed613cd1565b90600052602060002090600302016000015414155b156129245783896040516333b11f8360e01b81526004016105e5929190613d50565b600082828154811061293857612938613cd1565b6000918252602082206001600390920201810154855490935061295b9190613da3565b9050808314612a145783818154811061297657612976613cd1565b906000526020600020906003020184848154811061299657612996613cd1565b9060005260206000209060030201600082015481600001556001820154816001015560028201548160020155905050828c601101600088815260200190815260200160002060008686815481106129ef576129ef613cd1565b9060005260206000209060030201600001548152602001908152602001600020819055505b83805480612a2457612a24613f30565b60008281526020808220600360001990940193840201828155600181810184905560029091018390559290935588815260118f01835260408082208f83529093529182208290558a54612a779190613da3565b9050808814612aef5760008a8281548110612a9457612a94613cd1565b90600052602060002001549050808b8a81548110612ab457612ab4613cd1565b9060005260206000200181905550888e60140160008f8152602001908152602001600020600083815260200190815260200160002081905550505b89805480612aff57612aff613f30565b6000828152602080822083016000199081018390559092019092558d825260148f01815260408083208a8452825280832092909255905184815288918e91600080516020614129833981519152910160405180910390a35050505050612c1c565b6000828152601089016020908152604080832060118c0183528184208b855290925290912054815481101580612bb9575088828281548110612ba457612ba4613cd1565b90600052602060002090600302016000015414155b15612bdb5783896040516333b11f8360e01b81526004016105e5929190613d50565b818181548110612bed57612bed613cd1565b90600052602060002090600302016001015486612c0a9190613d77565b955084612c1681613d37565b95505050505b505061280c565b61197186868461255e565b80546000908015612c6c57612c5683612c48600184613da3565b600091825260209091200190565b54600160301b90046001600160d01b0316612c6f565b60005b9392505050565b82612da3576000848152602086815260408083204260029091015560018089018054808301825590855292909320909101869055600b8801549051630399a2ab60e21b81526001600160a01b0390911691630e668aac91612cdb918891600401613fa3565b600060405180830381600087803b158015612cf557600080fd5b505af1158015612d09573d6000803e3d6000fd5b505050506000612d367f5830f0e95c01712d916c34d9e2fa42e9f749b325b67bce7382d70bb99c62350090565b6000868152600382016020908152604080832054918a905291829020915192935087927f181c8615e49dc4eaed218e1d225e4a34a0fb364fc70601a191573daa19d57eda92612d95926001600160a01b03169160019182019190613fd5565b60405180910390a250612e23565b81612e2357600b860154600085815260098801602052604090819020549051630399a2ab60e21b81526001600160a01b0390921691630e668aac91612df091889160ff1690600401613fa3565b600060405180830381600087803b158015612e0a57600080fd5b505af1158015612e1e573d6000803e3d6000fd5b505050505b600081158015612e425750600085815260018801602052604090205415155b90508015612e5557612e55856001611782565b50505060009182525060049092016020525060409020805465ffffffffffff19169055565b601786015460ff1615612ea057604051637bd6341960e01b815260040160405180910390fd5b600084815260208690526040902054612ecf5760405163018f58af60e31b8152600481018590526024016105e5565b8015612ef157604051633126f1ab60e01b8152600481018590526024016105e5565b821580612efc575081155b15612f1a57604051632c578e4560e21b815260040160405180910390fd5b600f86015460405162491fcf60e11b8152600481018590526001600160a01b039091169062923f9e90602401602060405180830381865afa158015612f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f879190613ce7565b15806130055750600f860154604051631975e30960e11b81526001600160a01b03909116906332ebc61290612fc29033908790600401613d5e565b602060405180830381865afa158015612fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130039190613ce7565b155b15613023576040516326a2091b60e21b815260040160405180910390fd5b600f860154604051633404591760e21b8152600481018590526000916001600160a01b03169063d011645c90602401602060405180830381865afa15801561306f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130939190613c9e565b60ff81166000908152600389016020526040812054919250036130c957604051632e8e471b60e21b815260040160405180910390fd5b60ff81166000908152600388016020526040812054906130e98987613525565b905060008183116130fb576000613105565b6131058284613da3565b90508086111561312e5786818760405163099ee8a360e11b81526004016105e59392919061409a565b600061313b8b898b6131cb565b60158c015490915061314d8883613d77565b11156131765787898c601501546040516387b212fd60e01b81526004016105e59392919061409a565b60006131828c8b612535565b60168d01549091506131948983613d77565b11156131bd5789818d60160154604051633430a84360e11b81526004016105e59392919061409a565b505050505050505050505050565b60008281526010840160205260408120805482036131ed576000915050612c6f565b6000848152601186016020908152604080832086845290915290205481548110158061323c57508382828154811061322757613227613cd1565b90600052602060002090600302016000015414155b1561324c57600092505050612c6f565b81818154811061325e5761325e613cd1565b906000526020600020906003020160010154925050509392505050565b811561332057600085815260118701602090815260408083208784529091529020546132a78484613d77565b600087815260108901602052604090208054839081106132c9576132c9613cd1565b90600052602060002090600302016001018190555081876010016000888152602001908152602001600020828154811061330557613305613cd1565b906000526020600020906003020160020181905550506133f0565b60008581526010870160208181526040808420815160608101835289815280840189815292810187815282546001818101855584895286892093516003909202909301908155935184830155516002909301929092559389905291905290546133899190613da3565b600086815260118801602090815260408083208884528252808320939093556013890181529181208054600181810183558284529383200188905590869052546133d39190613da3565b600085815260148801602090815260408083208984529091529020555b505050505050565b600065ffffffffffff82111561342b576040516306dfcc6560e41b815260306004820152602481018390526044016105e5565b5090565b81546000908181600581111561348e57600061344a84613584565b6134549085613da3565b60008881526020902090915081015465ffffffffffff908116908716101561347e5780915061348c565b613489816001613d77565b92505b505b600061349c8787858561366c565b905080156134c9576134b387612c48600184613da3565b54600160301b90046001600160d01b0316611e52565b6000979650505050505050565b60006001600160d01b0382111561342b576040516306dfcc6560e41b815260d06004820152602481018390526044016105e5565b6000806135188585856136d1565b915091505b935093915050565b6000818152601083016020526040812081805b82548110156119715782818154811061355357613553613cd1565b906000526020600020906003020160010154826135709190613d77565b91508061357c81613d37565b915050613538565b60008160000361359657506000919050565b600060016135a38461384b565b901c6001901b905060018184816135bc576135bc6140b0565b048201901c905060018184816135d4576135d46140b0565b048201901c905060018184816135ec576135ec6140b0565b048201901c90506001818481613604576136046140b0565b048201901c9050600181848161361c5761361c6140b0565b048201901c90506001818481613634576136346140b0565b048201901c9050600181848161364c5761364c6140b0565b048201901c9050612c6f81828581613666576136666140b0565b046138df565b60005b818310156136c657600061368384846138f5565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156136b2578092506136c0565b6136bd816001613d77565b93505b5061366f565b50805b949350505050565b8254600090819080156137f05760006136ef87612c48600185613da3565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b03166020840152919250908716101561374357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff80881691160361378f578461376688612c48600186613da3565b80546001600160d01b0392909216600160301b0265ffffffffffff9092169190911790556137e0565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b60200151925083915061351d9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161351d565b600080608083901c1561386057608092831c92015b604083901c1561387257604092831c92015b602083901c1561388457602092831c92015b601083901c1561389657601092831c92015b600883901c156138a857600892831c92015b600483901c156138ba57600492831c92015b600283901c156138cc57600292831c92015b600183901c156106615760010192915050565b60008183106138ee5781612c6f565b5090919050565b600061390460028484186140c6565b612c6f90848416613d77565b60006020828403121561392257600080fd5b5035919050565b801515811461393757600080fd5b50565b6000806040838503121561394d57600080fd5b82359150602083013561395f81613929565b809150509250929050565b600060e0828403121561397c57600080fd5b50919050565b602080825282518282018190526000919060409081850190868401855b828110156139ce578151805185528681015187860152850151858501526060909301929085019060010161399f565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613a1c5783516001600160a01b0316835292840192918401916001016139f7565b50909695505050505050565b600060208284031215613a3a57600080fd5b8135612c6f81613929565b65ffffffffffff8116811461393757600080fd5b60008060008060008060c08789031215613a7257600080fd5b8635955060208701359450604087013593506060870135613a9281613929565b92506080870135613aa281613929565b915060a0870135613ab281613a45565b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015613a1c57835183529284019291840191600101613adc565b60008060408385031215613b0b57600080fd5b82359150602083013561395f81613a45565b60008060408385031215613b3057600080fd5b50508035926020909101359150565b60008060008060008060c08789031215613b5857600080fd5b8635955060208701359450604087013593506060870135613b7881613929565b92506080870135613b8881613929565b915060a0870135613ab281613929565b600060208284031215613baa57600080fd5b8135612c6f81613a45565b60ff8116811461393757600080fd5b600060208284031215613bd657600080fd5b8135612c6f81613bb5565b6001600160a01b038116811461393757600080fd5b600060208284031215613c0857600080fd5b8135612c6f81613be1565b600080600080600060a08688031215613c2b57600080fd5b85359450602086013593506040860135613c4481613929565b92506060860135613c5481613929565b91506080860135613c6481613a45565b809150509295509295909350565b600080600060608486031215613c8757600080fd5b505081359360208301359350604090920135919050565b600060208284031215613cb057600080fd5b8151612c6f81613bb5565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215613cf957600080fd5b8151612c6f81613929565b600060208284031215613d1657600080fd5b8151612c6f81613be1565b634e487b7160e01b600052601160045260246000fd5b600060018201613d4957613d49613d21565b5060010190565b918252602082015260400190565b6001600160a01b03929092168252602082015260400190565b8082018082111561066157610661613d21565b600060208284031215613d9c57600080fd5b5051919050565b8181038181111561066157610661613d21565b65ffffffffffff92831681529116602082015260400190565b60405160a081016001600160401b0381118282101715613df157613df1613cbb565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613e1f57613e1f613cbb565b604052919050565b60006020808385031215613e3a57600080fd5b82516001600160401b0380821115613e5157600080fd5b818501915085601f830112613e6557600080fd5b815181811115613e7757613e77613cbb565b613e85848260051b01613df7565b81815260a09182028401850191858201919089841115613ea457600080fd5b948601945b83861015613f235780868b031215613ec15760008081fd5b613ec9613dcf565b8651815287870151613eda81613bb5565b818901526040878101518781168114613ef35760008081fd5b9082015260608781015190820152608080880151613f1081613a45565b9082015283529485019491860191613ea9565b5098975050505050505050565b634e487b7160e01b600052603160045260246000fd5b65ffffffffffff818116838216019080821115613f6557613f65613d21565b5092915050565b600060208284031215613f7e57600080fd5b815160048110612c6f57600080fd5b634e487b7160e01b600052602160045260246000fd5b8281526040810160048310613fc857634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b60018060a01b0384168152600060206060818401526000855481600182811c91508083168061400557607f831692505b858310810361402257634e487b7160e01b85526022600452602485fd5b6060880183905260808801818015614041576001811461405757614082565b60ff198616825284151560051b82019650614082565b60008c81526020902060005b8681101561407c57815484820152908501908901614063565b83019750505b505050508615156040870152509092506136c9915050565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826140e357634e487b7160e01b600052601260045260246000fd5b50049056fe39ed358ca65699fee4083beb84f3d91ce2201bb0c89859317fc5be02231609ed1193ced031b3229da69fab9691642274e1ea2625dfce9967135e6d5e6029d22075a2c0f7478dc6b5e01e316a07fc6b72d32d90ca051d898b5d198300d1a7c036a2646970667358221220d3472b7206dd15f96c27abb83db70cea59eb40259fb2c93010f96bf95812c4e164736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4646A49 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xAB12E14 EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x1E13ED7A EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x31677980 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x38114221 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x42C89F52 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x44532BE2 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x44BB58F7 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x47E5DCBC EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x4A0C4A42 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x4F77FE12 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x4FD4E1B8 EQ PUSH2 0x2F4 JUMPI DUP1 PUSH4 0x51D2A6E3 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x5CBC2FFB EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x5CFDD470 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0x5DD3A4F1 EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0x6E054773 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x6FB44F5F EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x72584102 EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x7BA53285 EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0x80EA3DE1 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x9A116641 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x9AB17C9B EQ PUSH2 0x448 JUMPI DUP1 PUSH4 0x9FCB2B41 EQ PUSH2 0x45B JUMPI DUP1 PUSH4 0xA06DB7DC EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xA11BD9FB EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0xACDB9F05 EQ PUSH2 0x4A3 JUMPI DUP1 PUSH4 0xB90A30EA EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xC996C624 EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0xCCD4BACA EQ PUSH2 0x4D1 JUMPI DUP1 PUSH4 0xD6418B8A EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0xD76C3973 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0xE8786A58 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0xE9F9739D EQ PUSH2 0x51F JUMPI DUP1 PUSH4 0xEE9419CF EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xF1A962AC EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0xFCAF9A76 EQ PUSH2 0x55A JUMPI DUP1 PUSH4 0xFCD190C4 EQ PUSH2 0x57A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D9 PUSH2 0x59A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x221 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x393A JUMP JUMPDEST PUSH2 0x630 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E3 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x667 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x396A JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x77F JUMP JUMPDEST PUSH2 0x27F PUSH2 0x27A CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x81B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E3 SWAP2 SWAP1 PUSH2 0x3982 JUMP JUMPDEST PUSH2 0x29F PUSH2 0x29A CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x8B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E3 SWAP2 SWAP1 PUSH2 0x39DB JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A28 JUMP JUMPDEST PUSH2 0xA9A JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0xABF JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0xAD2 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x221 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x3A59 JUMP JUMPDEST PUSH2 0xB4D JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0xF7E JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0xFF9 JUMP JUMPDEST PUSH2 0x34F PUSH2 0x34A CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x100C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E3 SWAP2 SWAP1 PUSH2 0x3AC0 JUMP JUMPDEST PUSH2 0x36F PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x1080 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E3 SWAP2 SWAP1 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 DUP3 ADD MLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x221 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x3AF8 JUMP JUMPDEST PUSH2 0x12BF JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x13EB JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1D JUMP JUMPDEST PUSH2 0x143A JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x14FB JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x423 CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x152E JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x443 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B3F JUMP JUMPDEST PUSH2 0x157D JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x456 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1D JUMP JUMPDEST PUSH2 0x171D JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x476 CALLDATASIZE PUSH1 0x4 PUSH2 0x393A JUMP JUMPDEST PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x17BA JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x48F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x3B98 JUMP JUMPDEST PUSH2 0x17D5 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BC4 JUMP JUMPDEST PUSH2 0x1849 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x186F JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x4CC CALLDATASIZE PUSH1 0x4 PUSH2 0x3BF6 JUMP JUMPDEST PUSH2 0x1885 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1D JUMP JUMPDEST PUSH2 0x197A JUMP JUMPDEST PUSH2 0x34F PUSH2 0x1AC4 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x4FA CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x1B1F JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x221 PUSH2 0x51A CALLDATASIZE PUSH1 0x4 PUSH2 0x3C13 JUMP JUMPDEST PUSH2 0x1B8B JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x52D CALLDATASIZE PUSH1 0x4 PUSH2 0x3910 JUMP JUMPDEST PUSH2 0x1D42 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x54D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C72 JUMP JUMPDEST PUSH2 0x1E5D JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x2190 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x575 CALLDATASIZE PUSH1 0x4 PUSH2 0x393A JUMP JUMPDEST PUSH2 0x21A3 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x595 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A28 JUMP JUMPDEST PUSH2 0x22BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A4 PUSH2 0x230E JUMP JUMPDEST PUSH1 0xD ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B7 PUSH2 0x2332 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x5EE JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD ISZERO PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2CF34B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x62C DUP3 PUSH1 0x1 PUSH2 0x21A3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x640 JUMPI POP PUSH1 0x0 PUSH2 0x661 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64A PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD GT SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x671 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 ADD SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68C PUSH2 0x230E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP8 CALLDATALOAD SWAP1 SSTORE PUSH1 0x2 DUP5 MSTORE DUP1 DUP5 KECCAK256 SWAP2 DUP8 ADD CALLDATALOAD SWAP1 SWAP2 SSTORE SWAP1 DUP3 MSTORE DUP1 DUP3 KECCAK256 DUP2 DUP7 ADD CALLDATALOAD SWAP1 SSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP3 KECCAK256 PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP1 SSTORE PUSH1 0x5 DUP3 MSTORE DUP1 DUP3 KECCAK256 PUSH1 0x80 DUP7 ADD CALLDATALOAD SWAP1 SSTORE PUSH1 0x6 DUP3 MSTORE DUP1 DUP3 KECCAK256 PUSH1 0xA0 DUP7 ADD CALLDATALOAD SWAP1 SSTORE PUSH1 0x7 DUP3 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0xC0 DUP6 ADD CALLDATALOAD SWAP1 SSTORE MLOAD SWAP1 SWAP2 POP PUSH32 0xC91E5DED81B3894187855CC79C29A7EAA6B412D30CFA1658FE313129291DB242 SWAP1 PUSH2 0x773 SWAP1 DUP5 SWAP1 PUSH1 0x0 PUSH1 0xE0 DUP3 ADD SWAP1 POP DUP3 CALLDATALOAD DUP3 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD CALLDATALOAD PUSH1 0xC0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x78A PUSH2 0x230E JUMP JUMPDEST PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x34045917 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD011645C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FF SWAP2 SWAP1 PUSH2 0x3C9E JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x825 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x10 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x8A9 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x859 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x8C0 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x13 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x8EF JUMPI PUSH2 0x8EF PUSH2 0x3CBB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x918 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA8E JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x93B JUMPI PUSH2 0x93B PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xF DUP9 ADD SLOAD PUSH1 0x40 MLOAD PUSH3 0x491FCF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x923F9E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x991 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9B5 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST PUSH2 0x9BF JUMPI POP PUSH2 0xA7C JUMP JUMPDEST PUSH1 0xF DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x692B26FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x692B26FF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA0B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA2F SWAP2 SWAP1 PUSH2 0x3D04 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xA79 JUMPI DUP1 DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA53 JUMPI PUSH2 0xA53 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP4 PUSH2 0xA75 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP POP JUMPDEST DUP1 PUSH2 0xA86 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x91F JUMP JUMPDEST POP DUP2 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xAA3 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 ADD DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH2 0x100 MUL PUSH2 0xFF00 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC9 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x15 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xADC PUSH2 0x230E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x16 ADD SLOAD DUP3 GT ISZERO PUSH2 0xB0A JUMPI PUSH1 0x16 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x24588DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x5E5 SWAP2 DUP5 SWAP2 PUSH1 0x4 ADD PUSH2 0x3D50 JUMP JUMPDEST PUSH32 0xC0D3753BC89284345726D88CD5C82025EBEDAC4070CDBC551A0BA27B5180A637 DUP2 PUSH1 0x7 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0xB3F SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x7 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB58 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB64 PUSH2 0x2332 JUMP JUMPDEST PUSH1 0x17 DUP4 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0xB8D JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BD63419 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBBC JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST POP PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH3 0x491FCF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH3 0x923F9E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC06 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2A SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST ISZERO DUP1 PUSH2 0xCA8 JUMPI POP PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x1975E309 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x32EBC612 SWAP1 PUSH2 0xC65 SWAP1 CALLER SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x3D5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA6 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xCC6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x26A2091B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SUB PUSH2 0xCF7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x24697575 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x11 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0xD46 JUMPI POP DUP11 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xD31 JUMPI PUSH2 0xD31 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0xD64 JUMPI PUSH1 0x40 MLOAD PUSH4 0x24697575 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xD ADD SLOAD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xD7B JUMPI PUSH2 0xD7B PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0xD97 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST DUP5 PUSH1 0xE ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9CBE5EFD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE10 SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST LT ISZERO PUSH2 0xE33 JUMPI DUP10 DUP12 PUSH1 0x40 MLOAD PUSH4 0x564F58B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE47 JUMPI PUSH2 0xE47 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP1 POP DUP10 PUSH1 0x0 EQ PUSH2 0xE69 JUMPI DUP10 PUSH2 0xE6B JUMP JUMPDEST DUP1 JUMPDEST SWAP4 POP DUP1 DUP5 GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x40 MLOAD PUSH4 0x2C578E45 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 SUB PUSH2 0xEA6 JUMPI PUSH2 0xEA1 DUP6 DUP13 DUP15 DUP6 PUSH2 0x2356 JUMP JUMPDEST PUSH2 0xEDF JUMP JUMPDEST DUP4 DUP4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xEB9 JUMPI PUSH2 0xEB9 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xED9 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST POP POP POP PUSH1 0x0 DUP2 PUSH2 0xEEF DUP5 DUP13 PUSH2 0x2535 JUMP JUMPDEST PUSH2 0xEF9 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP PUSH2 0xF06 DUP4 DUP12 DUP4 PUSH2 0x255E JUMP JUMPDEST DUP9 DUP11 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4129 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD PUSH2 0xF27 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP6 ISZERO DUP1 PUSH2 0xF39 JUMPI POP DUP7 JUMPDEST ISZERO PUSH2 0xF49 JUMPI DUP6 SWAP4 POP POP POP POP PUSH2 0xF74 JUMP JUMPDEST DUP3 PUSH1 0x7 ADD SLOAD DUP2 LT ISZERO PUSH2 0xF6C JUMPI PUSH2 0xF62 DUP4 DUP12 DUP10 DUP10 DUP10 PUSH2 0x2591 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x1 SWAP4 POP POP POP POP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF88 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x7 ADD SLOAD DUP3 LT ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x7 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x5AB47377 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x5E5 SWAP2 DUP5 SWAP2 PUSH1 0x4 ADD PUSH2 0x3D50 JUMP JUMPDEST PUSH32 0xF4C290BD7EE941689BCCBABC9DBD567D76DB3BE9871C7AA182DABF6737F7FC70 DUP2 PUSH1 0x16 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0xFEB SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x16 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1003 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x16 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1016 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x13 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1074 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1060 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x10AB PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B5 PUSH2 0x230E JUMP JUMPDEST PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x34045917 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD011645C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1106 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x112A SWAP2 SWAP1 PUSH2 0x3C9E JUMP JUMPDEST PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP8 MSTORE DUP8 DUP4 MSTORE PUSH1 0x10 DUP7 ADD DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0xE DUP8 ADD SLOAD DUP3 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 MLOAD SWAP6 SWAP7 POP SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 PUSH4 0x9CBE5EFD SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x119A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11BE SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x128B JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x11DE JUMPI PUSH2 0x11DE PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP7 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x1201 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0xD DUP6 ADD SLOAD DUP4 SLOAD DUP5 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x121D JUMPI PUSH2 0x121D PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0x1239 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x1279 JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1252 JUMPI PUSH2 0x1252 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP7 PUSH1 0x60 ADD DUP2 DUP2 MLOAD PUSH2 0x1275 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST DUP1 PUSH2 0x1283 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x11C3 JUMP JUMPDEST POP PUSH1 0x20 DUP6 ADD MLOAD DUP6 MLOAD GT PUSH2 0x129F JUMPI PUSH1 0x0 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD DUP6 MLOAD PUSH2 0x12B0 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE POP SWAP3 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12CA PUSH2 0x2332 JUMP JUMPDEST SWAP1 POP PUSH32 0xB5B8D618AF1FFB8D5BCC4BD23F445BA34ED08D7A16D1E1B5411CFBE7913E5900 PUSH1 0x0 PUSH2 0x12F7 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP6 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x1329 JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1350 JUMPI PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x661 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x135C DUP4 DUP10 PUSH2 0x27F9 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP2 SWAP3 POP SWAP1 ISZERO DUP1 ISZERO SWAP2 SWAP1 DUP3 SWAP1 PUSH2 0x13A4 JUMPI POP PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x2 DUP8 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x1397 SWAP1 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x1 EQ JUMPDEST SWAP1 POP DUP5 PUSH1 0x7 ADD SLOAD DUP4 LT ISZERO PUSH2 0x13CD JUMPI PUSH2 0x13BF DUP6 DUP12 DUP7 DUP5 DUP14 PUSH2 0x2591 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x661 JUMP JUMPDEST PUSH2 0x13DB DUP6 DUP9 DUP13 DUP6 DUP6 DUP10 PUSH2 0x2C76 JUMP JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F5 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH32 0xFF24FD32F78A666774CB7265D538935A108BFF58375CCCA2D01C4C9B66AC22A5 DUP2 PUSH1 0x15 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0x142C SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x15 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1445 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 SUB PUSH2 0x146C JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x661 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x11 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x14BB JUMPI POP DUP5 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14A6 JUMPI PUSH2 0x14A6 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x14CC JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x661 JUMP JUMPDEST DUP2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x14DE JUMPI PUSH2 0x14DE PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x151F PUSH2 0x1508 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x18 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1538 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH32 0x98EAABFE135A9C40C420208962BF81E7926B4D6DF3E23502164C0554B7B35224 DUP2 PUSH1 0xD ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0x156F SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0xD ADD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1587 PUSH2 0x2332 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1593 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH2 0x15A3 DUP2 DUP4 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2E7A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15B0 DUP3 DUP10 DUP12 PUSH2 0x31CB JUMP JUMPDEST SWAP1 POP PUSH2 0x1638 DUP3 DUP10 DUP12 DUP11 DUP6 DUP8 PUSH1 0xE ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9CBE5EFD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x160F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1633 SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST PUSH2 0x327B JUMP JUMPDEST PUSH1 0x0 DUP8 PUSH2 0x1645 DUP5 DUP13 PUSH2 0x2535 JUMP JUMPDEST PUSH2 0x164F SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP1 POP PUSH2 0x165C DUP4 DUP12 DUP4 PUSH2 0x255E JUMP JUMPDEST DUP3 PUSH1 0x7 ADD SLOAD DUP2 LT PUSH2 0x1675 JUMPI PUSH2 0x1675 DUP4 DUP6 DUP13 DUP10 DUP10 DUP13 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0xF DUP4 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x692B26FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x692B26FF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16E5 SWAP2 SWAP1 PUSH2 0x3D04 JUMP JUMPDEST SWAP1 POP DUP10 DUP12 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4109 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 DUP13 PUSH1 0x40 MLOAD PUSH2 0x1708 SWAP3 SWAP2 SWAP1 PUSH2 0x3D5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1728 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP NUMBER DUP4 GT ISZERO PUSH2 0x174F JUMPI DUP3 NUMBER PUSH1 0x40 MLOAD PUSH4 0x7F07449B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x1771 PUSH2 0x175B DUP5 PUSH2 0x33F8 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x18 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 PUSH2 0x342F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x178C DUP3 DUP3 PUSH2 0x21A3 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x40E9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH1 0x40 MLOAD PUSH2 0x17AE SWAP2 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17C4 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x6 ADD SLOAD PUSH6 0xFFFFFFFFFFFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17DF PUSH2 0x230E JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD PUSH1 0x40 MLOAD SWAP2 SWAP3 POP PUSH32 0x55C7A79C45E9A972909CD640F9336A14A84ADBAF756211F16267001854110191 SWAP2 PUSH2 0x1820 SWAP2 PUSH6 0xFFFFFFFFFFFF AND SWAP1 DUP6 SWAP1 PUSH2 0x3DB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x6 ADD DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND PUSH6 0xFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1853 PUSH2 0x230E JUMP JUMPDEST PUSH1 0xFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1879 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 ADD SLOAD PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1890 PUSH2 0x230E JUMP JUMPDEST PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x6696377F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH4 0xCD2C6EFE SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x190A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E27 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1971 JUMPI DUP4 PUSH1 0x3 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1931 JUMPI PUSH2 0x1931 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 PUSH2 0x195D SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x1969 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1910 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1985 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 SUB PUSH2 0x19AC JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x661 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x11 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x19FB JUMPI POP DUP5 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x19E6 JUMPI PUSH2 0x19E6 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x1A0C JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x661 JUMP JUMPDEST DUP3 PUSH1 0xD ADD SLOAD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1A23 JUMPI PUSH2 0x1A23 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0x1A3F SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST DUP4 PUSH1 0xE ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9CBE5EFD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AB8 SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST LT ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1ACE PUSH2 0x230E JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP5 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE SWAP3 SWAP2 SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B15 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1B01 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B2A PUSH2 0x230E JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP3 POP DUP1 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x1971 JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1B5A JUMPI PUSH2 0x1B5A PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0x1B77 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x1B83 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1B3F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B96 PUSH2 0x230E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1BA2 PUSH2 0x2332 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x1BD4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x10 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SUB PUSH2 0x1C06 JUMPI PUSH1 0x40 MLOAD PUSH4 0x24697575 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x11 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x1C55 JUMPI POP DUP10 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1C40 JUMPI PUSH2 0x1C40 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x1C73 JUMPI PUSH1 0x40 MLOAD PUSH4 0x24697575 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1C85 JUMPI PUSH2 0x1C85 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP3 POP PUSH2 0x1CA5 DUP5 DUP11 DUP13 DUP5 PUSH2 0x2356 JUMP JUMPDEST POP POP PUSH1 0x0 DUP2 PUSH2 0x1CB4 DUP5 DUP12 PUSH2 0x2535 JUMP JUMPDEST PUSH2 0x1CBE SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1CCB DUP4 DUP11 DUP4 PUSH2 0x255E JUMP JUMPDEST DUP8 DUP10 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4129 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD PUSH2 0x1CEC SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP6 ISZERO DUP1 PUSH2 0x1CFE JUMPI POP DUP7 JUMPDEST ISZERO PUSH2 0x1D0E JUMPI DUP6 SWAP4 POP POP POP POP PUSH2 0x1D39 JUMP JUMPDEST DUP3 PUSH1 0x7 ADD SLOAD DUP2 LT ISZERO PUSH2 0x1D31 JUMPI PUSH2 0x1D27 DUP4 DUP11 DUP10 DUP10 DUP10 PUSH2 0x2591 JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x1 SWAP4 POP POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D4D PUSH2 0x230E JUMP JUMPDEST PUSH1 0xF DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x34045917 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD011645C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DC2 SWAP2 SWAP1 PUSH2 0x3C9E JUMP JUMPDEST PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP9 DUP5 MSTORE PUSH1 0x10 DUP8 ADD SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SWAP3 SWAP4 POP SWAP2 SWAP1 DUP1 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x1E39 JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1E08 JUMPI PUSH2 0x1E08 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0x1E25 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x1E31 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1DED JUMP JUMPDEST POP DUP1 DUP4 GT PUSH2 0x1E48 JUMPI PUSH1 0x0 PUSH2 0x1E52 JUMP JUMPDEST PUSH2 0x1E52 DUP2 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E67 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1E95 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3DBFF3B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xE DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x9CBE5EFD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x9CBE5EFD SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F05 SWAP2 SWAP1 PUSH2 0x3D8A JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x10 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x11 DUP8 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP11 DUP6 MSTORE SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD DUP2 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F42 JUMPI POP DUP3 SLOAD DUP3 LT JUMPDEST DUP1 ISZERO PUSH2 0x1F70 JUMPI POP DUP8 DUP4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1F5C JUMPI PUSH2 0x1F5C PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2020 JUMPI PUSH1 0x0 DUP4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1F8C JUMPI PUSH2 0x1F8C PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP1 POP DUP7 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1FB3 JUMPI PUSH2 0x1FB3 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP5 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1FDB JUMPI PUSH2 0x1FDB PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x201A DUP7 DUP11 DUP10 DUP5 PUSH2 0x2001 DUP12 DUP16 PUSH2 0x2535 JUMP JUMPDEST PUSH2 0x200B SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH2 0x2015 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST PUSH2 0x255E JUMP JUMPDEST POP PUSH2 0x20EA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP10 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP10 DUP2 MSTORE SWAP3 DUP3 ADD DUP8 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE SWAP4 SWAP1 SWAP4 KECCAK256 SWAP4 MLOAD PUSH1 0x3 SWAP1 SWAP2 MUL SWAP1 SWAP4 ADD SWAP3 DUP4 SSTORE SWAP3 MLOAD DUP3 DUP3 ADD SSTORE SWAP2 MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE DUP4 SLOAD PUSH2 0x2074 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x11 DUP8 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x13 DUP9 ADD DUP2 MSTORE SWAP2 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE DUP3 DUP5 MSTORE SWAP4 DUP4 KECCAK256 ADD DUP11 SWAP1 SSTORE SWAP1 DUP11 SWAP1 MSTORE SLOAD PUSH2 0x20BE SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x14 DUP8 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE PUSH2 0x20EA DUP6 DUP10 DUP9 PUSH2 0x200B DUP4 DUP4 PUSH2 0x2535 JUMP JUMPDEST PUSH1 0xF DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x692B26FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x692B26FF SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2136 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x215A SWAP2 SWAP1 PUSH2 0x3D04 JUMP JUMPDEST SWAP1 POP DUP8 DUP10 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4109 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 DUP11 PUSH1 0x40 MLOAD PUSH2 0x217D SWAP3 SWAP2 SWAP1 PUSH2 0x3D5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x219A PUSH2 0x230E JUMP JUMPDEST PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21AD PUSH2 0x230E JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x2291 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 DUP3 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD PUSH2 0x21D1 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x21E5 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x21FE JUMPI PUSH2 0x21FE PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2221 JUMPI PUSH2 0x2221 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH2 0x2238 DUP4 PUSH1 0x1 PUSH2 0x3D77 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP7 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP4 SLOAD DUP5 SWAP1 DUP1 PUSH2 0x225A JUMPI PUSH2 0x225A PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE POP POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP7 SWAP1 SSTORE DUP4 SLOAD SWAP6 DUP2 MSTORE SWAP3 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22C8 PUSH2 0x230E JUMP JUMPDEST PUSH1 0x17 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH32 0xFD9F033C3B3A54E30CFE5BF2BC66DEA3BAC111D66ECC2C03A2BCC1C5CCDD0250 SWAP1 PUSH1 0x20 ADD PUSH2 0x773 JUMP JUMPDEST PUSH32 0xC1A7BCDC0C77E8C77ADE4541D1777901AB96CA598D164D89AFA5C8DFBFC44300 SWAP1 JUMP JUMPDEST PUSH32 0xB6909058BD527140B8D55A44344C5E42F1F148F1B3B16DF7641882DF8DD72900 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x10 DUP6 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2377 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 EQ PUSH2 0x23FF JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2394 JUMPI PUSH2 0x2394 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP1 POP DUP1 DUP4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x23B7 JUMPI PUSH2 0x23B7 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 DUP5 SLOAD PUSH1 0x3 SWAP1 SWAP4 MUL ADD SWAP2 DUP3 SSTORE PUSH1 0x1 DUP1 DUP6 ADD SLOAD SWAP1 DUP4 ADD SSTORE PUSH1 0x2 SWAP4 DUP5 ADD SLOAD SWAP4 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP8 DUP2 MSTORE PUSH1 0x11 DUP10 ADD DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SLOAD DUP3 MSTORE SWAP3 SWAP1 SWAP2 MSTORE KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP2 DUP1 SLOAD DUP1 PUSH2 0x240F JUMPI PUSH2 0x240F PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 PUSH1 0x3 PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 DUP5 MUL ADD DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD DUP4 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SSTORE DUP8 DUP2 MSTORE PUSH1 0x11 DUP10 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP4 MSTORE DUP5 MSTORE DUP1 DUP3 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x13 DUP11 ADD DUP5 MSTORE DUP1 DUP3 KECCAK256 PUSH1 0x14 DUP12 ADD DUP6 MSTORE DUP2 DUP4 KECCAK256 DUP11 DUP5 MSTORE SWAP1 SWAP5 MSTORE DUP2 KECCAK256 SLOAD DUP4 SLOAD SWAP1 SWAP3 PUSH2 0x247D SWAP2 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x24E5 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x249A JUMPI PUSH2 0x249A PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x24BA JUMPI PUSH2 0x24BA PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP10 DUP2 MSTORE PUSH1 0x14 DUP13 ADD DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 DUP3 MSTORE SWAP3 SWAP1 SWAP2 MSTORE KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST DUP3 DUP1 SLOAD DUP1 PUSH2 0x24F5 JUMPI PUSH2 0x24F5 PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE SWAP8 DUP2 MSTORE PUSH1 0x14 SWAP1 SWAP10 ADD DUP8 MSTORE POP POP PUSH1 0x40 DUP1 DUP9 KECCAK256 SWAP7 DUP9 MSTORE SWAP6 SWAP1 SWAP5 MSTORE POP POP POP SWAP1 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x18 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x254E SWAP1 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x258A PUSH2 0x256A NUMBER PUSH2 0x33F8 JUMP JUMPDEST PUSH2 0x2573 DUP4 PUSH2 0x34D6 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x18 DUP8 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 PUSH2 0x350A JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 ISZERO DUP1 ISZERO PUSH2 0x25B1 JUMPI POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x1 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO JUMPDEST SWAP1 POP DUP1 PUSH2 0x25E8 JUMPI PUSH2 0x25C3 DUP7 PUSH1 0x0 PUSH2 0x21A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE DUP7 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x40E9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND ISZERO DUP1 ISZERO PUSH2 0x260B JUMPI POP DUP4 JUMPDEST ISZERO PUSH2 0x2692 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND PUSH6 0xFFFFFFFFFFFF DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 DUP9 ADD SLOAD DUP8 SWAP2 PUSH32 0x502689EEFFD57AE8470E1D86A4A8CD293A44BFBBD2429CB375DA3D901A3DD80F SWAP2 DUP7 SWAP2 PUSH2 0x2672 SWAP2 AND DUP3 PUSH2 0x3F46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2680 SWAP3 SWAP2 SWAP1 PUSH2 0x3DB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP2 POP POP PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x6 DUP8 ADD SLOAD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x26BD SWAP2 PUSH6 0xFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND PUSH2 0x3F46 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND DUP4 PUSH6 0xFFFFFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x26D8 JUMPI POP DUP4 JUMPDEST ISZERO PUSH2 0x27EC JUMPI PUSH1 0xB DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x59494325 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xB292864A SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2728 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x274C SWAP2 SWAP1 PUSH2 0x3F6C JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x9 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2776 JUMPI PUSH2 0x2776 PUSH2 0x3F8D JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0xB DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x399A2AB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xE668AAC SWAP1 PUSH2 0x27B0 SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x3FA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 SWAP2 POP POP PUSH2 0x1D39 JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x2C23 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2829 JUMPI PUSH2 0x2829 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0xF DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH3 0x491FCF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x923F9E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x287E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28A2 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2B60 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x10 DUP10 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x11 DUP13 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP12 DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x2902 JUMPI POP DUP9 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x28ED JUMPI PUSH2 0x28ED PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x2924 JUMPI DUP4 DUP10 PUSH1 0x40 MLOAD PUSH4 0x33B11F83 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2938 JUMPI PUSH2 0x2938 PUSH2 0x3CD1 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x3 SWAP1 SWAP3 MUL ADD DUP2 ADD SLOAD DUP6 SLOAD SWAP1 SWAP4 POP PUSH2 0x295B SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 EQ PUSH2 0x2A14 JUMPI DUP4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2976 JUMPI PUSH2 0x2976 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD DUP5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2996 JUMPI PUSH2 0x2996 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 DUP3 ADD SLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP2 PUSH1 0x2 ADD SSTORE SWAP1 POP POP DUP3 DUP13 PUSH1 0x11 ADD PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x29EF JUMPI PUSH2 0x29EF PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMPDEST DUP4 DUP1 SLOAD DUP1 PUSH2 0x2A24 JUMPI PUSH2 0x2A24 PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 PUSH1 0x3 PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 DUP5 MUL ADD DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD DUP4 SWAP1 SSTORE SWAP3 SWAP1 SWAP4 SSTORE DUP9 DUP2 MSTORE PUSH1 0x11 DUP16 ADD DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP16 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 DUP3 KECCAK256 DUP3 SWAP1 SSTORE DUP11 SLOAD PUSH2 0x2A77 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP9 EQ PUSH2 0x2AEF JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2A94 JUMPI PUSH2 0x2A94 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP12 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x2AB4 JUMPI PUSH2 0x2AB4 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP9 DUP15 PUSH1 0x14 ADD PUSH1 0x0 DUP16 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP10 DUP1 SLOAD DUP1 PUSH2 0x2AFF JUMPI PUSH2 0x2AFF PUSH2 0x3F30 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE DUP14 DUP3 MSTORE PUSH1 0x14 DUP16 ADD DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP11 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE DUP9 SWAP2 DUP15 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4129 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP PUSH2 0x2C1C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x10 DUP10 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x11 DUP13 ADD DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP12 DUP6 MSTORE SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x2BB9 JUMPI POP DUP9 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2BA4 JUMPI PUSH2 0x2BA4 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x2BDB JUMPI DUP4 DUP10 PUSH1 0x40 MLOAD PUSH4 0x33B11F83 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP3 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST DUP2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2BED JUMPI PUSH2 0x2BED PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP7 PUSH2 0x2C0A SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP6 POP DUP5 PUSH2 0x2C16 DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP6 POP POP POP POP JUMPDEST POP POP PUSH2 0x280C JUMP JUMPDEST PUSH2 0x1971 DUP7 DUP7 DUP5 PUSH2 0x255E JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x2C6C JUMPI PUSH2 0x2C56 DUP4 PUSH2 0x2C48 PUSH1 0x1 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH2 0x2C6F JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x2DA3 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 TIMESTAMP PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH1 0x1 DUP1 DUP10 ADD DUP1 SLOAD DUP1 DUP4 ADD DUP3 SSTORE SWAP1 DUP6 MSTORE SWAP3 SWAP1 SWAP4 KECCAK256 SWAP1 SWAP2 ADD DUP7 SWAP1 SSTORE PUSH1 0xB DUP9 ADD SLOAD SWAP1 MLOAD PUSH4 0x399A2AB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xE668AAC SWAP2 PUSH2 0x2CDB SWAP2 DUP9 SWAP2 PUSH1 0x4 ADD PUSH2 0x3FA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x2D36 PUSH32 0x5830F0E95C01712D916C34D9E2FA42E9F749B325B67BCE7382D70BB99C623500 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP2 DUP11 SWAP1 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP2 MLOAD SWAP3 SWAP4 POP DUP8 SWAP3 PUSH32 0x181C8615E49DC4EAED218E1D225E4A34A0FB364FC70601A191573DAA19D57EDA SWAP3 PUSH2 0x2D95 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH1 0x1 SWAP2 DUP3 ADD SWAP2 SWAP1 PUSH2 0x3FD5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x2E23 JUMP JUMPDEST DUP2 PUSH2 0x2E23 JUMPI PUSH1 0xB DUP7 ADD SLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH4 0x399A2AB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE668AAC SWAP2 PUSH2 0x2DF0 SWAP2 DUP9 SWAP2 PUSH1 0xFF AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3FA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E1E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x2E42 JUMPI POP PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2E55 JUMPI PUSH2 0x2E55 DUP6 PUSH1 0x1 PUSH2 0x1782 JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE POP PUSH1 0x4 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH6 0xFFFFFFFFFFFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x17 DUP7 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2EA0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BD63419 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2ECF JUMPI PUSH1 0x40 MLOAD PUSH4 0x18F58AF PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EF1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3126F1AB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x5E5 JUMP JUMPDEST DUP3 ISZERO DUP1 PUSH2 0x2EFC JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2F1A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2C578E45 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xF DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH3 0x491FCF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH3 0x923F9E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F87 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST ISZERO DUP1 PUSH2 0x3005 JUMPI POP PUSH1 0xF DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x1975E309 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x32EBC612 SWAP1 PUSH2 0x2FC2 SWAP1 CALLER SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3D5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3003 SWAP2 SWAP1 PUSH2 0x3CE7 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x3023 JUMPI PUSH1 0x40 MLOAD PUSH4 0x26A2091B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xF DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x34045917 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD011645C SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x306F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3093 SWAP2 SWAP1 PUSH2 0x3C9E JUMP JUMPDEST PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SUB PUSH2 0x30C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E8E471B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP9 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x30E9 DUP10 DUP8 PUSH2 0x3525 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 GT PUSH2 0x30FB JUMPI PUSH1 0x0 PUSH2 0x3105 JUMP JUMPDEST PUSH2 0x3105 DUP3 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 GT ISZERO PUSH2 0x312E JUMPI DUP7 DUP2 DUP8 PUSH1 0x40 MLOAD PUSH4 0x99EE8A3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x409A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x313B DUP12 DUP10 DUP12 PUSH2 0x31CB JUMP JUMPDEST PUSH1 0x15 DUP13 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x314D DUP9 DUP4 PUSH2 0x3D77 JUMP JUMPDEST GT ISZERO PUSH2 0x3176 JUMPI DUP8 DUP10 DUP13 PUSH1 0x15 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x87B212FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x409A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3182 DUP13 DUP12 PUSH2 0x2535 JUMP JUMPDEST PUSH1 0x16 DUP14 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x3194 DUP10 DUP4 PUSH2 0x3D77 JUMP JUMPDEST GT ISZERO PUSH2 0x31BD JUMPI DUP10 DUP2 DUP14 PUSH1 0x16 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x3430A843 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x409A JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x10 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SUB PUSH2 0x31ED JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2C6F JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x11 DUP7 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x323C JUMPI POP DUP4 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3227 JUMPI PUSH2 0x3227 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD SLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x324C JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x2C6F JUMP JUMPDEST DUP2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x325E JUMPI PUSH2 0x325E PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3320 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x11 DUP8 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x32A7 DUP5 DUP5 PUSH2 0x3D77 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x10 DUP10 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 DUP2 LT PUSH2 0x32C9 JUMPI PUSH2 0x32C9 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP2 DUP8 PUSH1 0x10 ADD PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3305 JUMPI PUSH2 0x3305 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP POP PUSH2 0x33F0 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x10 DUP8 ADD PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP10 DUP2 MSTORE DUP1 DUP5 ADD DUP10 DUP2 MSTORE SWAP3 DUP2 ADD DUP8 DUP2 MSTORE DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE DUP5 DUP10 MSTORE DUP7 DUP10 KECCAK256 SWAP4 MLOAD PUSH1 0x3 SWAP1 SWAP3 MUL SWAP1 SWAP4 ADD SWAP1 DUP2 SSTORE SWAP4 MLOAD DUP5 DUP4 ADD SSTORE MLOAD PUSH1 0x2 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP4 DUP10 SWAP1 MSTORE SWAP2 SWAP1 MSTORE SWAP1 SLOAD PUSH2 0x3389 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x11 DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x13 DUP10 ADD DUP2 MSTORE SWAP2 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE DUP3 DUP5 MSTORE SWAP4 DUP4 KECCAK256 ADD DUP9 SWAP1 SSTORE SWAP1 DUP7 SWAP1 MSTORE SLOAD PUSH2 0x33D3 SWAP2 SWAP1 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x14 DUP9 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x342B JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x30 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x5E5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x348E JUMPI PUSH1 0x0 PUSH2 0x344A DUP5 PUSH2 0x3584 JUMP JUMPDEST PUSH2 0x3454 SWAP1 DUP6 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 SWAP2 POP DUP2 ADD SLOAD PUSH6 0xFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP8 AND LT ISZERO PUSH2 0x347E JUMPI DUP1 SWAP2 POP PUSH2 0x348C JUMP JUMPDEST PUSH2 0x3489 DUP2 PUSH1 0x1 PUSH2 0x3D77 JUMP JUMPDEST SWAP3 POP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x349C DUP8 DUP8 DUP6 DUP6 PUSH2 0x366C JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x34C9 JUMPI PUSH2 0x34B3 DUP8 PUSH2 0x2C48 PUSH1 0x1 DUP5 PUSH2 0x3DA3 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x30 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x0 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB DUP3 GT ISZERO PUSH2 0x342B JUMPI PUSH1 0x40 MLOAD PUSH4 0x6DFCC65 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0xD0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x5E5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3518 DUP6 DUP6 DUP6 PUSH2 0x36D1 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x10 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP1 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x1971 JUMPI DUP3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3553 JUMPI PUSH2 0x3553 PUSH2 0x3CD1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0x3570 SWAP2 SWAP1 PUSH2 0x3D77 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x357C DUP2 PUSH2 0x3D37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3538 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SUB PUSH2 0x3596 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x35A3 DUP5 PUSH2 0x384B JUMP JUMPDEST SWAP1 SHR PUSH1 0x1 SWAP1 SHL SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x35BC JUMPI PUSH2 0x35BC PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x35D4 JUMPI PUSH2 0x35D4 PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x35EC JUMPI PUSH2 0x35EC PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x3604 JUMPI PUSH2 0x3604 PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x361C JUMPI PUSH2 0x361C PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x3634 JUMPI PUSH2 0x3634 PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP5 DUP2 PUSH2 0x364C JUMPI PUSH2 0x364C PUSH2 0x40B0 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH2 0x2C6F DUP2 DUP3 DUP6 DUP2 PUSH2 0x3666 JUMPI PUSH2 0x3666 PUSH2 0x40B0 JUMP JUMPDEST DIV PUSH2 0x38DF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x36C6 JUMPI PUSH1 0x0 PUSH2 0x3683 DUP5 DUP5 PUSH2 0x38F5 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH6 0xFFFFFFFFFFFF DUP7 AND SWAP1 DUP3 ADD SLOAD PUSH6 0xFFFFFFFFFFFF AND GT ISZERO PUSH2 0x36B2 JUMPI DUP1 SWAP3 POP PUSH2 0x36C0 JUMP JUMPDEST PUSH2 0x36BD DUP2 PUSH1 0x1 PUSH2 0x3D77 JUMP JUMPDEST SWAP4 POP JUMPDEST POP PUSH2 0x366F JUMP JUMPDEST POP DUP1 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 ISZERO PUSH2 0x37F0 JUMPI PUSH1 0x0 PUSH2 0x36EF DUP8 PUSH2 0x2C48 PUSH1 0x1 DUP6 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP1 SLOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP8 AND LT ISZERO PUSH2 0x3743 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2520601D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH6 0xFFFFFFFFFFFF DUP1 DUP9 AND SWAP2 AND SUB PUSH2 0x378F JUMPI DUP5 PUSH2 0x3766 DUP9 PUSH2 0x2C48 PUSH1 0x1 DUP7 PUSH2 0x3DA3 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x30 SHL MUL PUSH6 0xFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x37E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP12 SLOAD PUSH1 0x1 DUP2 ADD DUP14 SSTORE PUSH1 0x0 DUP14 DUP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 MLOAD SWAP2 MLOAD SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x30 SHL MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x20 ADD MLOAD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x351D SWAP1 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH6 0xFFFFFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB DUP1 DUP6 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP9 SLOAD PUSH1 0x1 DUP2 ADD DUP11 SSTORE PUSH1 0x0 DUP11 DUP2 MSTORE SWAP2 DUP3 KECCAK256 SWAP6 MLOAD SWAP3 MLOAD SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x30 SHL MUL SWAP2 SWAP1 SWAP4 AND OR SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 POP DUP2 PUSH2 0x351D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x80 DUP4 SWAP1 SHR ISZERO PUSH2 0x3860 JUMPI PUSH1 0x80 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x40 DUP4 SWAP1 SHR ISZERO PUSH2 0x3872 JUMPI PUSH1 0x40 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x20 DUP4 SWAP1 SHR ISZERO PUSH2 0x3884 JUMPI PUSH1 0x20 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x10 DUP4 SWAP1 SHR ISZERO PUSH2 0x3896 JUMPI PUSH1 0x10 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x8 DUP4 SWAP1 SHR ISZERO PUSH2 0x38A8 JUMPI PUSH1 0x8 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x4 DUP4 SWAP1 SHR ISZERO PUSH2 0x38BA JUMPI PUSH1 0x4 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x2 DUP4 SWAP1 SHR ISZERO PUSH2 0x38CC JUMPI PUSH1 0x2 SWAP3 DUP4 SHR SWAP3 ADD JUMPDEST PUSH1 0x1 DUP4 SWAP1 SHR ISZERO PUSH2 0x661 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x38EE JUMPI DUP2 PUSH2 0x2C6F JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3904 PUSH1 0x2 DUP5 DUP5 XOR PUSH2 0x40C6 JUMP JUMPDEST PUSH2 0x2C6F SWAP1 DUP5 DUP5 AND PUSH2 0x3D77 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x394D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x395F DUP2 PUSH2 0x3929 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x397C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x39CE JUMPI DUP2 MLOAD DUP1 MLOAD DUP6 MSTORE DUP7 DUP2 ADD MLOAD DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x399F JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A1C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x39F7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C6F DUP2 PUSH2 0x3929 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3A72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x3A92 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3AA2 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH2 0x3AB2 DUP2 PUSH2 0x3A45 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A1C JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3ADC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3B0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x395F DUP2 PUSH2 0x3A45 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3B30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3B58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x3B78 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3B88 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH2 0x3AB2 DUP2 PUSH2 0x3929 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C6F DUP2 PUSH2 0x3A45 JUMP JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C6F DUP2 PUSH2 0x3BB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C6F DUP2 PUSH2 0x3BE1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3C2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3C44 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3C54 DUP2 PUSH2 0x3929 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x3C64 DUP2 PUSH2 0x3A45 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3CB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2C6F DUP2 PUSH2 0x3BB5 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3CF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2C6F DUP2 PUSH2 0x3929 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2C6F DUP2 PUSH2 0x3BE1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x3D49 JUMPI PUSH2 0x3D49 PUSH2 0x3D21 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x661 JUMPI PUSH2 0x661 PUSH2 0x3D21 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x661 JUMPI PUSH2 0x661 PUSH2 0x3D21 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3DF1 JUMPI PUSH2 0x3DF1 PUSH2 0x3CBB JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3E1F JUMPI PUSH2 0x3E1F PUSH2 0x3CBB JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x3E51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E77 JUMPI PUSH2 0x3E77 PUSH2 0x3CBB JUMP JUMPDEST PUSH2 0x3E85 DUP5 DUP3 PUSH1 0x5 SHL ADD PUSH2 0x3DF7 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0xA0 SWAP2 DUP3 MUL DUP5 ADD DUP6 ADD SWAP2 DUP6 DUP3 ADD SWAP2 SWAP1 DUP10 DUP5 GT ISZERO PUSH2 0x3EA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP7 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x3F23 JUMPI DUP1 DUP7 DUP12 SUB SLT ISZERO PUSH2 0x3EC1 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3EC9 PUSH2 0x3DCF JUMP JUMPDEST DUP7 MLOAD DUP2 MSTORE DUP8 DUP8 ADD MLOAD PUSH2 0x3EDA DUP2 PUSH2 0x3BB5 JUMP JUMPDEST DUP2 DUP10 ADD MSTORE PUSH1 0x40 DUP8 DUP2 ADD MLOAD DUP8 DUP2 AND DUP2 EQ PUSH2 0x3EF3 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP8 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP9 ADD MLOAD PUSH2 0x3F10 DUP2 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP4 MSTORE SWAP5 DUP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 PUSH2 0x3EA9 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3F65 JUMPI PUSH2 0x3F65 PUSH2 0x3D21 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x4 DUP2 LT PUSH2 0x2C6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 DUP2 ADD PUSH1 0x4 DUP4 LT PUSH2 0x3FC8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x60 DUP2 DUP5 ADD MSTORE PUSH1 0x0 DUP6 SLOAD DUP2 PUSH1 0x1 DUP3 DUP2 SHR SWAP2 POP DUP1 DUP4 AND DUP1 PUSH2 0x4005 JUMPI PUSH1 0x7F DUP4 AND SWAP3 POP JUMPDEST DUP6 DUP4 LT DUP2 SUB PUSH2 0x4022 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP6 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 REVERT JUMPDEST PUSH1 0x60 DUP9 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP9 ADD DUP2 DUP1 ISZERO PUSH2 0x4041 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x4057 JUMPI PUSH2 0x4082 JUMP JUMPDEST PUSH1 0xFF NOT DUP7 AND DUP3 MSTORE DUP5 ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD SWAP7 POP PUSH2 0x4082 JUMP JUMPDEST PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x407C JUMPI DUP2 SLOAD DUP5 DUP3 ADD MSTORE SWAP1 DUP6 ADD SWAP1 DUP10 ADD PUSH2 0x4063 JUMP JUMPDEST DUP4 ADD SWAP8 POP POP JUMPDEST POP POP POP POP DUP7 ISZERO ISZERO PUSH1 0x40 DUP8 ADD MSTORE POP SWAP1 SWAP3 POP PUSH2 0x36C9 SWAP2 POP POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x40E3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID CODECOPY 0xED CALLDATALOAD DUP13 0xA6 JUMP SWAP10 INVALID 0xE4 ADDMOD EXTCODESIZE 0xEB DUP5 RETURN 0xD9 SHR 0xE2 KECCAK256 SHL 0xB0 0xC8 SWAP9 MSIZE BALANCE PUSH32 0xC5BE02231609ED1193CED031B3229DA69FAB9691642274E1EA2625DFCE996713 0x5E PUSH14 0x5E6029D22075A2C0F7478DC6B5E0 0x1E BALANCE PUSH11 0x7FC6B72D32D90CA051D89 DUP12 0x5D NOT DUP4 STOP 0xD1 0xA7 0xC0 CALLDATASIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 SELFBALANCE 0x2B PUSH19 0x6DD15F96C27ABB83DB70CEA59EB40259FB2C9 ADDRESS LT 0xF9 PUSH12 0xF95812C4E164736F6C634300 ADDMOD EQ STOP CALLER ","sourceMap":"1998:41838:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9390:139;;;:::i;:::-;;;168:25:46;;;156:2;141:18;9390:139:44;;;;;;;;32747:409;;;;;;;;;;-1:-1:-1;32747:409:44;;;;;:::i;:::-;;:::i;:::-;;10128:223;;;;;;:::i;:::-;;:::i;:::-;;;1095:14:46;;1088:22;1070:41;;1058:2;1043:18;10128:223:44;922:195:46;11701:144:44;;;:::i;17330:694::-;;;;;;;;;;-1:-1:-1;17330:694:44;;;;;:::i;:::-;;:::i;8097:300::-;;;;;;:::i;:::-;;:::i;12149:220::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6122:735::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23163:146::-;;;;;;;;;;-1:-1:-1;23163:146:44;;;;;:::i;:::-;;:::i;10816:155::-;;;:::i;20320:461::-;;;;;;;;;;-1:-1:-1;20320:461:44;;;;;:::i;:::-;;:::i;28396:2074::-;;;;;;;;;;-1:-1:-1;28396:2074:44;;;;;:::i;:::-;;:::i;22074:411::-;;;;;;;;;;-1:-1:-1;22074:411:44;;;;;:::i;:::-;;:::i;11123:141::-;;;:::i;7031:172::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15066:872::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;5227:13:46;;5209:32;;5297:4;5285:17;;;5279:24;5257:20;;;5250:54;5360:4;5348:17;;;5342:24;5320:20;;;5313:54;5423:4;5411:17;;;5405:24;5383:20;;;5376:54;;;;5196:3;5181:19;;4988:448;33632:1212:44;;;;;;;;;;-1:-1:-1;33632:1212:44;;;;;:::i;:::-;;:::i;21444:296::-;;;;;;;;;;-1:-1:-1;21444:296:44;;;;;:::i;:::-;;:::i;12637:534::-;;;;;;:::i;:::-;;:::i;4995:187::-;;;;;;:::i;:::-;;:::i;19766:303::-;;;;;;;;;;-1:-1:-1;19766:303:44;;;;;:::i;:::-;;:::i;24143:1030::-;;;;;;;;;;-1:-1:-1;24143:1030:44;;;;;:::i;:::-;;:::i;5440:411::-;;;;;;:::i;:::-;;:::i;21015:170::-;;;;;;;;;;-1:-1:-1;21015:170:44;;;;;:::i;:::-;;:::i;9042:141::-;;;:::i;19258:297::-;;;;;;;;;;-1:-1:-1;19258:297:44;;;;;:::i;:::-;;:::i;8642:182::-;;;;;;:::i;:::-;;:::i;11420:144::-;;;:::i;7424:443::-;;;;;;:::i;:::-;;:::i;16370:610::-;;;;;;:::i;:::-;;:::i;10514:150::-;;;:::i;13378:431::-;;;;;;:::i;:::-;;:::i;31076:1414::-;;;;;;;;;;-1:-1:-1;31076:1414:44;;;;;:::i;:::-;;:::i;14124:603::-;;;;;;:::i;:::-;;:::i;37401:1799::-;;;;;;;;;;-1:-1:-1;37401:1799:44;;;;;:::i;:::-;;:::i;9692:161::-;;;:::i;18383:656::-;;;;;;;;;;-1:-1:-1;18383:656:44;;;;;:::i;:::-;;:::i;22711:245::-;;;;;;;;;;-1:-1:-1;22711:245:44;;;;;:::i;:::-;;:::i;9390:139::-;9439:7;9461:47;:45;:47::i;:::-;:63;;;9454:70;;9390:139;:::o;32747:409::-;32807:61;32871:47;:45;:47::i;:::-;32967:1;32928:24;;;;;;;;;;:27;32807:111;;-1:-1:-1;32924:81:44;;32978:27;;-1:-1:-1;;;32978:27:44;;;;;168:25:46;;;141:18;;32978:27:44;;;;;;;;32924:81;33015:17;:24;;;;;;;;;;:43;;;:48;33011:101;;33072:40;;-1:-1:-1;;;33072:40:44;;;;;168:25:46;;;141:18;;33072:40:44;14:185:46;33011:101:44;33118:33;33139:5;33146:4;33118:20;:33::i;:::-;32801:355;32747:409;:::o;10128:223::-;10211:4;10227:13;10223:31;;;-1:-1:-1;10249:5:44;10242:12;;10223:31;10345:1;10267:47;:45;:47::i;:::-;:75;;;;:68;;;;;:75;;;;;;:79;;-1:-1:-1;10128:223:44;;;;;:::o;11701:144::-;11754:4;11773:47;:45;:47::i;:::-;:67;;;;;;;;;;-1:-1:-1;11701:144:44:o;17330:694::-;17430:51;17484:47;:45;:47::i;:::-;17561:1;17566:27;17537:26;;;:23;;;;:26;;;;;;;;17566:27;;17537:56;;17623:1;17599:26;;;;;17628;;;;17599:55;;;17660:26;;;;;;17689;;;;17660:55;;17745:1;17721:26;;;;;17750;;;;17721:55;;17806:1;17782:26;;;;;17811:28;;;;17782:57;;17869:1;17845:26;;;;;17874:27;;;;17845:56;;17931:1;17907:26;;;;;;17936:27;;;;17907:56;;17974:45;17430:101;;-1:-1:-1;17974:45:44;;;;17566:18;;9967:4:46;10009:3;9998:9;9994:19;9986:27;;10053:6;10040:20;10029:9;10022:39;10124:4;10116:6;10112:17;10099:31;10092:4;10081:9;10077:20;10070:61;10194:4;10186:6;10182:17;10169:31;10162:4;10151:9;10147:20;10140:61;10264:4;10256:6;10252:17;10239:31;10232:4;10221:9;10217:20;10210:61;10334:4;10326:6;10322:17;10309:31;10302:4;10291:9;10287:20;10280:61;10404:4;10396:6;10392:17;10379:31;10372:4;10361:9;10357:20;10350:61;10474:4;10466:6;10462:17;10449:31;10442:4;10431:9;10427:20;10420:61;9799:688;;;;;17974:45:44;;;;;;;;17424:600;17330:694;:::o;8097:300::-;8169:7;8184:51;8238:47;:45;:47::i;:::-;8309:14;;;;:36;;-1:-1:-1;;;8309:36:44;;;;;168:25:46;;;8309:14:44;;-1:-1:-1;8291:15:44;;-1:-1:-1;;;;;8309:14:44;;;;:28;;141:18:46;;8309:36:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8358:34;;;;;;:23;;;;:34;;-1:-1:-1;8358:34:44;;;;;8097:300;-1:-1:-1;;8097:300:44:o;12149:220::-;12231:43;12289:47;:45;:47::i;:::-;:67;;:75;12357:6;12289:75;;;;;;;;;;;12282:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12149:220;;;:::o;6122:735::-;6182:16;6206:51;6260:47;:45;:47::i;:::-;6313:25;6341:26;;;:19;;;:26;;;;;6390:14;;6206:101;;-1:-1:-1;6341:26:44;6390:14;;-1:-1:-1;;;;;6439:21:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6439:21:44;;6410:50;;6466:13;6491:9;6486:292;6506:6;6502:1;:10;6486:292;;;6527:14;6544:7;6552:1;6544:10;;;;;;;;:::i;:::-;;;;;;;;;;;6567:14;;;;:34;;-1:-1:-1;;;6567:34:44;;;;;168:25:46;;;6544:10:44;;-1:-1:-1;;;;;;6567:14:44;;:26;;141:18:46;;6567:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6562:49;;6603:8;;;6562:49;6637:14;;;;:38;;-1:-1:-1;;;6637:38:44;;;;;168:25:46;;;6619:15:44;;-1:-1:-1;;;;;6637:14:44;;:30;;141:18:46;;6637:38:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6619:56;-1:-1:-1;;;;;;6687:21:44;;;6683:89;;6739:7;6720:9;6730:5;6720:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6720:26:44;;;:16;;;;;;;;;;;:26;6756:7;;;;:::i;:::-;;;;6683:89;6519:259;;6486:292;6514:3;;;;:::i;:::-;;;;6486:292;;;-1:-1:-1;6801:24:44;;6808:9;6122:735;-1:-1:-1;;;;;6122:735:44:o;23163:146::-;23295:9;23225:47;:45;:47::i;:::-;:67;;:79;;;;;;;-1:-1:-1;;23225:79:44;;;;;;;;;-1:-1:-1;23163:146:44:o;10816:155::-;10873:7;10895:47;:45;:47::i;:::-;:71;;;10888:78;;10816:155;:::o;20320:461::-;20400:51;20454:47;:45;:47::i;:::-;20400:101;;20528:1;:18;;;20511:14;:35;20507:130;;;20611:18;;;;20563:67;;-1:-1:-1;;;20563:67:44;;;;20595:14;;20563:67;;;:::i;20507:130::-;20647:78;20680:1;:28;;;20710:14;20647:78;;;;;;;:::i;:::-;;;;;;;;20731:28;;:45;20320:461::o;28396:2074::-;28565:18;28591:51;28645:47;:45;:47::i;:::-;28591:101;;28707:61;28771:47;:45;:47::i;:::-;28830:21;;;;28707:111;;-1:-1:-1;28830:21:44;;28826:54;;;28860:20;;-1:-1:-1;;;28860:20:44;;;;;;;;;;;28826:54;28931:1;28892:24;;;;;;;;;;:27;28888:81;;28942:27;;-1:-1:-1;;;28942:27:44;;;;;168:25:46;;;141:18;;28942:27:44;14:185:46;28888:81:44;-1:-1:-1;28987:14:44;;;;:34;;-1:-1:-1;;;28987:34:44;;;;;168:25:46;;;-1:-1:-1;;;;;28987:14:44;;;;:26;;141:18:46;;28987:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28986:35;:89;;;-1:-1:-1;29026:14:44;;;;:49;;-1:-1:-1;;;29026:49:44;;-1:-1:-1;;;;;29026:14:44;;;;:29;;:49;;29056:10;;29068:6;;29026:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29025:50;28986:89;28982:138;;;29092:21;;-1:-1:-1;;;29092:21:44;;;;;;;;;;;28982:138;29126:22;29222:29;;;:21;;;:29;;;;;29263:19;;:24;;29259:56;;29296:19;;-1:-1:-1;;;29296:19:44;;;;;;;;;;;29259:56;29324:13;29340:37;;;:29;;;:37;;;;;;;;:44;;;;;;;;;29405:19;;29396:28;;;;:66;;;29457:5;29428:12;29441:5;29428:19;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;;:34;;29396:66;29392:117;;;29481:19;;-1:-1:-1;;;29481:19:44;;;;;;;;;;;29392:117;29607:1;:17;;;29569:12;29582:5;29569:19;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;;:55;;;;:::i;:::-;29521:1;:28;;;;;;;;;;-1:-1:-1;;;;;29521:28:44;-1:-1:-1;;;;;29521:43:44;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:103;29517:168;;;29662:6;29670:5;29643:33;;-1:-1:-1;;;29643:33:44;;;;;;;;;:::i;29517:168::-;29693:21;29717:12;29730:5;29717:19;;;;;;;;:::i;:::-;;;;;;;;;;;:26;;;29693:50;;29768:6;29778:1;29768:11;:36;;29798:6;29768:36;;;29782:13;29768:36;29751:53;;29833:13;29816:14;:30;29812:64;;;29855:21;;-1:-1:-1;;;29855:21:44;;;;;;;;;;;29812:64;29907:13;29889:14;:31;29885:168;;29932:43;29951:1;29954:6;29962:5;29969;29932:18;:43::i;:::-;29885:168;;;30030:14;30000:12;30013:5;30000:19;;;;;;;;:::i;:::-;;;;;;;;;;;:26;;;:44;;;;;;;:::i;:::-;;;;-1:-1:-1;;29885:168:44;29154:905;;;30065:16;30106:14;30084:19;30094:1;30097:5;30084:9;:19::i;:::-;:36;;;;:::i;:::-;30065:55;;30126:29;30136:1;30139:5;30146:8;30126:9;:29::i;:::-;30188:6;30181:5;-1:-1:-1;;;;;;;;;;;30196:14:44;30167:44;;;;168:25:46;;156:2;141:18;;14:185;30167:44:44;;;;;;;;30223:13;30222:14;:31;;;;30240:13;30222:31;30218:72;;;30270:13;30263:20;;;;;;;30218:72;30311:1;:28;;;30300:8;:39;30296:152;;;30356:85;30395:1;30398:5;30405:13;30420;30435:5;30356:38;:85::i;:::-;30349:92;;;;;;;30296:152;30461:4;30454:11;;;;;28396:2074;;;;;;;;;:::o;22074:411::-;22136:51;22190:47;:45;:47::i;:::-;22136:101;;22259:1;:28;;;22247:9;:40;22243:138;;;22345:28;;;;22304:70;;-1:-1:-1;;;22304:70:44;;;;22334:9;;22304:70;;;:::i;22243:138::-;22391:53;22414:1;:18;;;22434:9;22391:53;;;;;;;:::i;:::-;;;;;;;;22450:18;;:30;22074:411::o;11123:141::-;11173:7;11195:47;:45;:47::i;:::-;:64;;;11188:71;;11123:141;:::o;7031:172::-;7095:16;7126:47;:45;:47::i;:::-;:65;;:72;7192:5;7126:72;;;;;;;;;;;7119:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7031:172;;;:::o;15066:872::-;15132:49;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15132:49:44;15189:51;15243:47;:45;:47::i;:::-;15314:14;;;;:36;;-1:-1:-1;;;15314:36:44;;;;;168:25:46;;;15314:14:44;;-1:-1:-1;15296:15:44;;-1:-1:-1;;;;;15314:14:44;;;;:28;;141:18:46;;15314:36:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15375:34;;;;;;;:23;;;:34;;;;;;;;;15356:53;;15476:29;;;:21;;;:29;;;;;15534:28;;;;:45;;-1:-1:-1;;;15534:45:44;;;;15296:54;;-1:-1:-1;15476:29:44;;-1:-1:-1;;;;;15534:28:44;;;;:43;;:45;;;;;;;;;;;:28;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15511:68;;15591:9;15586:243;15606:19;;15602:23;;15586:243;;;15659:12;15672:1;15659:15;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;15640:4;:15;;:41;;;;;;;:::i;:::-;;;-1:-1:-1;15742:17:44;;;;15708:15;;:12;;15721:1;;15708:15;;;;;;:::i;:::-;;;;;;;;;;;:31;;;:51;;;;:::i;:::-;15693:12;:66;15689:134;;;15792:12;15805:1;15792:15;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;15771:4;:17;;:43;;;;;;;:::i;:::-;;;-1:-1:-1;15689:134:44;15627:3;;;;:::i;:::-;;;;15586:243;;;-1:-1:-1;15877:15:44;;;;15858:16;;:34;:75;;15932:1;15858:75;;;15914:15;;;;15895:16;;:34;;15914:15;15895:34;:::i;:::-;15835:20;;;:98;-1:-1:-1;15835:4:44;;15066:872;-1:-1:-1;;;;15066:872:44:o;33632:1212::-;33705:4;33717:61;33781:47;:45;:47::i;:::-;33717:111;-1:-1:-1;8551:30:45;33834:65:44;34020:47;:45;:47::i;:::-;34117:1;34078:24;;;;;;;;;;:27;33966:101;;-1:-1:-1;34074:81:44;;34128:27;;-1:-1:-1;;;34128:27:44;;;;;168:25:46;;;141:18;;34128:27:44;14:185:46;34074:81:44;34162:18;34183:29;;;:22;;;:29;;;;;;;;34218:31;;;;34244:5;34237:12;;;;;;;;34218:31;34330:13;34346:39;34376:1;34379:5;34346:29;:39::i;:::-;34391:14;34408:24;;;;;;;;;;:43;;;34330:55;;-1:-1:-1;34408:48:44;;;;;34391:14;34408:48;;34483:71;;-1:-1:-1;34496:44:44;;;;:37;;;:44;;;;;:53;;:51;:53::i;:::-;-1:-1:-1;;;;;34496:58:44;34553:1;34496:58;34483:71;34462:92;;34573:1;:28;;;34565:5;:36;34561:261;;;34618:85;34657:1;34660:5;34667:13;34682;34697:5;34618:38;:85::i;:::-;34611:92;;;;;;;;;;;34561:261;34724:91;34752:1;34755:11;34768:5;34775:9;34786:13;34801;34724:27;:91::i;:::-;-1:-1:-1;34835:4:44;;33632:1212;-1:-1:-1;;;;;;;;;33632:1212:44:o;21444:296::-;21513:51;21567:47;:45;:47::i;:::-;21513:101;;21625:67;21655:1;:25;;;21682:9;21625:67;;;;;;;:::i;:::-;;;;;;;;21698:25;;:37;21444:296::o;12637:534::-;12720:7;12735:51;12789:47;:45;:47::i;:::-;12842:57;12902:29;;;:21;;;:29;;;;;12941:19;;12735:101;;-1:-1:-1;12902:29:44;12941:24;;12937:38;;12974:1;12967:8;;;;;;12937:38;12981:13;12997:37;;;:29;;;:37;;;;;;;;:44;;;;;;;;;13060:19;;13051:28;;;;:66;;;13112:5;13083:12;13096:5;13083:19;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;;:34;;13051:66;13047:80;;;13126:1;13119:8;;;;;;;13047:80;13140:12;13153:5;13140:19;;;;;;;;:::i;:::-;;;;;;;;;;;:26;;;13133:33;;;;;12637:534;;;;:::o;4995:187::-;5051:7;5081:95;:47;:45;:47::i;:::-;:86;;;;:79;;;;;:86;;;;;:93;:95::i;:::-;-1:-1:-1;;;;;5073:104:44;;4995:187;-1:-1:-1;;4995:187:44:o;19766:303::-;19840:51;19894:47;:45;:47::i;:::-;19840:101;;19952:64;19974:1;:17;;;19993:22;19952:64;;;;;;;:::i;:::-;;;;;;;;20022:17;;:42;19766:303::o;24143:1030::-;24309:61;24373:47;:45;:47::i;:::-;24309:111;;24426:51;24480:47;:45;:47::i;:::-;24426:101;;24534:74;24555:1;24558:11;24571:5;24578:6;24586;24594:13;24534:20;:74::i;:::-;24615:24;24642:46;24671:1;24674:6;24682:5;24642:28;:46::i;:::-;24615:73;;24694:109;24713:1;24716:6;24724:5;24731:6;24739:16;24757:1;:28;;;;;;;;;;-1:-1:-1;;;;;24757:28:44;-1:-1:-1;;;;;24757:43:44;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24694:18;:109::i;:::-;24809:16;24850:6;24828:19;24838:1;24841:5;24828:9;:19::i;:::-;:28;;;;:::i;:::-;24809:47;;24862:29;24872:1;24875:5;24882:8;24862:9;:29::i;:::-;24914:1;:28;;;24902:8;:40;24898:152;;24952:91;24980:1;24983:11;24996:5;25003:9;25014:13;25029;24952:27;:91::i;:::-;25075:14;;;;:38;;-1:-1:-1;;;25075:38:44;;;;;168:25:46;;;25056:16:44;;-1:-1:-1;;;;;25075:14:44;;:30;;141:18:46;;25075:38:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25056:57;;25143:6;25136:5;-1:-1:-1;;;;;;;;;;;25151:8:44;25161:6;25124:44;;;;;;;:::i;:::-;;;;;;;;24303:870;;;;;24143:1030;;;;;;:::o;5440:411::-;5526:7;5541:51;5595:47;:45;:47::i;:::-;5541:101;;5664:12;5652:9;:24;5648:89;;;5706:9;5717:12;5693:37;;-1:-1:-1;;;5693:37:44;;;;;;;;;:::i;5648:89::-;5757:88;5816:28;5834:9;5816:17;:28::i;:::-;5757:40;;;;:33;;;:40;;;;;;:58;:88::i;:::-;-1:-1:-1;;;;;5749:97:44;;5440:411;-1:-1:-1;;;;5440:411:44:o;21015:170::-;21088:37;21109:5;21116:8;21088:20;:37::i;:::-;21164:5;-1:-1:-1;;;;;;;;;;;21171:8:44;21136:44;;;;1095:14:46;1088:22;1070:41;;1058:2;1043:18;;922:195;21136:44:44;;;;;;;;21015:170;;:::o;9042:141::-;9088:7;9110:47;:45;:47::i;:::-;:68;;;;;;9042:141;-1:-1:-1;9042:141:44:o;19258:297::-;19325:51;19379:47;:45;:47::i;:::-;19456:22;;;;19437:63;;19325:101;;-1:-1:-1;19437:63:44;;;;19456:22;;;19480:19;;19437:63;:::i;:::-;;;;;;;;19506:22;;:44;;-1:-1:-1;;19506:44:44;;;;;;;;;;;;19258:297::o;8642:182::-;8717:7;8739:47;:45;:47::i;:::-;:80;;;;;;;;:69;;;;;:80;;-1:-1:-1;8739:80:44;;;;;8642:182::o;11420:144::-;11473:4;11492:47;:45;:47::i;:::-;:67;;;;;;11420:144;-1:-1:-1;11420:144:44:o;7424:443::-;7495:7;7510:51;7564:47;:45;:47::i;:::-;7655:14;;;;:36;;-1:-1:-1;;;7655:36:44;;-1:-1:-1;;;;;13863:32:46;;;7655:36:44;;;13845:51:46;7655:14:44;;-1:-1:-1;7617:35:44;;7655:14;;;;:30;;13818:18:46;;7655:36:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7655:36:44;;;;;;;;;;;;:::i;:::-;7617:74;;7697:18;7726:9;7721:119;7741:10;:17;7737:1;:21;7721:119;;;7787:1;:23;;:46;7811:10;7822:1;7811:13;;;;;;;;:::i;:::-;;;;;;;:21;;;7787:46;;;;;;;;;;;;;;;;7773:60;;;;;:::i;:::-;;-1:-1:-1;7760:3:44;;;;:::i;:::-;;;;7721:119;;;-1:-1:-1;7852:10:44;7424:443;-1:-1:-1;;;;7424:443:44:o;16370:610::-;16446:4;16458:51;16512:47;:45;:47::i;:::-;16565:57;16625:29;;;:21;;;:29;;;;;16664:19;;16458:101;;-1:-1:-1;16625:29:44;16664:24;;16660:42;;16697:5;16690:12;;;;;;16660:42;16708:13;16724:37;;;:29;;;:37;;;;;;;;:44;;;;;;;;;16787:19;;16778:28;;;;:66;;;16839:5;16810:12;16823:5;16810:19;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;;:34;;16778:66;16774:84;;;16853:5;16846:12;;;;;;;16774:84;16958:1;:17;;;16920:12;16933:5;16920:19;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;;:55;;;;:::i;:::-;16871:1;:28;;;;;;;;;;-1:-1:-1;;;;;16871:28:44;-1:-1:-1;;;;;16871:43:44;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:104;;;16370:610;-1:-1:-1;;;;;;16370:610:44:o;10514:150::-;10565:16;10596:47;:45;:47::i;:::-;10589:70;;;;;;;;;;;;;;;;;;;;10596:63;10589:70;;;10596:63;10589:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10514:150;:::o;13378:431::-;13444:7;13459:51;13513:47;:45;:47::i;:::-;13566:57;13626:29;;;:21;;;:29;;;;;13459:101;;-1:-1:-1;13566:57:44;13685:97;13705:19;;13701:23;;13685:97;;;13753:12;13766:1;13753:15;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;13739:36;;;;;:::i;:::-;;-1:-1:-1;13726:3:44;;;;:::i;:::-;;;;13685:97;;31076:1414;31232:18;31258:51;31312:47;:45;:47::i;:::-;31258:101;;31374:61;31438:47;:45;:47::i;:::-;31536:1;31497:24;;;;;;;;;;:27;31374:111;;-1:-1:-1;31493:81:44;;31547:27;;-1:-1:-1;;;31547:27:44;;;;;168:25:46;;;141:18;;31547:27:44;14:185:46;31493:81:44;-1:-1:-1;31587:22:44;31683:29;;;:21;;;:29;;;;;31724:19;;:24;;31720:56;;31757:19;;-1:-1:-1;;;31757:19:44;;;;;;;;;;;31720:56;31785:13;31801:37;;;:29;;;:37;;;;;;;;:44;;;;;;;;;31866:19;;31857:28;;;;:66;;;31918:5;31889:12;31902:5;31889:19;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;;:34;;31857:66;31853:117;;;31942:19;;-1:-1:-1;;;31942:19:44;;;;;;;;;;;31853:117;31995:12;32008:5;31995:19;;;;;;;;:::i;:::-;;;;;;;;;;;:26;;;31978:43;;32029;32048:1;32051:6;32059:5;32066;32029:18;:43::i;:::-;31615:464;;32085:16;32126:14;32104:19;32114:1;32117:5;32104:9;:19::i;:::-;:36;;;;:::i;:::-;32085:55;;32146:29;32156:1;32159:5;32166:8;32146:9;:29::i;:::-;32208:6;32201:5;-1:-1:-1;;;;;;;;;;;32216:14:44;32187:44;;;;168:25:46;;156:2;141:18;;14:185;32187:44:44;;;;;;;;32243:13;32242:14;:31;;;;32260:13;32242:31;32238:72;;;32290:13;32283:20;;;;;;;32238:72;32331:1;:28;;;32320:8;:39;32316:152;;;32376:85;32415:1;32418:5;32425:13;32440;32455:5;32376:38;:85::i;:::-;32369:92;;;;;;;32316:152;32481:4;32474:11;;;;;31076:1414;;;;;;;;:::o;14124:603::-;14195:7;14210:51;14264:47;:45;:47::i;:::-;14335:14;;;;:36;;-1:-1:-1;;;14335:36:44;;;;;168:25:46;;;14335:14:44;;-1:-1:-1;14317:15:44;;-1:-1:-1;;;;;14335:14:44;;;;:28;;141:18:46;;14335:36:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14399:34;;;14377:19;14399:34;;;:23;;;:34;;;;;;;;;14499:29;;;:21;;;:29;;;;;14317:54;;-1:-1:-1;14399:34:44;14499:29;14377:19;14558:97;14578:19;;14574:23;;14558:97;;;14626:12;14639:1;14626:15;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;14612:36;;;;;:::i;:::-;;-1:-1:-1;14599:3:44;;;;:::i;:::-;;;;14558:97;;;;14681:10;14667:11;:24;:55;;14721:1;14667:55;;;14694:24;14708:10;14694:11;:24;:::i;:::-;14660:62;14124:603;-1:-1:-1;;;;;;;14124:603:44:o;37401:1799::-;37488:51;37542:47;:45;:47::i;:::-;37600:21;;;;;;-1:-1:-1;37600:21:44;;;;;37596:61;;;37630:27;;-1:-1:-1;;;37630:27:44;;;;;;;;;;;37596:61;37687:28;;;;:45;;;-1:-1:-1;;;37687:45:44;;;;37664:20;;-1:-1:-1;;;;;37687:28:44;;:43;;:45;;;;;;;;;;;;;;:28;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37738:57;37798:29;;;:21;;;:29;;;;;;;;37857;;;:37;;;;;:44;;;;;;;;;37990:19;;37664:68;;-1:-1:-1;37798:29:44;;37857:44;;37738:57;37990:23;;;;:68;;-1:-1:-1;38039:19:44;;38023:35;;37990:68;:120;;;;;38105:5;38068:12;38081:13;38068:27;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;;:42;37990:120;37976:134;;38121:6;38117:914;;;38195:17;38215:12;38228:13;38215:27;;;;;;;;:::i;:::-;;;;;;;;;;;:34;;;38195:54;;38294:6;38257:12;38270:13;38257:27;;;;;;;;:::i;:::-;;;;;;;;;;;:34;;:43;;;;38354:12;38308;38321:13;38308:27;;;;;;;;:::i;:::-;;;;;;;;;;;:43;;:58;;;;38422:61;38432:1;38435:5;38476:6;38464:9;38442:19;38452:1;38455:5;38442:9;:19::i;:::-;:31;;;;:::i;:::-;:40;;;;:::i;:::-;38422:9;:61::i;:::-;38129:361;38117:914;;;38563:99;;;;;;;;;;;;;;;;;;;;;;;;38536:134;;;;;;;;-1:-1:-1;38536:134:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38725:19;;:23;;38536:134;38725:23;:::i;:::-;38678:37;;;;:29;;;:37;;;;;;;;:44;;;;;;;;:70;;;;38840:19;;;:26;;;;;:39;;;;;;;;;;;;;;;;;;38929:26;;;;:33;:37;;38840:39;38929:37;:::i;:::-;38887:31;;;;:24;;;:31;;;;;;;;:39;;;;;;;;:79;38975:49;38887:1;38912:5;39017:6;38995:19;38887:1;38912:5;38995:9;:19::i;38975:49::-;39102:14;;;;:38;;-1:-1:-1;;;39102:38:44;;;;;168:25:46;;;39083:16:44;;-1:-1:-1;;;;;39102:14:44;;:30;;141:18:46;;39102:38:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39083:57;;39170:6;39163:5;-1:-1:-1;;;;;;;;;;;39178:8:44;39188:6;39151:44;;;;;;;:::i;:::-;;;;;;;;37482:1718;;;;;;37401:1799;;;:::o;9692:161::-;9752:7;9774:47;:45;:47::i;:::-;:74;;;9767:81;;9692:161;:::o;18383:656::-;18454:51;18508:47;:45;:47::i;:::-;18454:101;;18565:6;18561:474;;;18581:13;18597:29;;;18629:1;18597:22;;;:29;;;;;;:33;;18629:1;18597:33;:::i;:::-;18658:24;;18581:49;;-1:-1:-1;18638:17:44;;18658:28;;18685:1;;18658:28;:::i;:::-;18638:48;;18694:17;18714:1;:17;;18732:9;18714:28;;;;;;;;:::i;:::-;;;;;;;;;18694:48;;18777:9;18750:1;:17;;18768:5;18750:24;;;;;;;;:::i;:::-;;;;;;;;;;:36;18830:9;:5;18838:1;18830:9;:::i;:::-;18794:33;;;;:22;;;:33;;;;;:45;18847:23;;18794:1;;18847:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18885:1;:22;;:29;18908:5;18885:29;;;;;;;;;;;18878:36;;;18573:348;;;18448:591;18383:656;;:::o;18561:474::-;18935:29;;;;;;;;-1:-1:-1;18935:29:44;;;;;;;;;;;;;19004:24;;18972:29;;;:22;;:29;;;;;:56;;;;-1:-1:-1;18383:656:44:o;22711:245::-;22770:51;22824:47;:45;:47::i;:::-;22877:21;;;:30;;-1:-1:-1;;22877:30:44;;;;;;;;;;22918:33;;1070:41:46;;;22877:21:44;;-1:-1:-1;22918:33:44;;1058:2:46;1043:18;22918:33:44;922:195:46;8595:179:45;8738:26;;8595:179::o;8982:::-;9125:26;;8982:179::o;40193:1211:44:-;40408:57;40468:29;;;:21;;;:29;;;;;40523:19;;40468:29;;40408:57;40523:23;;40545:1;;40523:23;:::i;:::-;40503:43;;40566:9;40557:5;:18;40553:244;;40585:58;40646:12;40659:9;40646:23;;;;;;;;:::i;:::-;;;;;;;;;;;40585:84;;40699:15;40677:12;40690:5;40677:19;;;;;;;;:::i;:::-;;;;;;;;;:37;;:19;;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;40722;;;:29;;;:37;;;;;;40760:21;;40722:60;;;;;;;:68;;;40553:244;40803:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;40803:18:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;40834:37;;;:29;;;:37;;;;;;:44;;;;;;;;40827:51;;;40986:19;;;:26;;;;;41038:24;;;:31;;;;;:39;;;;;;;;;41107:15;;41038:39;;41107:19;;;:::i;:::-;41083:43;;41150:13;41137:9;:26;41133:194;;41173:18;41194:8;41203:13;41194:23;;;;;;;;:::i;:::-;;;;;;;;;41173:44;;41247:10;41225:8;41234:9;41225:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:32;;;;41265:31;;;:24;;;:31;;;;;;:43;;;;;;;;:55;;;41133:194;41333:8;:14;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;41333:14:44;;;;;;;;;;;;41360:31;;;:24;;;;:31;;-1:-1:-1;;41360:31:44;;;;:39;;;;;;;-1:-1:-1;;;41360:39:44;;;41353:46;;;;-1:-1:-1;40193:1211:44:o;42431:206::-;42552:7;42582:40;;;:33;;;:40;;;;;:49;;:47;:49::i;:::-;-1:-1:-1;;;;;42574:58:44;;42431:206;-1:-1:-1;;;42431:206:44:o;42641:232::-;42760:108;42806:31;42824:12;42806:17;:31::i;:::-;42839:28;42858:8;42839:18;:28::i;:::-;42760:40;;;;:33;;;:40;;;;;;:108;:45;:108::i;:::-;;;42641:232;;;:::o;42877:957::-;43088:18;43114;43136:13;43135:14;:51;;;;-1:-1:-1;43185:1:44;43153:29;;;:22;;;:29;;;;;;:33;;43135:51;43114:72;;43198:13;43193:123;;43221:34;43242:5;43249;43221:20;:34::i;:::-;43268:41;;43303:5;1070:41:46;;43296:5:44;;-1:-1:-1;;;;;;;;;;;43268:41:44;1058:2:46;1043:18;43268:41:44;;;;;;;43193:123;43326:29;;;;:22;;;:29;;;;;;;;:34;:51;;;;;43364:13;43326:51;43322:490;;;43387:29;;;;:22;;;:29;;;;;:37;;-1:-1:-1;;43387:37:44;;;;;;;;;;;;43491:22;;;;43387:29;;43437:77;;43387:37;;43483:30;;43491:22;43387:37;43483:30;:::i;:::-;43437:77;;;;;;;:::i;:::-;;;;;;;;43529:4;43522:11;;;;;43322:490;43591:22;;;;;43559:29;;;:22;;;:29;;;;;;:54;;43591:22;;;;;43559:29;:54;:::i;:::-;43551:62;;:5;:62;;;43550:81;;;;;43618:13;43550:81;43546:266;;;43665:19;;;;:38;;-1:-1:-1;;;43665:38:44;;;;;168:25:46;;;-1:-1:-1;;;;;43665:19:44;;;;:31;;141:18:46;;43665:38:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43641:21;;;;:14;;;:21;;;;;:62;;-1:-1:-1;;43641:62:44;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;43711:19:44;;;;:74;;-1:-1:-1;;;43711:74:44;;-1:-1:-1;;;;;43711:19:44;;;;:34;;:74;;43746:5;;43711:19;;:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43800:5;43793:12;;;;;43546:266;-1:-1:-1;43825:4:44;;42877:957;-1:-1:-1;;;;;;42877:957:44:o;34943:2454::-;35079:7;35122:26;;;:19;;;:26;;;;;35079:7;;35194:2111;35205:14;;35201:18;;35194:2111;;;35229:14;35246:7;35254:1;35246:10;;;;;;;;:::i;:::-;;;;;;;;;;35279:14;;;;:34;;-1:-1:-1;;;35279:34:44;;;;;168:25:46;;;35246:10:44;;-1:-1:-1;;;;;;35279:14:44;;:26;;141:18:46;;35279:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35264:49;;35327:7;35322:1977;;35390:57;35450:29;;;:21;;;:29;;;;;;;;35512;;;:37;;;;;:44;;;;;;;;;;35646:19;;35630:35;;;;:80;;;35705:5;35669:12;35682;35669:26;;;;;;;;:::i;:::-;;;;;;;;;;;:32;;;:41;;35630:80;35626:154;;;35755:6;35763:5;35731:38;;-1:-1:-1;;;35731:38:44;;;;;;;;;:::i;35626:154::-;35790:22;35815:12;35828;35815:26;;;;;;;;:::i;:::-;;;;;;;;:33;:26;;;;;:33;;;35933:19;;35815:33;;-1:-1:-1;35933:23:44;;35815:33;35933:23;:::i;:::-;35906:50;;35986:16;35970:12;:32;35966:218;;36045:12;36058:16;36045:30;;;;;;;;:::i;:::-;;;;;;;;;;;36016:12;36029;36016:26;;;;;;;;:::i;:::-;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;36161:12;36087:1;:29;;:37;36117:6;36087:37;;;;;;;;;;;:71;36125:12;36138;36125:26;;;;;;;;:::i;:::-;;;;;;;;;;;:32;;;36087:71;;;;;;;;;;;:86;;;;35966:218;36193:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;36193:18:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;36228:37;;;:29;;;:37;;;;;;:44;;;;;;;;;36221:51;;;36365:14;;:18;;36193;36365;:::i;:::-;36341:42;;36402:13;36397:1;:18;36393:184;;36429:18;36450:7;36458:13;36450:22;;;;;;;;:::i;:::-;;;;;;;;;36429:43;;36497:10;36484:7;36492:1;36484:10;;;;;;;;:::i;:::-;;;;;;;;:23;;;;36565:1;36519;:24;;:31;36544:5;36519:31;;;;;;;;;;;:43;36551:10;36519:43;;;;;;;;;;;:47;;;;36417:160;36393:184;36586:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;36586:13:44;;;;;;;;;;;;36616:31;;;:24;;;:31;;;;;;:39;;;;;;;;36609:46;;;;36671:44;;168:25:46;;;36648:6:44;;36641:5;;-1:-1:-1;;;;;;;;;;;36671:44:44;141:18:46;36671:44:44;;;;;;;35336:1434;;;;;35322:1977;;;36830:57;36890:29;;;:21;;;:29;;;;;;;;36952;;;:37;;;;;:44;;;;;;;;;;37086:19;;37070:35;;;;:80;;;37145:5;37109:12;37122;37109:26;;;;;;;;:::i;:::-;;;;;;;;;;;:32;;;:41;;37070:80;37066:154;;;37195:6;37203:5;37171:38;;-1:-1:-1;;;37171:38:44;;;;;;;;;:::i;37066:154::-;37244:12;37257;37244:26;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;;37230:47;;;;;:::i;:::-;;-1:-1:-1;37287:3:44;;;;:::i;:::-;;;;36776:523;;35322:1977;35221:2084;;35194:2111;;;37338:31;37348:1;37351:5;37358:10;37338:9;:31::i;10167:206:20:-;10262:24;;10229:7;;10303:8;;:63;;10318:41;10332:4;10351:7;10357:1;10351:3;:7;:::i;:::-;14209:28;14272:20;;;14337:4;14324:18;;;14320:28;;14099:265;10318:41;:48;-1:-1:-1;;;10318:48:20;;-1:-1:-1;;;;;10318:48:20;10303:63;;;10314:1;10303:63;10296:70;10167:206;-1:-1:-1;;;10167:206:20:o;41408:1019:44:-;41679:9;41674:558;;41698:17;:24;;;;;;;;;;;41744:15;41698:43;;;;:61;41767:19;;;;:31;;;;;;;;;;;;;;;;;;;;41806:19;;;;:73;;-1:-1:-1;;;41806:73:44;;-1:-1:-1;;;;;41806:19:44;;;;:34;;:73;;41716:5;;41806:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41888:65;41956:59;9314:29:45;;9165:188;41956:59:44;42044:38;;;;:31;;;:38;;;;;;;;;42084:24;;;;;;;;42028:92;;41888:127;;-1:-1:-1;42037:5:44;;42028:92;;;;-1:-1:-1;;;;;42044:38:44;;;42084:29;;;;42044:38;42028:92;:::i;:::-;;;;;;;;41690:437;41674:558;;;42138:13;42133:99;;42161:19;;;;;42203:21;;;:14;;;:21;;;;;;;;42161:64;;-1:-1:-1;;;42161:64:44;;-1:-1:-1;;;;;42161:19:44;;;;:34;;:64;;42196:5;;42203:21;;;42161:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42133:99;42238:18;42260:13;42259:14;:51;;;;-1:-1:-1;42309:1:44;42277:29;;;:22;;;:29;;;;;;:33;;42259:51;42238:72;;42320:13;42316:67;;;42343:33;42364:5;42371:4;42343:20;:33::i;:::-;-1:-1:-1;;;42421:1:44;42389:29;;;-1:-1:-1;42389:22:44;;;;:29;;-1:-1:-1;42389:29:44;;;:33;;-1:-1:-1;;42389:33:44;;;41408:1019::o;25177:1556::-;25441:21;;;;;;25437:54;;;25471:20;;-1:-1:-1;;;25471:20:44;;;;;;;;;;;25437:54;25540:1;25501:24;;;;;;;;;;:27;25497:81;;25551:27;;-1:-1:-1;;;25551:27:44;;;;;168:25:46;;;141:18;;25551:27:44;14:185:46;25497:81:44;25588:13;25584:53;;;25610:27;;-1:-1:-1;;;25610:27:44;;;;;168:25:46;;;141:18;;25610:27:44;14:185:46;25584:53:44;25647:11;;;:26;;-1:-1:-1;25662:11:44;;25647:26;25643:60;;;25682:21;;-1:-1:-1;;;25682:21:44;;;;;;;;;;;25643:60;25714:14;;;;:34;;-1:-1:-1;;;25714:34:44;;;;;168:25:46;;;-1:-1:-1;;;;;25714:14:44;;;;:26;;141:18:46;;25714:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25713:35;:89;;;-1:-1:-1;25753:14:44;;;;:49;;-1:-1:-1;;;25753:49:44;;-1:-1:-1;;;;;25753:14:44;;;;:29;;:49;;25783:10;;25795:6;;25753:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25752:50;25713:89;25709:138;;;25819:21;;-1:-1:-1;;;25819:21:44;;;;;;;;;;;25709:138;25871:14;;;;:36;;-1:-1:-1;;;25871:36:44;;;;;168:25:46;;;25853:15:44;;-1:-1:-1;;;;;25871:14:44;;:28;;141:18:46;;25871:36:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25917:34;;;;;;;:23;;;:34;;;;;;25853:54;;-1:-1:-1;25917:39:44;25913:77;;25965:25;;-1:-1:-1;;;25965:25:44;;;;;;;;;;;25913:77;26023:34;;;25997:23;26023:34;;;:23;;;:34;;;;;;;26084:29;26023:1;26106:6;26084:18;:29::i;:::-;26063:50;;26119:23;26163:10;26145:15;:28;:63;;26207:1;26145:63;;;26176:28;26194:10;26176:15;:28;:::i;:::-;26119:89;;26227:15;26218:6;:24;26214:97;;;26279:6;26287:15;26304:6;26251:60;;-1:-1:-1;;;26251:60:44;;;;;;;;;;:::i;26214:97::-;26318:24;26345:46;26374:1;26377:6;26385:5;26345:28;:46::i;:::-;26429:25;;;;26318:73;;-1:-1:-1;26401:25:44;26420:6;26318:73;26401:25;:::i;:::-;:53;26397:146;;;26495:6;26503:5;26510:1;:25;;;26471:65;;-1:-1:-1;;;26471:65:44;;;;;;;;;;:::i;26397:146::-;26548:20;26571:19;26581:1;26584:5;26571:9;:19::i;:::-;26624:18;;;;26548:42;;-1:-1:-1;26600:21:44;26615:6;26548:42;26600:21;:::i;:::-;:42;26596:133;;;26682:5;26689:12;26703:1;:18;;;26659:63;;-1:-1:-1;;;26659:63:44;;;;;;;;;;:::i;26596:133::-;25431:1302;;;;;;25177:1556;;;;;;:::o;39685:504::-;39845:7;39920:29;;;:21;;;:29;;;;;39959:19;;:24;;39955:38;;39992:1;39985:8;;;;;39955:38;39999:13;40015:37;;;:29;;;:37;;;;;;;;:44;;;;;;;;;40078:19;;40069:28;;;;:66;;;40130:5;40101:12;40114:5;40101:19;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;;:34;;40069:66;40065:80;;;40144:1;40137:8;;;;;;40065:80;40158:12;40171:5;40158:19;;;;;;;;:::i;:::-;;;;;;;;;;;:26;;;40151:33;;;;39685:504;;;;;:::o;26737:970::-;26959:20;;26955:748;;26989:13;27005:37;;;:29;;;:37;;;;;;;;:44;;;;;;;;;27103:25;27122:6;27103:16;:25;:::i;:::-;27057:29;;;;:21;;;:29;;;;;:36;;27087:5;;27057:36;;;;;;:::i;:::-;;;;;;;;;;;:43;;:71;;;;27191:12;27136:1;:21;;:29;27158:6;27136:29;;;;;;;;;;;27166:5;27136:36;;;;;;;;:::i;:::-;;;;;;;;;;;:52;;:67;;;;26981:229;26955:748;;;27260:29;;;;:21;;;:29;;;;;;;;27304:99;;;;;;;;;;;;;;;;;;;;;;27260:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27466:29;;;;;;;:36;;:40;;27260:151;27466:40;:::i;:::-;27419:37;;;;:29;;;:37;;;;;;;;:44;;;;;;;;:87;;;;27570:19;;;:26;;;;;:39;;;;;;;;;;;;;;;;;;27659:26;;;;:33;:37;;27570:39;27659:37;:::i;:::-;27617:31;;;;:24;;;:31;;;;;;;;:39;;;;;;;;:79;26955:748;26737:970;;;;;;:::o;14291:213:19:-;14347:6;14377:16;14369:24;;14365:103;;;14416:41;;-1:-1:-1;;;14416:41:19;;14447:2;14416:41;;;20417:36:46;20469:18;;;20462:34;;;20390:18;;14416:41:19;20236:266:46;14365:103:19;-1:-1:-1;14491:5:19;14291:213::o;9441:606:20:-;9559:24;;9526:7;;;9559:24;9658:1;9652:7;;9648:234;;;9675:11;9695:14;9705:3;9695:9;:14::i;:::-;9689:20;;:3;:20;:::i;:::-;14209:28;14272:20;;;14337:4;14324:18;;9675:34;;-1:-1:-1;14320:28:20;;9733:42;;;;;9727:48;;;;9723:149;;;9802:3;9795:10;;9723:149;;;9850:7;:3;9856:1;9850:7;:::i;:::-;9844:13;;9723:149;9661:221;9648:234;9892:11;9906:53;9925:4;9944:3;9949;9954:4;9906:18;:53::i;:::-;9892:67;-1:-1:-1;9977:8:20;;:63;;9992:41;10006:4;10025:7;10031:1;10025:3;:7;:::i;9992:41::-;:48;-1:-1:-1;;;9992:48:20;;-1:-1:-1;;;;;9992:48:20;9977:63;;;9988:1;9970:70;9441:606;-1:-1:-1;;;;;;;9441:606:20:o;4169:218:19:-;4226:7;-1:-1:-1;;;;;4249:25:19;;4245:105;;;4297:42;;-1:-1:-1;;;4297:42:19;;4328:3;4297:42;;;20417:36:46;20469:18;;;20462:34;;;20390:18;;4297:42:19;20236:266:46;8050:162:20;8132:7;;8167:38;8175:4;8194:3;8199:5;8167:7;:38::i;:::-;8160:45;;;;8050:162;;;;;;;:::o;39292:389:44:-;39423:7;39498:29;;;:21;;;:29;;;;;39423:7;;39557:97;39577:19;;39573:23;;39557:97;;;39625:12;39638:1;39625:15;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;39611:36;;;;;:::i;:::-;;-1:-1:-1;39598:3:44;;;;:::i;:::-;;;;39557:97;;8587:1642:18;8635:7;8658:1;8663;8658:6;8654:45;;-1:-1:-1;8687:1:18;;8587:1642;-1:-1:-1;8587:1642:18:o;8654:45::-;9378:14;9412:1;9401:7;9406:1;9401:4;:7::i;:::-;:12;;9395:1;:19;;9378:36;;9873:1;9862:6;9858:1;:10;;;;;:::i;:::-;;9849:6;:19;9848:26;;9839:35;;9922:1;9911:6;9907:1;:10;;;;;:::i;:::-;;9898:6;:19;9897:26;;9888:35;;9971:1;9960:6;9956:1;:10;;;;;:::i;:::-;;9947:6;:19;9946:26;;9937:35;;10020:1;10009:6;10005:1;:10;;;;;:::i;:::-;;9996:6;:19;9995:26;;9986:35;;10069:1;10058:6;10054:1;:10;;;;;:::i;:::-;;10045:6;:19;10044:26;;10035:35;;10118:1;10107:6;10103:1;:10;;;;;:::i;:::-;;10094:6;:19;10093:26;;10084:35;;10167:1;10156:6;10152:1;:10;;;;;:::i;:::-;;10143:6;:19;10142:26;;10133:35;;10189:23;10193:6;10205;10201:1;:10;;;;;:::i;:::-;;10189:3;:23::i;12736:433:20:-;12893:7;12912:230;12925:4;12919:3;:10;12912:230;;;12945:11;12959:23;12972:3;12977:4;12959:12;:23::i;:::-;14209:28;14272:20;;;14337:4;14324:18;;12945:37;;-1:-1:-1;13000:35:20;;;;14320:28;;13000:29;;;:35;12996:136;;;13062:3;13055:10;;12996:136;;;13110:7;:3;13116:1;13110:7;:::i;:::-;13104:13;;12996:136;12931:211;12912:230;;;-1:-1:-1;13158:4:20;12736:433;;;;;;;:::o;11513:870::-;11646:11;;11604:7;;;;11672;;11668:709;;11747:25;11775:28;11789:4;11795:7;11801:1;11795:3;:7;:::i;11775:28::-;11747:56;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11747:56:20;;;-1:-1:-1;;;;;11747:56:20;;;;;;;-1:-1:-1;11877:15:20;;;-1:-1:-1;11873:91:20;;;11919:30;;-1:-1:-1;;;11919:30:20;;;;;;;;;;;11873:91;12027:9;;:16;;;;;;;12023:189;;12101:5;12063:28;12077:4;12083:7;12089:1;12083:3;:7;:::i;12063:28::-;:43;;-1:-1:-1;;;;;12063:43:20;;;;-1:-1:-1;;;12063:43:20;;;;;;;;;;;12023:189;;;12155:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;12155:41:20;;;;;;;;;;12145:52;;;;;;;-1:-1:-1;12145:52:20;;;;;;;;;;;;;;-1:-1:-1;;;12145:52:20;;;;;;;;;;12023:189;12233:11;;;;-1:-1:-1;12246:5:20;;-1:-1:-1;12225:27:20;;-1:-1:-1;12225:27:20;11668:709;-1:-1:-1;;12293:41:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;12293:41:20;;;;;;;;;;12283:52;;;;;;;-1:-1:-1;12283:52:20;;;;;;;;;;;;;-1:-1:-1;;;12283:52:20;;;;;;;;;;;;-1:-1:-1;;12327:5:20;12349:17;;10699:983:18;10751:7;;10835:3;10826:12;;;:16;10822:99;;10872:3;10862:13;;;;10893;10822:99;10947:2;10938:11;;;:15;10934:96;;10983:2;10973:12;;;;11003;10934:96;11056:2;11047:11;;;:15;11043:96;;11092:2;11082:12;;;;11112;11043:96;11165:2;11156:11;;;:15;11152:96;;11201:2;11191:12;;;;11221;11152:96;11274:1;11265:10;;;:14;11261:93;;11309:1;11299:11;;;;11328;11261:93;11380:1;11371:10;;;:14;11367:93;;11415:1;11405:11;;;;11434;11367:93;11486:1;11477:10;;;:14;11473:93;;11521:1;11511:11;;;;11540;11473:93;11592:1;11583:10;;;:14;11579:64;;11627:1;11617:11;11669:6;10699:983;-1:-1:-1;;10699:983:18:o;2557:104::-;2615:7;2645:1;2641;:5;:13;;2653:1;2641:13;;;-1:-1:-1;2649:1:18;;2634:20;-1:-1:-1;2557:104:18:o;2774:153::-;2836:7;2909:11;2919:1;2910:5;;;2909:11;:::i;:::-;2899:21;;2900:5;;;2899:21;:::i;204:180:46:-;263:6;316:2;304:9;295:7;291:23;287:32;284:52;;;332:1;329;322:12;284:52;-1:-1:-1;355:23:46;;204:180;-1:-1:-1;204:180:46:o;389:118::-;475:5;468:13;461:21;454:5;451:32;441:60;;497:1;494;487:12;441:60;389:118;:::o;512:309::-;577:6;585;638:2;626:9;617:7;613:23;609:32;606:52;;;654:1;651;644:12;606:52;690:9;677:23;667:33;;750:2;739:9;735:18;722:32;763:28;785:5;763:28;:::i;:::-;810:5;800:15;;;512:309;;;;;:::o;1122:206::-;1220:6;1273:3;1261:9;1252:7;1248:23;1244:33;1241:53;;;1290:1;1287;1280:12;1241:53;-1:-1:-1;1313:9:46;1122:206;-1:-1:-1;1122:206:46:o;1703:861::-;1942:2;1994:21;;;2064:13;;1967:18;;;2086:22;;;1913:4;;1942:2;2127;;2145:18;;;;2186:15;;;1913:4;2229:309;2243:6;2240:1;2237:13;2229:309;;;2302:13;;2340:9;;2328:22;;2390:11;;;2384:18;2370:12;;;2363:40;2443:11;;2437:18;2423:12;;;2416:40;2485:4;2476:14;;;;2513:15;;;;2265:1;2258:9;2229:309;;;-1:-1:-1;2555:3:46;;1703:861;-1:-1:-1;;;;;;;1703:861:46:o;2569:666::-;2748:2;2800:21;;;2870:13;;2773:18;;;2892:22;;;2719:4;;2748:2;2971:15;;;;2945:2;2930:18;;;2719:4;3014:195;3028:6;3025:1;3022:13;3014:195;;;3093:13;;-1:-1:-1;;;;;3089:39:46;3077:52;;3184:15;;;;3149:12;;;;3125:1;3043:9;3014:195;;;-1:-1:-1;3226:3:46;;2569:666;-1:-1:-1;;;;;;2569:666:46:o;3240:241::-;3296:6;3349:2;3337:9;3328:7;3324:23;3320:32;3317:52;;;3365:1;3362;3355:12;3317:52;3404:9;3391:23;3423:28;3445:5;3423:28;:::i;3486:125::-;3571:14;3564:5;3560:26;3553:5;3550:37;3540:65;;3601:1;3598;3591:12;3616:722;3713:6;3721;3729;3737;3745;3753;3806:3;3794:9;3785:7;3781:23;3777:33;3774:53;;;3823:1;3820;3813:12;3774:53;3859:9;3846:23;3836:33;;3916:2;3905:9;3901:18;3888:32;3878:42;;3967:2;3956:9;3952:18;3939:32;3929:42;;4021:2;4010:9;4006:18;3993:32;4034:28;4056:5;4034:28;:::i;:::-;4081:5;-1:-1:-1;4138:3:46;4123:19;;4110:33;4152:30;4110:33;4152:30;:::i;:::-;4201:7;-1:-1:-1;4260:3:46;4245:19;;4232:33;4274:32;4232:33;4274:32;:::i;:::-;4325:7;4315:17;;;3616:722;;;;;;;;:::o;4343:640::-;4522:2;4574:21;;;4644:13;;4547:18;;;4666:22;;;4493:4;;4522:2;4745:15;;;;4719:2;4704:18;;;4493:4;4788:169;4802:6;4799:1;4796:13;4788:169;;;4863:13;;4851:26;;4932:15;;;;4897:12;;;;4824:1;4817:9;4788:169;;5441:313;5508:6;5516;5569:2;5557:9;5548:7;5544:23;5540:32;5537:52;;;5585:1;5582;5575:12;5537:52;5621:9;5608:23;5598:33;;5681:2;5670:9;5666:18;5653:32;5694:30;5718:5;5694:30;:::i;5759:248::-;5827:6;5835;5888:2;5876:9;5867:7;5863:23;5859:32;5856:52;;;5904:1;5901;5894:12;5856:52;-1:-1:-1;;5927:23:46;;;5997:2;5982:18;;;5969:32;;-1:-1:-1;5759:248:46:o;6012:718::-;6107:6;6115;6123;6131;6139;6147;6200:3;6188:9;6179:7;6175:23;6171:33;6168:53;;;6217:1;6214;6207:12;6168:53;6253:9;6240:23;6230:33;;6310:2;6299:9;6295:18;6282:32;6272:42;;6361:2;6350:9;6346:18;6333:32;6323:42;;6415:2;6404:9;6400:18;6387:32;6428:28;6450:5;6428:28;:::i;:::-;6475:5;-1:-1:-1;6532:3:46;6517:19;;6504:33;6546:30;6504:33;6546:30;:::i;:::-;6595:7;-1:-1:-1;6654:3:46;6639:19;;6626:33;6668:30;6626:33;6668:30;:::i;6988:245::-;7046:6;7099:2;7087:9;7078:7;7074:23;7070:32;7067:52;;;7115:1;7112;7105:12;7067:52;7154:9;7141:23;7173:30;7197:5;7173:30;:::i;7238:114::-;7322:4;7315:5;7311:16;7304:5;7301:27;7291:55;;7342:1;7339;7332:12;7357:243;7414:6;7467:2;7455:9;7446:7;7442:23;7438:32;7435:52;;;7483:1;7480;7473:12;7435:52;7522:9;7509:23;7541:29;7564:5;7541:29;:::i;7605:131::-;-1:-1:-1;;;;;7680:31:46;;7670:42;;7660:70;;7726:1;7723;7716:12;7741:247;7800:6;7853:2;7841:9;7832:7;7828:23;7824:32;7821:52;;;7869:1;7866;7859:12;7821:52;7908:9;7895:23;7927:31;7952:5;7927:31;:::i;8638:653::-;8726:6;8734;8742;8750;8758;8811:3;8799:9;8790:7;8786:23;8782:33;8779:53;;;8828:1;8825;8818:12;8779:53;8864:9;8851:23;8841:33;;8921:2;8910:9;8906:18;8893:32;8883:42;;8975:2;8964:9;8960:18;8947:32;8988:28;9010:5;8988:28;:::i;:::-;9035:5;-1:-1:-1;9092:2:46;9077:18;;9064:32;9105:30;9064:32;9105:30;:::i;:::-;9154:7;-1:-1:-1;9213:3:46;9198:19;;9185:33;9227:32;9185:33;9227:32;:::i;:::-;9278:7;9268:17;;;8638:653;;;;;;;;:::o;9296:316::-;9373:6;9381;9389;9442:2;9430:9;9421:7;9417:23;9413:32;9410:52;;;9458:1;9455;9448:12;9410:52;-1:-1:-1;;9481:23:46;;;9551:2;9536:18;;9523:32;;-1:-1:-1;9602:2:46;9587:18;;;9574:32;;9296:316;-1:-1:-1;9296:316:46:o;10674:247::-;10742:6;10795:2;10783:9;10774:7;10770:23;10766:32;10763:52;;;10811:1;10808;10801:12;10763:52;10843:9;10837:16;10862:29;10885:5;10862:29;:::i;10926:127::-;10987:10;10982:3;10978:20;10975:1;10968:31;11018:4;11015:1;11008:15;11042:4;11039:1;11032:15;11058:127;11119:10;11114:3;11110:20;11107:1;11100:31;11150:4;11147:1;11140:15;11174:4;11171:1;11164:15;11190:245;11257:6;11310:2;11298:9;11289:7;11285:23;11281:32;11278:52;;;11326:1;11323;11316:12;11278:52;11358:9;11352:16;11377:28;11399:5;11377:28;:::i;11440:251::-;11510:6;11563:2;11551:9;11542:7;11538:23;11534:32;11531:52;;;11579:1;11576;11569:12;11531:52;11611:9;11605:16;11630:31;11655:5;11630:31;:::i;11696:127::-;11757:10;11752:3;11748:20;11745:1;11738:31;11788:4;11785:1;11778:15;11812:4;11809:1;11802:15;11828:135;11867:3;11888:17;;;11885:43;;11908:18;;:::i;:::-;-1:-1:-1;11955:1:46;11944:13;;11828:135::o;11968:248::-;12142:25;;;12198:2;12183:18;;12176:34;12130:2;12115:18;;11968:248::o;12221:274::-;-1:-1:-1;;;;;12413:32:46;;;;12395:51;;12477:2;12462:18;;12455:34;12383:2;12368:18;;12221:274::o;12500:125::-;12565:9;;;12586:10;;;12583:36;;;12599:18;;:::i;12630:184::-;12700:6;12753:2;12741:9;12732:7;12728:23;12724:32;12721:52;;;12769:1;12766;12759:12;12721:52;-1:-1:-1;12792:16:46;;12630:184;-1:-1:-1;12630:184:46:o;13072:128::-;13139:9;;;13160:11;;;13157:37;;;13174:18;;:::i;13397:297::-;13579:14;13620:15;;;13602:34;;13672:15;;13667:2;13652:18;;13645:43;13557:2;13542:18;;13397:297::o;13907:253::-;13979:2;13973:9;14021:4;14009:17;;-1:-1:-1;;;;;14041:34:46;;14077:22;;;14038:62;14035:88;;;14103:18;;:::i;:::-;14139:2;14132:22;13907:253;:::o;14165:275::-;14236:2;14230:9;14301:2;14282:13;;-1:-1:-1;;14278:27:46;14266:40;;-1:-1:-1;;;;;14321:34:46;;14357:22;;;14318:62;14315:88;;;14383:18;;:::i;:::-;14419:2;14412:22;14165:275;;-1:-1:-1;14165:275:46:o;14445:1818::-;14564:6;14595:2;14638;14626:9;14617:7;14613:23;14609:32;14606:52;;;14654:1;14651;14644:12;14606:52;14681:16;;-1:-1:-1;;;;;14746:14:46;;;14743:34;;;14773:1;14770;14763:12;14743:34;14811:6;14800:9;14796:22;14786:32;;14856:7;14849:4;14845:2;14841:13;14837:27;14827:55;;14878:1;14875;14868:12;14827:55;14907:2;14901:9;14929:2;14925;14922:10;14919:36;;;14935:18;;:::i;:::-;14975:36;15007:2;15002;14999:1;14995:10;14991:19;14975:36;:::i;:::-;15045:15;;;15107:4;15146:11;;;15138:20;;15134:29;;;15076:12;;;;15033:3;15175:19;;;15172:39;;;15207:1;15204;15197:12;15172:39;15231:11;;;;15251:982;15267:6;15262:3;15259:15;15251:982;;;15347:2;15341:3;15332:7;15328:17;15324:26;15321:116;;;15391:1;15420:2;15416;15409:14;15321:116;15463:22;;:::i;:::-;15518:3;15512:10;15505:5;15498:25;15566:2;15561:3;15557:12;15551:19;15583:31;15606:7;15583:31;:::i;:::-;15634:14;;;15627:31;15681:2;15717:12;;;15711:19;15765:16;;;15753:29;;15743:127;;15824:1;15853:2;15849;15842:14;15743:127;15890:14;;;15883:31;15937:2;15981:12;;;15975:19;15959:14;;;15952:43;16019:3;16056:13;;;16050:20;16083:32;16050:20;16083:32;:::i;:::-;16135:15;;;16128:32;16173:18;;15284:12;;;;16211;;;;15251:982;;;-1:-1:-1;16252:5:46;14445:1818;-1:-1:-1;;;;;;;;14445:1818:46:o;16268:127::-;16329:10;16324:3;16320:20;16317:1;16310:31;16360:4;16357:1;16350:15;16384:4;16381:1;16374:15;16400:176;16467:14;16501:10;;;16513;;;16497:27;;16536:11;;;16533:37;;;16550:18;;:::i;:::-;16533:37;16400:176;;;;:::o;16881:278::-;16969:6;17022:2;17010:9;17001:7;16997:23;16993:32;16990:52;;;17038:1;17035;17028:12;16990:52;17070:9;17064:16;17109:1;17102:5;17099:12;17089:40;;17125:1;17122;17115:12;17164:127;17225:10;17220:3;17216:20;17213:1;17206:31;17256:4;17253:1;17246:15;17280:4;17277:1;17270:15;17296:417;17486:25;;;17474:2;17459:18;;17541:1;17530:13;;17520:144;;17586:10;17581:3;17577:20;17574:1;17567:31;17621:4;17618:1;17611:15;17649:4;17646:1;17639:15;17520:144;17700:6;17695:2;17684:9;17680:18;17673:34;17296:417;;;;;:::o;17844:1415::-;18069:1;18065;18060:3;18056:11;18052:19;18044:6;18040:32;18029:9;18022:51;18003:4;18092:2;18130;18125;18114:9;18110:18;18103:30;18153:1;18186:6;18180:13;18216:3;18238:1;18266:9;18262:2;18258:18;18248:28;;18326:2;18315:9;18311:18;18348;18338:61;;18392:4;18384:6;18380:17;18370:27;;18338:61;18445:2;18437:6;18434:14;18414:18;18411:38;18408:165;;-1:-1:-1;;;18472:33:46;;18528:4;18525:1;18518:15;18558:4;18479:3;18546:17;18408:165;18674:2;18659:18;;1635:19;;;1678:14;;;18702:18;18729:128;;;;18871:1;18866:315;;;;18695:486;;18729:128;-1:-1:-1;;18762:24:46;;18750:37;;18830:14;;18823:22;18820:1;18816:30;18807:40;;;-1:-1:-1;18729:128:46;;18866:315;17791:1;17784:14;;;17828:4;17815:18;;18961:1;18975:165;18989:6;18986:1;18983:13;18975:165;;;19067:14;;19054:11;;;19047:35;19110:16;;;;19004:10;;18975:165;;;19160:11;;;-1:-1:-1;;18695:486:46;-1:-1:-1;;;;896:13:46;;889:21;19249:2;19234:18;;877:34;-1:-1:-1;19198:3:46;;-1:-1:-1;19210:43:46;;-1:-1:-1;;826:91:46;19264:319;19466:25;;;19522:2;19507:18;;19500:34;;;;19565:2;19550:18;;19543:34;19454:2;19439:18;;19264:319::o;20779:127::-;20840:10;20835:3;20831:20;20828:1;20821:31;20871:4;20868:1;20861:15;20895:4;20892:1;20885:15;20911:217;20951:1;20977;20967:132;;21021:10;21016:3;21012:20;21009:1;21002:31;21056:4;21053:1;21046:15;21084:4;21081:1;21074:15;20967:132;-1:-1:-1;21113:9:46;;20911:217::o"},"methodIdentifiers":{"canUnendorse(uint256,bytes32)":"ccd4baca","checkEndorsement(bytes32,uint48)":"6e054773","cooldownPeriod()":"04646a49","endorseApp(bytes32,uint256,uint256,bool,bool,bool)":"9a116641","endorsementScoreThreshold()":"f1a962ac","endorsementsPaused()":"b90a30ea","getEndorserNodes(bytes32)":"5cfdd470","getEndorsers(bytes32)":"44bb58f7","getNodeActiveEndorsements(uint256)":"44532be2","getNodeAvailablePoints(uint256)":"e9f9739d","getNodeEndorsementScore(uint256)":"42c89f52","getNodePointsForApp(uint256,bytes32)":"72584102","getNodePointsInfo(uint256)":"5dd3a4f1","getNodeUsedPoints(uint256)":"d76c3973","getScore(bytes32)":"7ba53285","getScoreAtTimepoint(bytes32,uint256)":"9ab17c9b","getUsersEndorsementScore(address)":"c996c624","gracePeriod()":"a06db7dc","isAppUnendorsed(bytes32,bool)":"1e13ed7a","maxPointsPerApp()":"5cbc2ffb","maxPointsPerNodePerApp()":"4a0c4a42","migrationCompleted()":"31677980","nodeLevelEndorsementScore(uint8)":"acdb9f05","removeNodeEndorsement(bytes32,uint256,bool,bool,uint48)":"e8786a58","removeXAppSubmission(bytes32)":"0ab12e14","seedEndorsement(bytes32,uint256,uint256)":"ee9419cf","setCooldownPeriod(uint256)":"80ea3de1","setEndorsementStatus(bytes32,bool)":"9fcb2b41","setEndorsementsPaused(bool)":"fcd190c4","setGracePeriod(uint48)":"a11bd9fb","setMaxPointsPerApp(uint256)":"51d2a6e3","setMaxPointsPerNodePerApp(uint256)":"6fb44f5f","setMigrationCompleted(bool)":"47e5dcbc","unendorseApp(bytes32,uint256,uint256,bool,bool,uint48)":"4fd4e1b8","unendorsedAppIds()":"d6418b8a","updateEndorsementScoreThreshold(uint256)":"4f77fe12","updateNodeEndorsementScores(EndorsementUtils.NodeStrengthScores)":"38114221","updateUnendorsedApps(bytes32,bool)":"fcaf9a76"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"CooldownNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EndorsementsPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"current\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxPointsPerApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxPointsPerNode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentBlock\",\"type\":\"uint256\"}],\"name\":\"FutureLookup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientAvailablePoints\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"InvalidEndorsementIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPointsAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxPoints\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"name\":\"MaxPointsPerAppBelowThreshold\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationAlreadyCompleted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"NodeManagementXAppAlreadyIncluded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NodeNotAllowedToEndorse\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPointsPerApp\",\"type\":\"uint256\"}],\"name\":\"ThresholdExceedsMaxPointsPerApp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnAppAlreadyEndorsed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnAppBlacklisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"X2EarnInvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"X2EarnNonEndorser\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"X2EarnNonNodeHolder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"X2EarnNonexistentApp\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"appAvailableForAllocationVoting\",\"type\":\"bool\"}],\"name\":\"AppAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"endorser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"name\":\"AppEndorsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"endorsed\",\"type\":\"bool\"}],\"name\":\"AppEndorsementStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"name\":\"AppUnendorsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"startBlock\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"endBlock\",\"type\":\"uint48\"}],\"name\":\"AppUnendorsedGracePeriodStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldCooldownPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCooldownPeriod\",\"type\":\"uint256\"}],\"name\":\"CooldownPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldThreshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"EndorsementScoreThresholdUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"EndorsementsPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldGracePeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newGracePeriod\",\"type\":\"uint256\"}],\"name\":\"GracePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMax\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMax\",\"type\":\"uint256\"}],\"name\":\"MaxPointsPerAppUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMax\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMax\",\"type\":\"uint256\"}],\"name\":\"MaxPointsPerNodePerAppUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"strength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thunder\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mjolnir\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"veThorX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"strengthX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"thunderX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mjolnirX\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct EndorsementUtils.NodeStrengthScores\",\"name\":\"nodeStrengthScores\",\"type\":\"tuple\"}],\"name\":\"NodeStrengthScoresUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"canUnendorse\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cooldownPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endorsementScoreThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endorsementsPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"getEndorserNodes\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"getEndorsers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeActiveEndorsements\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endorsedAtRound\",\"type\":\"uint256\"}],\"internalType\":\"struct X2EarnAppsStorageTypes.Endorsement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeAvailablePoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeEndorsementScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"getNodePointsForApp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodePointsInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalPoints\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usedPoints\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availablePoints\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockedPoints\",\"type\":\"uint256\"}],\"internalType\":\"struct X2EarnAppsStorageTypes.NodePointsInfo\",\"name\":\"info\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"getNodeUsedPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"}],\"name\":\"getScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getScoreAtTimepoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUsersEndorsementScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gracePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"appId\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isBlacklisted\",\"type\":\"bool\"}],\"name\":\"isAppUnendorsed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPointsPerApp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPointsPerNodePerApp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrationCompleted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nodeLevel\",\"type\":\"uint8\"}],\"name\":\"nodeLevelEndorsementScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unendorsedAppIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utility library for handling endorsements of applications in a voting context.\",\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{\"canUnendorse(uint256,bytes32)\":{\"details\":\"Returns false if node doesn't endorse the app or if cooldown hasn't expired.      Cooldown is measured in rounds (VeBetterDAO allocation rounds).\",\"params\":{\"appId\":\"The unique identifier of the app.\",\"nodeId\":\"The unique identifier of the node.\"},\"returns\":{\"_0\":\"True if the node can unendorse the app, false otherwise.\"}},\"checkEndorsement(bytes32,uint48)\":{\"details\":\"Removes endorsements from burned/invalid nodes and updates eligibility status.      Triggers grace period if score drops below threshold.\",\"params\":{\"appId\":\"The unique identifier of the app to check.\",\"clock\":\"The current block timestamp for grace period calculations.\"},\"returns\":{\"_0\":\"True if the app is still eligible after validation, false otherwise.\"}},\"cooldownPeriod()\":{\"details\":\"Cooldown prevents immediate un-endorsement after endorsing an app.\",\"returns\":{\"_0\":\"The cooldown period duration in rounds.\"}},\"endorseApp(bytes32,uint256,uint256,bool,bool,bool)\":{\"details\":\"Validates all constraints (paused, caps, node ownership) before creating endorsement.      If node already endorses this app, adds points and resets cooldown.      Cooldown is tracked per-app using the current round ID.\",\"params\":{\"appExists\":\"Whether the app has been fully created (not just submitted).\",\"appId\":\"The unique identifier of the app to endorse.\",\"isBlacklisted\":\"Whether the app is currently blacklisted.\",\"isEligibleNow\":\"Whether the app is currently eligible for voting.\",\"nodeId\":\"The unique identifier of the endorsing node.\",\"points\":\"The number of points to endorse with.\"}},\"endorsementScoreThreshold()\":{\"returns\":{\"_0\":\"The endorsement score threshold (default 100).\"}},\"endorsementsPaused()\":{\"returns\":{\"_0\":\"True if endorsements are paused, false otherwise.\"}},\"getEndorserNodes(bytes32)\":{\"params\":{\"appId\":\"The unique identifier of the app.\"},\"returns\":{\"_0\":\"Array of node IDs endorsing this app.\"}},\"getEndorsers(bytes32)\":{\"details\":\"Filters out burned nodes and returns only valid manager addresses.\",\"params\":{\"appId\":\"The unique identifier of the app.\"},\"returns\":{\"_0\":\"Array of addresses managing nodes that endorse this app.\"}},\"getNodeActiveEndorsements(uint256)\":{\"details\":\"Each endorsement contains appId, points, and endorsedAtRound for cooldown tracking.\",\"params\":{\"nodeId\":\"The unique identifier of the node.\"},\"returns\":{\"_0\":\"Array of Endorsement structs representing all apps the node endorses.\"}},\"getNodeAvailablePoints(uint256)\":{\"details\":\"Calculated as: totalPoints (based on node level) - usedPoints (sum of all endorsements).\",\"params\":{\"nodeId\":\"The unique identifier of the node.\"},\"returns\":{\"_0\":\"Available points the node can use for new endorsements.\"}},\"getNodeEndorsementScore(uint256)\":{\"params\":{\"nodeId\":\"The unique identifier of the node.\"},\"returns\":{\"_0\":\"The endorsement score the node has based on its strength level.\"}},\"getNodePointsForApp(uint256,bytes32)\":{\"params\":{\"appId\":\"The unique identifier of the app.\",\"nodeId\":\"The unique identifier of the node.\"},\"returns\":{\"_0\":\"The number of points the node has endorsed to this app.\"}},\"getNodePointsInfo(uint256)\":{\"details\":\"Calculates total, used, available, and locked (under cooldown) points in a single call.\",\"params\":{\"nodeId\":\"The unique identifier of the node.\"},\"returns\":{\"info\":\"Struct containing totalPoints, usedPoints, availablePoints, and lockedPoints.\"}},\"getNodeUsedPoints(uint256)\":{\"params\":{\"nodeId\":\"The unique identifier of the node.\"},\"returns\":{\"_0\":\"Total points the node has allocated to apps.\"}},\"getScore(bytes32)\":{\"params\":{\"appId\":\"The unique identifier of the app.\"},\"returns\":{\"_0\":\"The total endorsement points the app has received.\"}},\"getScoreAtTimepoint(bytes32,uint256)\":{\"params\":{\"appId\":\"The unique identifier of the app.\",\"timepoint\":\"The block number to query.\"},\"returns\":{\"_0\":\"The endorsement score at the given timepoint.\"}},\"getUsersEndorsementScore(address)\":{\"params\":{\"user\":\"The address of the user.\"},\"returns\":{\"_0\":\"Total endorsement points across all nodes the user manages.\"}},\"gracePeriod()\":{\"details\":\"Grace period is the time an app has to regain endorsement after losing eligibility.\",\"returns\":{\"_0\":\"The grace period duration in blocks.\"}},\"isAppUnendorsed(bytes32,bool)\":{\"params\":{\"appId\":\"The unique identifier of the app.\",\"isBlacklisted\":\"Whether the app is blacklisted.\"},\"returns\":{\"_0\":\"True if the app is pending endorsement, false otherwise.\"}},\"maxPointsPerApp()\":{\"returns\":{\"_0\":\"The max points per app (default 110).\"}},\"maxPointsPerNodePerApp()\":{\"returns\":{\"_0\":\"The max points per node per app (default 49).\"}},\"migrationCompleted()\":{\"returns\":{\"_0\":\"True if migration is complete, false otherwise.\"}},\"nodeLevelEndorsementScore(uint8)\":{\"params\":{\"nodeLevel\":\"The strength level (1-7 corresponding to different node types).\"},\"returns\":{\"_0\":\"The endorsement score assigned to that node level.\"}},\"removeNodeEndorsement(bytes32,uint256,bool,bool,uint48)\":{\"details\":\"Unlike unendorseApp, this bypasses cooldown check. Used by app admins to remove endorsers.\",\"params\":{\"appId\":\"The unique identifier of the app.\",\"clock\":\"The current block timestamp for grace period calculations.\",\"isBlacklisted\":\"Whether the app is currently blacklisted.\",\"isEligibleNow\":\"Whether the app is currently eligible for voting.\",\"nodeId\":\"The unique identifier of the node to remove.\"},\"returns\":{\"stillEligible\":\"Whether the app remains eligible after removal.\"}},\"removeXAppSubmission(bytes32)\":{\"details\":\"Can only be called on apps that were submitted but not yet created (createdAtTimestamp == 0).\",\"params\":{\"appId\":\"The unique identifier of the app to remove.\"}},\"setCooldownPeriod(uint256)\":{\"details\":\"Cooldown prevents immediate un-endorsement after endorsing an app.\",\"params\":{\"cooldownPeriodDuration\":\"The new cooldown period in rounds.\"}},\"setEndorsementStatus(bytes32,bool)\":{\"params\":{\"appId\":\"The unique identifier of the app.\",\"endorsed\":\"If true, removes from pending list; if false, adds to pending list.\"}},\"setEndorsementsPaused(bool)\":{\"details\":\"Used during migration to prevent state changes while data is being seeded.\",\"params\":{\"paused\":\"If true, pauses endorsements; if false, unpauses.\"}},\"setGracePeriod(uint48)\":{\"details\":\"Grace period is the time an app has to regain endorsement after losing eligibility.\",\"params\":{\"gracePeriodDuration\":\"The new grace period in blocks.\"}},\"setMaxPointsPerApp(uint256)\":{\"details\":\"Provides a buffer above the threshold to prevent over-endorsement.      Reverts if maxPoints < endorsementScoreThreshold (would make threshold unreachable).\",\"params\":{\"maxPoints\":\"The new max points per app (default 110).\"}},\"setMaxPointsPerNodePerApp(uint256)\":{\"details\":\"Enforces decentralization by preventing one node from dominating an app's endorsement.\",\"params\":{\"maxPoints\":\"The new max points per node per app (default 49).\"}},\"setMigrationCompleted(bool)\":{\"details\":\"Once complete, seedEndorsement() can no longer be called.\",\"params\":{\"completed\":\"If true, marks migration as complete.\"}},\"unendorseApp(bytes32,uint256,uint256,bool,bool,uint48)\":{\"details\":\"Requires cooldown to have expired. If points=0, removes entire endorsement.\",\"params\":{\"appId\":\"The unique identifier of the app to unendorse.\",\"clock\":\"The current block timestamp for grace period calculations.\",\"isBlacklisted\":\"Whether the app is currently blacklisted.\",\"isEligibleNow\":\"Whether the app is currently eligible for voting.\",\"nodeId\":\"The unique identifier of the endorsing node.\",\"points\":\"The number of points to remove (0 = remove all).\"},\"returns\":{\"stillEligible\":\"Whether the app remains eligible after this un-endorsement.\"}},\"unendorsedAppIds()\":{\"returns\":{\"_0\":\"Array of app IDs waiting to reach the endorsement threshold.\"}},\"updateEndorsementScoreThreshold(uint256)\":{\"details\":\"Reverts if scoreThreshold > maxPointsPerApp (would make threshold unreachable).\",\"params\":{\"scoreThreshold\":\"The new endorsement score threshold.\"}},\"updateNodeEndorsementScores(EndorsementUtils.NodeStrengthScores)\":{\"details\":\"Called by governance to adjust how many endorsement points each node type provides.\",\"params\":{\"nodeStrengthScores\":\"Struct containing scores for all 7 node levels.\"}},\"updateUnendorsedApps(bytes32,bool)\":{\"details\":\"Apps in this list have been submitted but haven't reached the endorsement threshold yet.      Uses swap-and-pop pattern for O(1) removal.\",\"params\":{\"appId\":\"The unique identifier of the app.\",\"remove\":\"If true, removes from list; if false, adds to list.\"}}},\"title\":\"EndorsementUtils\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canUnendorse(uint256,bytes32)\":{\"notice\":\"Checks if a node can unendorse a specific app (cooldown expired).\"},\"checkEndorsement(bytes32,uint48)\":{\"notice\":\"Validates an app's endorsement status and cleans up invalid endorsements.\"},\"cooldownPeriod()\":{\"notice\":\"Returns the cooldown period duration in rounds.\"},\"endorseApp(bytes32,uint256,uint256,bool,bool,bool)\":{\"notice\":\"Endorses an app with a specified number of points from a node.\"},\"endorsementScoreThreshold()\":{\"notice\":\"Returns the minimum endorsement score required for an app to be eligible.\"},\"endorsementsPaused()\":{\"notice\":\"Checks if endorsements are currently paused (during migration).\"},\"getEndorserNodes(bytes32)\":{\"notice\":\"Returns all node IDs that endorse an app.\"},\"getEndorsers(bytes32)\":{\"notice\":\"Returns all endorser addresses for an app.\"},\"getNodeActiveEndorsements(uint256)\":{\"notice\":\"Returns all active endorsements for a node.\"},\"getNodeAvailablePoints(uint256)\":{\"notice\":\"Returns the available points a node can still allocate to apps.\"},\"getNodeEndorsementScore(uint256)\":{\"notice\":\"Returns the endorsement score for a specific node based on its level.\"},\"getNodePointsForApp(uint256,bytes32)\":{\"notice\":\"Returns how many points a node has allocated to a specific app.\"},\"getNodePointsInfo(uint256)\":{\"notice\":\"Returns comprehensive info about a node's endorsement points.\"},\"getNodeUsedPoints(uint256)\":{\"notice\":\"Returns the total points a node has used across all endorsements.\"},\"getScore(bytes32)\":{\"notice\":\"Returns the current endorsement score for an app.\"},\"getScoreAtTimepoint(bytes32,uint256)\":{\"notice\":\"Returns the endorsement score for an app at a specific block number.\"},\"getUsersEndorsementScore(address)\":{\"notice\":\"Returns the total endorsement score a user has from all their managed nodes.\"},\"gracePeriod()\":{\"notice\":\"Returns the grace period duration in blocks.\"},\"isAppUnendorsed(bytes32,bool)\":{\"notice\":\"Checks if an app is in the unendorsed (pending endorsement) list.\"},\"maxPointsPerApp()\":{\"notice\":\"Returns the maximum total points an app can receive from all endorsers.\"},\"maxPointsPerNodePerApp()\":{\"notice\":\"Returns the maximum points a single node can assign to one app.\"},\"migrationCompleted()\":{\"notice\":\"Checks if the V8 migration has been completed.\"},\"nodeLevelEndorsementScore(uint8)\":{\"notice\":\"Returns the endorsement score for a specific node strength level.\"},\"removeNodeEndorsement(bytes32,uint256,bool,bool,uint48)\":{\"notice\":\"Removes a node's endorsement from an app (called by app admin).\"},\"removeXAppSubmission(bytes32)\":{\"notice\":\"Removes an app submission that hasn't been fully created yet.\"},\"setCooldownPeriod(uint256)\":{\"notice\":\"Sets the cooldown period duration.\"},\"setEndorsementStatus(bytes32,bool)\":{\"notice\":\"Sets the endorsement status of an app and updates pending list.\"},\"setEndorsementsPaused(bool)\":{\"notice\":\"Pauses or unpauses endorsement operations.\"},\"setGracePeriod(uint48)\":{\"notice\":\"Sets the grace period duration.\"},\"setMaxPointsPerApp(uint256)\":{\"notice\":\"Sets the maximum total points an app can receive from all endorsers.\"},\"setMaxPointsPerNodePerApp(uint256)\":{\"notice\":\"Sets the maximum points a single node can assign to one app.\"},\"setMigrationCompleted(bool)\":{\"notice\":\"Marks the V8 migration as complete or incomplete.\"},\"unendorseApp(bytes32,uint256,uint256,bool,bool,uint48)\":{\"notice\":\"Removes points from an endorsement (partial or full un-endorsement).\"},\"unendorsedAppIds()\":{\"notice\":\"Returns all app IDs that are currently pending endorsement.\"},\"updateEndorsementScoreThreshold(uint256)\":{\"notice\":\"Updates the minimum endorsement score required for app eligibility.\"},\"updateNodeEndorsementScores(EndorsementUtils.NodeStrengthScores)\":{\"notice\":\"Updates the endorsement scores for all node strength levels.\"},\"updateUnendorsedApps(bytes32,bool)\":{\"notice\":\"Adds or removes an app from the unendorsed apps list.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":\"EndorsementUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]},\"contracts/interfaces/IVeBetterPassport.sol\":{\"keccak256\":\"0x1094bcf1a7f61ad26e5d49a6efd7302419a1d2475fa0723f62f24757c7a1655c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a25e330da50daf45f56fe4c496da2ea6695fb4de491c112980deb385f0f3ac\",\"dweb:/ipfs/QmaPE4T6UR91WxnGkqGp85d6YB9UGQceGGtSTCres1Y2Ut\"]},\"contracts/interfaces/IX2EarnApps.sol\":{\"keccak256\":\"0xf476e628b4037c16d44c833c9f0f4db9a3abc48f60ad4654574bce31ca9c759c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8c183bbd394bb708a637dca7626f6beb7a78e5111674e3ccea6f98140580172\",\"dweb:/ipfs/Qmar8Za1an3ZGP6B5wcCZSmY6g6MKzPcGeVYetRhiPFm7e\"]},\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]},\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]},\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]},\"contracts/ve-better-passport/libraries/PassportTypes.sol\":{\"keccak256\":\"0x0250b067d550cd85bd77278c705bd8d28db1bce6829e084cbe65b74353483ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://176022bfb06a2c03efe880a13a97cea66e25e9b31fe164936b5845a57a299be8\",\"dweb:/ipfs/QmS2kQnhxdjkrnNGfFyBdtThpmvyT2B7tF1owW2vF2hmbz\"]},\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":{\"keccak256\":\"0x1830b8438f0b6b516cc22ebbfcc7cff9db478c9a2a44fedf5926e63bd77d5aa7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aad5b08dbb03f727b8b74b10d1d00e796ece111f3aa23ef48ad27f54dd3f7b58\",\"dweb:/ipfs/QmfZZoP44EZ3Ts81BgvRuG9AXuTAxCqCbFqHoKEspFsPSa\"]},\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":{\"keccak256\":\"0x8a44d64c1e998dad0d21b928c499b7b624623cb26a30df541c493641191f6091\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751749980251dd9cda3e77654fafa229dab8a9bc74992dee9e8b3adee9595b72\",\"dweb:/ipfs/QmSHViJSMCbr25KBPap8VB38SjrLojRTnC3JUDCvf3rRBB\"]}},\"version\":1}"}},"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol":{"X2EarnAppsStorageTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ed0056a2e475557b1c15ddd4f0826068ffd92136dc13c668c73591311fa4f77e64736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED STOP JUMP LOG2 0xE4 PUSH22 0x557B1C15DDD4F0826068FFD92136DC13C668C7359131 0x1F LOG4 0xF7 PUSH31 0x64736F6C634300081400330000000000000000000000000000000000000000 ","sourceMap":"2113:7242:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;2113:7242:45;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ed0056a2e475557b1c15ddd4f0826068ffd92136dc13c668c73591311fa4f77e64736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED STOP JUMP LOG2 0xE4 PUSH22 0x557B1C15DDD4F0826068FFD92136DC13C668C7359131 0x1F LOG4 0xF7 PUSH31 0x64736F6C634300081400330000000000000000000000000000000000000000 ","sourceMap":"2113:7242:45:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"X2EarnAppsStorageTypes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library defines the primary storage types used within the X2EarnApps contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":\"X2EarnAppsStorageTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"contracts/interfaces/IGalaxyMember.sol\":{\"keccak256\":\"0xe489429f10576e793b1e0a5a4689f21881a1ab6042c6f2c88072e6fbe429e8e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc958c17abf70712dc10bd76c7e775b6a3bc33807e931d2d18d9c92568e88aa\",\"dweb:/ipfs/QmbC9qQM18wMnYoP7hi9yCfgCvrsDcXL3YecQhs3LCxCuP\"]},\"contracts/interfaces/IVeBetterPassport.sol\":{\"keccak256\":\"0x1094bcf1a7f61ad26e5d49a6efd7302419a1d2475fa0723f62f24757c7a1655c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a25e330da50daf45f56fe4c496da2ea6695fb4de491c112980deb385f0f3ac\",\"dweb:/ipfs/QmaPE4T6UR91WxnGkqGp85d6YB9UGQceGGtSTCres1Y2Ut\"]},\"contracts/interfaces/IX2EarnApps.sol\":{\"keccak256\":\"0xf476e628b4037c16d44c833c9f0f4db9a3abc48f60ad4654574bce31ca9c759c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8c183bbd394bb708a637dca7626f6beb7a78e5111674e3ccea6f98140580172\",\"dweb:/ipfs/Qmar8Za1an3ZGP6B5wcCZSmY6g6MKzPcGeVYetRhiPFm7e\"]},\"contracts/interfaces/IX2EarnCreator.sol\":{\"keccak256\":\"0x51a689ba50aea8a5763c64ea92b586c8dcea37d28393e12c43b486bd81341de3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5407cde882870610a63d76f4649b6855c0feaeff820a7205cf937c3cca38c7d\",\"dweb:/ipfs/QmVSvwSFbdmJuabTMqxa8pew3JdEaBBJ9DnB2AX6DPbWzn\"]},\"contracts/interfaces/IX2EarnRewardsPool.sol\":{\"keccak256\":\"0x8dd75c40b24ca12b800ae6bf3020893b9de4aa78b0f147bea31121185270aa3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f32395327f8679cdc81d783f5012d7e0c790a90b1cb9875f99e3c497b21991e9\",\"dweb:/ipfs/QmUSDSLfThkQc9EzP7BMrtvpNB5yXoBXfxyzB5qbmtZUNp\"]},\"contracts/interfaces/IXAllocationVotingGovernor.sol\":{\"keccak256\":\"0xb208b691e47e33ca95b6464883184ca26717b241fafc2c97a95832a0cb1df3ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e8150d20b34ffbf70d081f8b703005a1d3300e60c71a61769814bcc4e808e99\",\"dweb:/ipfs/Qmd5U2UGWQQeGZqQB5WVWecYFzQZPBi2pSs7A5J91gMVDz\"]},\"contracts/libraries/X2EarnAppsDataTypes.sol\":{\"keccak256\":\"0xf2b326c455f820886a624686d12d1a1c458af0a905f58ae0dc4fc8ad3598cb83\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06b4a842acb992e9743fadb6875567ee3eff1c50c51b508f2a16211261fcc1b4\",\"dweb:/ipfs/QmaYUzADyBrxRL8VNR7M6ta2XmwHRHwdj1JLf1AXqNfhLz\"]},\"contracts/mocks/Stargate/NodeManagement/libraries/VechainNodesDataTypes.sol\":{\"keccak256\":\"0xe2022e26cd087b45ee6a97ac39d78a25a8479e10c06c61c6a3c9c9fcf780fd19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb402c7ea78316a437fbef0a0a3bdcb6373f48991b05ef42b0acf8ed4804b8b0\",\"dweb:/ipfs/QmRadwpW5AHdX2SRCasdEr1D7qkKrjCFLL29MyVdTk3JJT\"]},\"contracts/mocks/Stargate/StargateNFT/libraries/DataTypes.sol\":{\"keccak256\":\"0xa03ba4de6bbd1cf6bf56c27e096d7d428636147c7af5096a24c5370bcd8f21f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7b1d470b4acd662f3d52c35fc27172d4f5f72961e89deb001cb480fd4e3b5ee\",\"dweb:/ipfs/QmYpw3N736dCpsaFWtsnzXsgCxW6GJ2qy7LJqxpLMo2nN5\"]},\"contracts/mocks/Stargate/interfaces/INodeManagement/INodeManagementV3.sol\":{\"keccak256\":\"0x2717029b06b6ee90fd380596c042fd047dd591c6837e01809f41fdce71dec00c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ecd3456200bdce55ed1febf40741f26d2f9013f983051240d5efb85b1fb9c98\",\"dweb:/ipfs/QmTecy6Fh9EE5hmQ7vgYZe4DhgSKpZ2q4qb5QVHTPv1DT4\"]},\"contracts/mocks/Stargate/interfaces/IStargate.sol\":{\"keccak256\":\"0x92e4db5cbe74029dd494ffe6a66652fe7635ccb8a0a42f29a3ce36ec0fd9c63b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aba55cff2f49386fab4e9f6e1c53df766289eeca5bc6854873d3bfff96500576\",\"dweb:/ipfs/QmY9E6XKrsvpq158FLejepXMfWMBCgY8oGkbSWYYjk7gTp\"]},\"contracts/mocks/Stargate/interfaces/IStargateDelegation.sol\":{\"keccak256\":\"0x8252f55713fec862656458d6542b3373b736a2870e038d18c570e146c501cec6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79376379d3370c8352121aeeb4461f78596b0740404deeb8477a9737a3544e36\",\"dweb:/ipfs/QmVa6sJKdcaNbTx1LRTqtSpFikxwhVDUhLRifGBXs27WpS\"]},\"contracts/mocks/Stargate/interfaces/IStargateNFT.sol\":{\"keccak256\":\"0xa4a9c62c9585b6df270ae23d40756ea91fc51097068279c2c2d98a4126bd4c19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e30c85110ed8d15d97adf60af88a41b04af4a6336829513a0352f92a76b364f8\",\"dweb:/ipfs/QmTNMuAXZYn3VLPVLUGS6b3tT9G1xSBUEDnQEp25tS56ga\"]},\"contracts/mocks/Stargate/interfaces/ITokenAuction.sol\":{\"keccak256\":\"0x7ae5c9e20c723179346a5b25d3702a1a6ab2c86466a427a9d5e21532cb50940c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd863891f40244f3b1e0a6a52e785db628f4b93979440d08d0e65af7db12aceb\",\"dweb:/ipfs/QmSUexCJGxgmEajv4pjdFSb5ifEwXDGt3YWTEcq9jCE7jm\"]},\"contracts/ve-better-passport/libraries/PassportTypes.sol\":{\"keccak256\":\"0x0250b067d550cd85bd77278c705bd8d28db1bce6829e084cbe65b74353483ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://176022bfb06a2c03efe880a13a97cea66e25e9b31fe164936b5845a57a299be8\",\"dweb:/ipfs/QmS2kQnhxdjkrnNGfFyBdtThpmvyT2B7tF1owW2vF2hmbz\"]},\"contracts/x-2-earn-apps/libraries/EndorsementUtils.sol\":{\"keccak256\":\"0x1830b8438f0b6b516cc22ebbfcc7cff9db478c9a2a44fedf5926e63bd77d5aa7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aad5b08dbb03f727b8b74b10d1d00e796ece111f3aa23ef48ad27f54dd3f7b58\",\"dweb:/ipfs/QmfZZoP44EZ3Ts81BgvRuG9AXuTAxCqCbFqHoKEspFsPSa\"]},\"contracts/x-2-earn-apps/libraries/X2EarnAppsStorageTypes.sol\":{\"keccak256\":\"0x8a44d64c1e998dad0d21b928c499b7b624623cb26a30df541c493641191f6091\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751749980251dd9cda3e77654fafa229dab8a9bc74992dee9e8b3adee9595b72\",\"dweb:/ipfs/QmSHViJSMCbr25KBPap8VB38SjrLojRTnC3JUDCvf3rRBB\"]}},\"version\":1}"}}}}}